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); // };