39 lines · 1.5 KB · JavaScript
RawDownload
(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);    };})