239 lines · 6.0 KB · JavaScript
RawDownload
//////  Created by The Content Team 4/10/216//  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// HomeMusicBox = function(spawnPosition, spawnRotation) {     var SHOULD_CLEANUP = false;     var WHITE = {        red: 255,        green: 255,        blue: 255    };     var RED = {        red: 255,        green: 0,        blue: 0    };     var GREEN = {        red: 0,        green: 255,        blue: 0    };     var BLUE = {        red: 0,        green: 0,        blue: 255    };     var center = Vec3.sum(Vec3.sum(MyAvatar.position, {        x: 0,        y: 0.5,        z: 0    }), Vec3.multiply(1, Quat.getFront(Camera.getOrientation())));     var BASE_DIMENSIONS = {        x: 0.1661,        y: 0.1010,        z: 0.2256    };     var BASE_POSITION = center;     var LID_DIMENSIONS = {        x: 0.1435,        y: 0.0246,        z: 0.1772    };     var LID_OFFSET = {        x: 0,        y: BASE_DIMENSIONS.y / 2,        z: 0    };     var LID_REGISTRATION_POINT = {        x: 0,        y: 0.5,        z: 0.5    }     var LID_SCRIPT_URL = Script.resolvePath('atp:/musicBox/lid.js');     var BASE_SCRIPT_URL = Script.resolvePath('atp:/musicBox/baseBox.js');    var base, lid, hat, key;     function createLid(baseID) {         var baseProps = Entities.getEntityProperties(baseID);        var VERTICAL_OFFSET = 0.05;        var FORWARD_OFFSET = 0;        var LATERAL_OFFSET = -0.070;         var startPosition = getOffsetFromCenter(VERTICAL_OFFSET, FORWARD_OFFSET, LATERAL_OFFSET);         var lidProperties = {            name: 'home_music_box_lid',            type: 'Model',            modelURL: 'atp:/musicBox/MB_Lid.fbx',            dimensions: LID_DIMENSIONS,            position: startPosition,            parentID: baseID,            registrationPoint: LID_REGISTRATION_POINT,            dynamic: true,            script: LID_SCRIPT_URL,            collidesWith: 'myAvatar,otherAvatar',            userData: JSON.stringify({                'hifiHomeKey': {                    'reset': true                },                grabbableKey: {                    wantsTrigger: true,                    disableReleaseVelocity: true                }            })        };         lid = Entities.addEntity(lidProperties);        createKey(baseID);        createHat(baseID);     };     function createHat(baseID) {        var VERTICAL_OFFSET = 0.025;        var FORWARD_OFFSET = 0.0;        var LATERAL_OFFSET = 0.0;         var properties = {            modelURL: "atp:/musicBox/MB_Hat.fbx",            name: 'home_music_box_hat',            type: 'Model',            position: getOffsetFromCenter(VERTICAL_OFFSET, FORWARD_OFFSET, LATERAL_OFFSET),            parentID: baseID,            dimensions: {                x: 0.0786,                y: 0.0549,                z: 0.0810            },            angularDamping: 1,            angularVelocity: {                x: 0,                y: 0.785398,                z: 0,            },            userData: JSON.stringify({                'hifiHomeKey': {                    'reset': true                }            })        };         hat = Entities.addEntity(properties);    };     function createKey(baseID) {        var VERTICAL_OFFSET = 0.0;        var FORWARD_OFFSET = 0.11;        var LATERAL_OFFSET = 0.0;         var properties = {            modelURL: "atp:/musicBox/MB_Key.fbx",            name: 'home_music_box_key',            type: 'Model',            parentID: baseID,            angularDamping: 1,            angularVelocity: {                x: 0,                y: 0,                z: 0.785398,            },            position: getOffsetFromCenter(VERTICAL_OFFSET, FORWARD_OFFSET, LATERAL_OFFSET),            dimensions: {                x: 0.0057,                y: 0.0482,                z: 0.0435            },            userData: JSON.stringify({                'hifiHomeKey': {                    'reset': true                }            })        };         key = Entities.addEntity(properties);    };     function createBaseBox() {         var properties = {            modelURL: "atp:/musicBox/MB_Box.fbx",            name: 'home_music_box_base',            type: 'Model',            position: BASE_POSITION,            dynamic: true,            shapeType: 'compound',            compoundShapeURL: 'atp:/musicBox/boxHull3.obj',            dimensions: {                x: 0.1661,                y: 0.0928,                z: 0.2022            },            script: BASE_SCRIPT_URL,            userData: JSON.stringify({                'hifiHomeKey': {                    'reset': true                },                grabbableKey: {                    disableReleaseVelocity: true                }            })        }         base = Entities.addEntity(properties);        createLid(base);    };     function cleanup() {        Entities.deleteEntity(base);        Entities.deleteEntity(lid);        Entities.deleteEntity(key);        Entities.deleteEntity(hat);    };     function getOffsetFromCenter(VERTICAL_OFFSET, FORWARD_OFFSET, LATERAL_OFFSET) {         var properties = Entities.getEntityProperties(base);         var upVector = Quat.getUp(properties.rotation);        var frontVector = Quat.getFront(properties.rotation);        var rightVector = Quat.getRight(properties.rotation);         var upOffset = Vec3.multiply(upVector, VERTICAL_OFFSET);        var frontOffset = Vec3.multiply(frontVector, FORWARD_OFFSET);        var rightOffset = Vec3.multiply(rightVector, LATERAL_OFFSET);         var finalOffset = Vec3.sum(properties.position, upOffset);        finalOffset = Vec3.sum(finalOffset, frontOffset);        finalOffset = Vec3.sum(finalOffset, rightOffset);         return finalOffset    };     this.cleanup = cleanup;     createBaseBox();     return this;}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t