add components
This commit is contained in:
parent
e78ee9eda3
commit
4b7d6ce3b8
@ -30,7 +30,7 @@ export class Circle {
|
|||||||
b.o.addTo(v.adjust(b.r - bd));
|
b.o.addTo(v.adjust(b.r - bd));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
export class Vec2 {
|
export class Vec2 {
|
||||||
constructor(x, y) {
|
constructor(x, y) {
|
||||||
@ -120,4 +120,4 @@ export class Vec2 {
|
|||||||
cross(y) {
|
cross(y) {
|
||||||
return this.x * y.y - this.y * y.x;
|
return this.x * y.y - this.y * y.x;
|
||||||
}
|
}
|
||||||
}
|
};
|
18
src/components.js
Normal file
18
src/components.js
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import { Circle } from '../src/2d.js';
|
||||||
|
|
||||||
|
export class Motion {
|
||||||
|
constructor(p, v) {
|
||||||
|
this.position = p;
|
||||||
|
this.velocity = v;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export class CollisionBox {
|
||||||
|
constructor(r) {
|
||||||
|
this.r = r;
|
||||||
|
}
|
||||||
|
|
||||||
|
shape(o) {
|
||||||
|
return new Circle(o, this.r);
|
||||||
|
}
|
||||||
|
};
|
16
src/main.js
Normal file
16
src/main.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import { Vec2 } from '../src/2d.js';
|
||||||
|
import { Motion, CollisionBox } from '../src/components.js';
|
||||||
|
import { EntityRegistry } from '../src/ecs.js';
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
let registry = new EntityRegistry();
|
||||||
|
let tank = registry.create();
|
||||||
|
registry.assign(tank, new Motion(new Vec2(0, 0), new Vec2(1, 1)));
|
||||||
|
registry.assign(tank, new CollisionBox(1));
|
||||||
|
registry.forEach([Motion], (id, motion) => {
|
||||||
|
motion.position.addTo(motion.velocity);
|
||||||
|
});
|
||||||
|
console.log(`motion: ${JSON.stringify(registry.get(tank, Motion))}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
main();
|
Loading…
x
Reference in New Issue
Block a user