(function() { var x = false; var y = false; var z = false; var entityLastTick = Date.now(); var entityTotalTicks = 0; var entityCount = 0; var entityTotalVariance = 0; var entityTickCount = 0; var entityVarianceCount = 0; var entityHighVarianceCount = 0; var _entityID; var time = 0; function Foo() { return; }; Foo.prototype = { preload: function(entityID) { print('Foo preload'); _entityID = entityID; }, doRPC: function(entityID, args) { var range = args[0]; var rotationFactor = args[1]; var omega = args[2]; var TIMER_INTERVAL = args[3]; var TIMER_HZ = args[4]; // first time, set our x,y,z if (x === false) { var position = Entities.getEntityProperties(_entityID, "position").position; x = position.x; y = position.y; z = position.z; } entityTickCount++; var tickNow = Date.now(); var deltaTick = tickNow - entityLastTick; var variance = Math.abs(deltaTick - TIMER_INTERVAL); entityTotalVariance += variance; if (variance > 1) { entityVarianceCount++; } if (variance > 5) { entityHighVarianceCount++; } entityTotalTicks += deltaTick; entityLastTick = tickNow; // move self!! var deltaTime = deltaTick / 1000; time += deltaTime; rotation = Quat.angleAxis(time * omega / Math.PI * 180.0, { x: 0, y: 1, z: 0 }); Entities.editEntity(_entityID, { position: { x: x + Math.sin(time * omega) / 2.0 * range, y: y, z: z }, }); if(entityTickCount == (TIMER_HZ * 5)) { print("ENTITY -- For " + entityTickCount + " samples average interval = " + entityTotalTicks/entityTickCount + " ms" + " average variance:" + entityTotalVariance/entityTickCount + " ms" + " min variance:" + entityVarianceCount + " [" + (entityVarianceCount/entityTickCount) * 100 + " %] " + " high variance:" + entityHighVarianceCount + " [" + (entityHighVarianceCount/entityTickCount) * 100 + " %] " ); entityTickCount = 0; entityTotalTicks = 0; entityTotalVariance = 0; entityVarianceCount = 0; entityHighVarianceCount = 0; } } }; return new Foo(); });
(function() {
var x = false;
var y = false;
var z = false;
var entityLastTick = Date.now();
var entityTotalTicks = 0;
var entityCount = 0;
var entityTotalVariance = 0;
var entityTickCount = 0;
var entityVarianceCount = 0;
var entityHighVarianceCount = 0;
var _entityID;
var time = 0;
function Foo() { return; };
Foo.prototype = {
preload: function(entityID) { print('Foo preload'); _entityID = entityID; },
doRPC: function(entityID, args) {
var range = args[0];
var rotationFactor = args[1];
var omega = args[2];
var TIMER_INTERVAL = args[3];
var TIMER_HZ = args[4];
// first time, set our x,y,z
if (x === false) {
var position = Entities.getEntityProperties(_entityID, "position").position;
x = position.x;
y = position.y;
z = position.z;
}
entityTickCount++;
var tickNow = Date.now();
var deltaTick = tickNow - entityLastTick;
var variance = Math.abs(deltaTick - TIMER_INTERVAL);
entityTotalVariance += variance;
if (variance > 1) {
entityVarianceCount++;
}
if (variance > 5) {
entityHighVarianceCount++;
}
entityTotalTicks += deltaTick;
entityLastTick = tickNow;
// move self!!
var deltaTime = deltaTick / 1000;
time += deltaTime;
rotation = Quat.angleAxis(time * omega / Math.PI * 180.0, { x: 0, y: 1, z: 0 });
Entities.editEntity(_entityID,
{
position: { x: x + Math.sin(time * omega) / 2.0 * range,
y: y,
z: z },
});
if(entityTickCount == (TIMER_HZ * 5)) {
print("ENTITY -- For " + entityTickCount + " samples average interval = " + entityTotalTicks/entityTickCount + " ms"
+ " average variance:" + entityTotalVariance/entityTickCount + " ms"
+ " min variance:" + entityVarianceCount + " [" + (entityVarianceCount/entityTickCount) * 100 + " %] "
+ " high variance:" + entityHighVarianceCount + " [" + (entityHighVarianceCount/entityTickCount) * 100 + " %] "
);
entityTickCount = 0;
entityTotalTicks = 0;
entityTotalVariance = 0;
entityVarianceCount = 0;
entityHighVarianceCount = 0;
}
}
};
return new Foo();
});