From 5530f7b1de88a047ebe0e4e7d5e61ed3fae78703 Mon Sep 17 00:00:00 2001 From: Romain Beaumont Date: Tue, 17 Nov 2015 00:56:32 +0100 Subject: [PATCH] get ticking back to server plugin (more efficient not to listen lot of time on an event) --- src/lib/plugins/entities.js | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/src/lib/plugins/entities.js b/src/lib/plugins/entities.js index 032cdb0..5efc0c8 100644 --- a/src/lib/plugins/entities.js +++ b/src/lib/plugins/entities.js @@ -67,7 +67,23 @@ module.exports.server=function(serv,options) { world: entity.world }); delete serv.entities[entity.id]; - } + }; + + serv.on('tick', function(delta) { + Promise.all( + Object.keys(serv.entities).map(async (id) => { + var entity = serv.entities[id]; + if (entity.deathTime && Date.now() - entity.bornTime >= entity.deathTime) { + entity.destroy(); + return; + } + if (!entity.velocity || !entity.size) return; + var oldPosAndOnGround = await entity.calculatePhysics(delta); + if (!oldPosAndOnGround.oldPos.equals(new Vec3(0,0,0))) + if (entity.type == 'mob') entity.sendPosition(oldPosAndOnGround); + }) + ).catch((err)=> setTimeout(() => {throw err;},0)); + }); }; module.exports.player=function(player,serv){ @@ -145,24 +161,6 @@ module.exports.entity=function(entity,serv){ }; - serv.on('tick', async function(delta) { - if (entity.deathTime && Date.now() - entity.bornTime >= entity.deathTime) { - entity.destroy(); - return; - } - if (!entity.velocity || !entity.size) return; - var oldPosAndOnGround; - try { - oldPosAndOnGround = await entity.calculatePhysics(delta); - } - catch(err){ - setTimeout(() => {throw err;},0) - } - if (!oldPosAndOnGround.oldPos.equals(new Vec3(0,0,0))) - if (entity.type == 'mob') entity.sendPosition(oldPosAndOnGround); - }); - - entity.on("positionChanged",() => { if(entity.position.distanceTo(entity.lastPositionPlayersUpdated)>2*32) entity.updateAndSpawn();