Improve gameplay and design

This commit is contained in:
schmelczerandras 2020-10-22 21:50:39 +02:00
commit 1d1bc6655c
2 changed files with 163 additions and 74 deletions

View file

@ -4,4 +4,4 @@ import { PhysicalBase } from '../physicals/physical-base';
export const evaluateSdf = (target: vec2, objects: Array<PhysicalBase>) =>
objects
.filter((i) => i.canCollide)
.reduce((min, i) => (min = Math.min(min, i.distance(target))), 1000);
.reduce((min, i) => (min = Math.min(min, i.distance(target))), 1000000);

View file

@ -9,6 +9,7 @@ export const moveCircle = (
circle: CirclePhysical,
delta: vec2,
possibleIntersectors: Array<Physical>,
ignoreCollision = false,
): {
realDelta: vec2;
hitSurface: boolean;
@ -38,12 +39,16 @@ export const moveCircle = (
(i) => i.distance(nextCircle.center) <= circle.radius,
)!;
if (reactsToCollision(intersecting)) {
intersecting.onCollision(circle.gameObject);
}
if (ignoreCollision) {
circle.center = vec2.add(circle.center, circle.center, delta);
} else {
if (reactsToCollision(intersecting)) {
intersecting.onCollision(circle.gameObject);
}
if (reactsToCollision(circle)) {
circle.onCollision(intersecting.gameObject);
if (reactsToCollision(circle)) {
circle.onCollision(intersecting.gameObject);
}
}
const dx =