summaryrefslogtreecommitdiffstats
path: root/src/renderer/controller/collision.ts
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2019-12-24 13:53:16 +0100
committerMatthias Schiffer <mschiffer@universe-factory.net>2019-12-24 13:53:16 +0100
commit3c51a1994f41b625823c4f15e92396b5498ce23c (patch)
tree7a96310ec32df82ac87039ea555300bcab510a5e /src/renderer/controller/collision.ts
parent33926af829848050c54c698ed22da9fe2b912aea (diff)
downloadrpgedit-3c51a1994f41b625823c4f15e92396b5498ce23c.tar
rpgedit-3c51a1994f41b625823c4f15e92396b5498ce23c.zip
Move renderer into "runtime" subdirectory
Diffstat (limited to 'src/renderer/controller/collision.ts')
-rw-r--r--src/renderer/controller/collision.ts65
1 files changed, 0 insertions, 65 deletions
diff --git a/src/renderer/controller/collision.ts b/src/renderer/controller/collision.ts
deleted file mode 100644
index a44ffa4..0000000
--- a/src/renderer/controller/collision.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import { Collision } from '../model/data/collision';
-
-import { Circle } from '../math/circle';
-import { Collidable } from '../math/collision';
-import { LineSegment, Movement } from '../math/line';
-import { Point } from '../math/point';
-
-import { vec2 } from 'gl-matrix';
-
-export function mkCollision(collision: Collision[]): Collidable[] {
- const ret: Collidable[] = [];
-
- for (const c of collision) {
- switch (c.type) {
- case 'polygon':
- if (!c.vertices.length)
- continue;
-
- let prev = c.vertices[c.vertices.length - 1];
-
- for (const v of c.vertices) {
- ret.push(LineSegment.fromPoints(vec2.clone(prev), vec2.clone(v)));
- prev = v;
- }
-
- for (const v of c.vertices) {
- ret.push(new Point(vec2.clone(v)));
- prev = v;
- }
- break;
-
- case 'circle':
- ret.push(new Circle(vec2.clone(c.center), c.radius));
- break;
- }
- }
-
- return ret;
-}
-
-export interface CollidableGroup {
- getTranslation(): vec2|null;
- getCollidables(): Collidable[];
-}
-
-export function collide(collision: CollidableGroup, out: vec2, move: Movement, radius: number): boolean {
- const t = collision.getTranslation();
- if (t)
- move = move.translate(vec2.negate(vec2.create(), t));
-
- for (const c of collision.getCollidables()) {
- if (!c.collide(out, move, radius))
- continue;
-
- if (vec2.squaredDistance(move.src, out) >= vec2.squaredDistance(move.src, move.dest))
- continue;
-
- if (t)
- vec2.add(out, out, t);
-
- return true;
- }
-
- return false;
-}