html-tower/static/collision.js

54 lines
1.5 KiB
JavaScript
Raw Normal View History

2024-05-22 16:21:10 +00:00
console.log("loading collision system");
const collisionShape = {
CIRCLE: {},
CAPSULE: {},
RECTANGLE: {}
};
const collision = (engine) => (
entity,
collisionData = {
layers: new Set(),
mask: new Set(),
shape: collisionShape.RECTANGLE
}) => {
const {layers, mask, shape} = collisionData;
// masking
return (message, ...messageArgs) => {
switch (message) {
case "checkCollision": {
console.log("checkingCollision");
Object.values(engine("components")
.collision
.instances)
.filter(collider => collider("mask", layers))
.forEach(toCheck => console.log(toCheck));
break;
}
case "mask": {
let [layersToCheck] = messageArgs;
let masking = false;
// console.log(entity);
// console.log("mask: ", mask);
// console.log("layersToCheck: ",layersToCheck);
for (layer in layersToCheck.values()) {
if (mask.has(layer)) {
masking = true;
break;
}
}
return masking;
}
};
};
};
const initCollisionSystem = (engine) => {
engine("registerComponentType", "collision", collision);
//
};