74 lines · 1.9 KB · JavaScript
RawDownload
//  Copyright 2016 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//  var spriteURL = "https://hifi-content/DomainContent/CellScience/Sprites/nucleosomes_sprite.fbx";var spriteDimensions = {    x: 10,    y: 10,    z: 10};var sprite;var isMouseDown = false;var RAD_TO_DEG = 180.0 / Math.PI;var Y_AXIS = {    x: 0,    y: 1,    z: 0};var X_AXIS = {    x: 1,    y: 0,    z: 0}; function MakeSprite() {    sprite = Entities.addEntity({        type: "Model",        name: "sprite",        modelURL: spriteURL,        dimensions: spriteDimensions,        position: Vec3.sum(MyAvatar.position, Quat.getFront(MyAvatar.orientation)),        rotation: Quat.inverse(Quat.getFront(MyAvatar.orientation))    });} function UpdateOrientation(event) {    if (isMouseDown && event.isRightButton) {         var direction,            yaw,            pitch,            rot;         direction = Vec3.normalize(Vec3.subtract(MyAvatar.position, Entities.getEntityProperties(sprite).position));        yaw = Quat.angleAxis(Math.atan2(direction.x, direction.z) * RAD_TO_DEG, Y_AXIS);        pitch = Quat.angleAxis(Math.asin(-direction.y) * RAD_TO_DEG, X_AXIS);        rot = Quat.multiply(yaw, pitch);         var avatar = Quat.safeEulerAngles(MyAvatar.orientation);        var printRot = Quat.safeEulerAngles(rot);        print("avatar = (" + avatar.x + ", " + avatar.y + ", " + avatar.z + ")");        print("sprite = (" + printRot.x + ", " + printRot.y + ", " + printRot.z + ")");        Entities.editEntity(sprite, {            rotation: rot        });    }} function OnMouseDown(event) {    isMouseDown = true;} function OnMouseUp(event) {    isMouseDown = false;} MakeSprite();Controller.mouseMoveEvent.connect(UpdateOrientation);Controller.mousePressEvent.connect(OnMouseDown);Controller.mouseReleaseEvent.connect(OnMouseUp);