Andrew Meadowsarchive remaining JS scriptsc0b446c10 years agoHistory
93 lines · 3.4 KB · JavaScript
RawDownload
////  inspect.js//  examples/entityScripts////  If you attach this script to an object, you can pick it up and look at it by clicking//  and holding/dragging.  When you release, the object will return to it's original location.////  Created by Philip Rosedale on November 21, 2014//  Copyright 2014 High Fidelity, Inc.////  Distributed under the Apache License, Version 2.0.//  See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html//(function(){     this.entityID = null;    this.properties = null;    this.originalPosition = null;    this.originalRotation = null;    this.radius = null;    this.lastMouseX = null;    this.lastMouseY = null;    this.sound = null;    this.isHolding = null;     this.preload = function(entityID) {        this.updateProperties(entityID); // All callbacks start by updating the properties        this.sound = SoundCache.getSound("http://public.highfidelity.io/sounds/Footsteps/FootstepW3Left-12db.wav");    }     // Play drop sound    this.playSound = function() {        if (this.sound && this.sound.downloaded) {            Audio.playSound(this.sound, { position: this.properties.position });        }    }    // All callbacks start by updating the properties    this.updateProperties = function(entityID) {        if (this.entityID === null) {            this.entityID = entityID;        }        this.properties = Entities.getEntityProperties(this.entityID);    };     this.clickDownOnEntity = function(entityID, mouseEvent) {        this.updateProperties(entityID);           // record the old location of this object        this.originalPosition = this.properties.position;        this.originalRotation = this.properties.rotation;        this.radius = Vec3.length(this.properties.dimensions) / 2.0;        this.lastMouseX = mouseEvent.x;         this.lastMouseY = mouseEvent.y;         var newPosition = Vec3.sum(Camera.position, Vec3.multiply(Quat.getFront(Camera.getOrientation()), this.radius * 3.0));        // Place object in front of me        Entities.editEntity(this.entityID, { position: newPosition });         this.isHolding = true;        this.playSound();    };    this.holdingClickOnEntity = function(entityID, mouseEvent) {        this.updateProperties(entityID);         if (mouseEvent.x != this.lastMouseX) {            var newRotation = Quat.multiply(Quat.fromPitchYawRollDegrees(0, mouseEvent.x - this.lastMouseX, 0), this.properties.rotation);                 this.lastMouseX = mouseEvent.x;            Entities.editEntity(this.entityID, { rotation: newRotation });        }        if (mouseEvent.y != this.lastMouseY) {            var newRotation = Quat.multiply(Quat.fromPitchYawRollDegrees(mouseEvent.y - this.lastMouseY, 0, 0), this.properties.rotation);            this.lastMouseY = mouseEvent.y;            Entities.editEntity(this.entityID, { rotation: newRotation });        }    };     this.returnItem = function(entityID) {        this.updateProperties(entityID);         Entities.editEntity(this.entityID, { position: this.originalPosition,                                              rotation: this.originalRotation });        this.isHolding = false;        this.playSound();    };     this.clickReleaseOnEntity = function(entityID, mouseEvent) {        this.returnItem(entityID);    };     this.unload = function(entityID) {        if (this.isHolding) {            this.returnItem(entityID);        }    }; })