Exemple #1
0
    PolygonMaker.prototype.near = function(e){
        var p1 = this.points[0];
        var p2 = [e.offsetX,e.offsetY];

        if(!p1){
            return false;
        }

        return util.distance(p1,p2) < 50;
    }
        data.forEachEntityPair((entityA, entityB) => {
            if (!entityA.active || !entityB.active)
                return;
            if (entityA.type !== 'virus' && entityB.type !== 'virus')
                return;

            var dist = util.distance(entityA, entityB);
            dist -= entityA.mass;
            dist -= entityB.mass;

            var largerEntity = entityB;
            var smallerEntity = entityA;
            if (entityA.mass > entityB.mass) {
                largerEntity = entityA;
                smallerEntity = entityB;
            }

            if (largerEntity.type === 'virus')
                return;
            if (largerEntity.mass * 0.75 < smallerEntity.mass)
                return;
            if (dist >= -smallerEntity.mass)
                return;

            for (var i = 0; i < 3; i++) {
                var entity = Object.assign({}, largerEntity, {
                    id: util.uuid(),
                    x: largerEntity.x,
                    y: largerEntity.y,
                    mass: largerEntity.mass / 4,
                    velocity: {
                        x: 0,
                        y: 0
                    },
                    _attributes: {}, // TODO
                    logs: [], // TODO
                    mergeDelay: 1500 // TODO
                });

                data.addEntity(entity);
            }

            largerEntity.mass /= 3;
            smallerEntity.active = false;
        });