/* * Copyright 2015 Daniel Dittmar * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package dan.dit.whatsthat.util.flatworld.collision; import android.graphics.RectF; import java.util.Random; /** * Created by daniel on 31.05.15. */ public abstract class Hitbox { RectF mBoundingRect = new RectF(); public abstract RectF getBoundingRect(); public abstract boolean isInside(float x, float y); public abstract boolean checkRandomPointCollision(Hitbox other, Random rand, RectF pointInRect); public abstract void move(float deltaX, float deltaY); /** * Sets the topmost point of the hitbox. * @param top The topmost point. */ public abstract void setTop(float top); /** * Sets the leftmost point of the hitbox to the given value. * @param left The leftmost point of the hitbox. */ public abstract void setLeft(float left); public abstract void setRight(float right); public abstract void setBottom(float bottom); /** * Sets the center point of the hitbox to the given value. * @param centerX The center x value. * @param centerY The center y value. */ public abstract void setCenter(float centerX, float centerY); static float getRandomFloatInRange(float min, float max, Random random) { return min + random.nextFloat() * (max - min); } public abstract float getCenterX(); public abstract float getCenterY(); public abstract CollisionTester getCollisionTester(); public abstract int accept(CollisionTester collisionTester); }