(function() { // The attached entity will move away from you if you are too close, checking at distanceRate. // See tests/performance/simpleKeepAway.js var entityID, distanceRate = 1, // hertz distanceAllowance = 3, // meters distanceScale = 0.5, // meters/second distanceTimer; function moveDistance() { // every user checks their distance and tries to claim if close enough. var me = MyAvatar.position, ball = Entities.getEntityProperties(entityID, ['position']).position; ball.y = me.y; var vector = Vec3.subtract(ball, me); if (Vec3.length(vector) < distanceAllowance) { Entities.editEntity(entityID, { velocity: Vec3.multiply(distanceScale, Vec3.normalize(vector)) }); } } this.preload = function(givenEntityID) { var properties = Entities.getEntityProperties(givenEntityID, ['userData']), userData = properties.userData && JSON.parse(properties.userData); entityID = givenEntityID; if (userData) { distanceRate = userData.distanceRate || distanceRate; distanceAllowance = userData.distanceAllowance || distanceAllowance; distanceScale = userData.distanceScale || distanceScale; } // run all the time by everyone: distanceTimer = Script.setInterval(moveDistance, distanceRate); }; this.unload = function() { Script.clearTimeout(distanceTimer); }; })