created physics system and new Drawable interface

This commit is contained in:
nora 2020-12-12 14:34:15 +01:00
parent 6bc1f74016
commit 87ca37c9ca
19 changed files with 390 additions and 43 deletions

View file

@ -1,4 +1,4 @@
package core;
package core.math;
import core.math.Vector2D;
import org.junit.jupiter.api.Test;

View file

@ -0,0 +1,62 @@
package core.physics;
import core.math.Vector2D;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class RectHitBoxTest {
@Test
void constructorSimple(){
RectHitBox a = new RectHitBox(new Vector2D(1, 1), new Vector2D(1, 1));
assertEquals(a.getX1(), new Vector2D(1, 1));
assertEquals(a.getX2(), new Vector2D(2, 1));
assertEquals(a.getY1(), new Vector2D(1, 2));
assertEquals(a.getY2(), new Vector2D(2, 2));
}
@Test
void doCollideNoCross(){
RectHitBox a = new RectHitBox(new Vector2D(-1, 1), new Vector2D(1, 1));
RectHitBox b = new RectHitBox(new Vector2D(1, 1), new Vector2D(1, 1));
assertFalse(a.collidesWith(b));
}
@Test
void doCollideCornerTouch(){
RectHitBox a = new RectHitBox(new Vector2D(0, 0), new Vector2D(1, 1));
RectHitBox b = new RectHitBox(new Vector2D(1, 1), new Vector2D(1, 1));
assertFalse(a.collidesWith(b));
}
@Test
void doCollideCornerInside(){
RectHitBox a = new RectHitBox(new Vector2D(0, 0), new Vector2D(2, 2));
RectHitBox b = new RectHitBox(new Vector2D(1, 1), new Vector2D(2, 2));
assertTrue(a.collidesWith(b));
}
@Test
void doCollideEdgeInside(){
RectHitBox a = new RectHitBox(new Vector2D(-2, 0), new Vector2D(4, 2));
RectHitBox b = new RectHitBox(new Vector2D(-1, 1), new Vector2D(2, 2));
assertTrue(a.collidesWith(b));
}
@Test
void doCollideCrossCrossing(){
RectHitBox a = new RectHitBox(new Vector2D(-1, 2), new Vector2D(2, 4));
RectHitBox b = new RectHitBox(new Vector2D(-2, 1), new Vector2D(4, 2));
assertTrue(a.collidesWith(b));
}
@Test
void doCollideFullyInside(){
RectHitBox a = new RectHitBox(new Vector2D(0, 0), new Vector2D(3, 3));
RectHitBox b = new RectHitBox(new Vector2D(1, 1), new Vector2D(1, 1));
assertTrue(a.collidesWith(b));
}
}