Added copyright header, expanded tabs to spaces

This commit is contained in:
Patterntrick 2017-03-28 18:22:22 -07:00 committed by GitHub
parent bc33e45d0e
commit 8ff4eb0a96

View file

@ -1,3 +1,13 @@
//
// xylophoneRezzer.js
//
// Created by Patrick Gosch on 03/28/2017
// Copyright 2017 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 soundFiles = ["C2.wav", "D2.wav", "E2.wav", "F2.wav", "G2.wav", "A2.wav", "B2.wav", "C3.wav"]; var soundFiles = ["C2.wav", "D2.wav", "E2.wav", "F2.wav", "G2.wav", "A2.wav", "B2.wav", "C3.wav"];
var keyModelURL = Script.resolvePath("xyloKey_2_a_e.fbx"); var keyModelURL = Script.resolvePath("xyloKey_2_a_e.fbx");
var keyScriptURL = Script.resolvePath("xylophoneKey.js"); var keyScriptURL = Script.resolvePath("xylophoneKey.js");
@ -8,83 +18,82 @@ var fwd = {x:0, y:0, z:-1};
var xyloFramePos = Vec3.sum(center, Vec3.multiply(fwd, 0.8)); var xyloFramePos = Vec3.sum(center, Vec3.multiply(fwd, 0.8));
var xyloFrameID = Entities.addEntity( { var xyloFrameID = Entities.addEntity( {
name: "Xylophone", name: "Xylophone",
type: "Model", type: "Model",
modelURL: Script.resolvePath("xylophoneFrameWithWave.fbx"), modelURL: Script.resolvePath("xylophoneFrameWithWave.fbx"),
position: xyloFramePos, position: xyloFramePos,
rotation: Quat.fromVec3Radians({x:0, y:Math.PI, z:0}), rotation: Quat.fromVec3Radians({x:0, y:Math.PI, z:0}),
shapeType: "static-mesh", shapeType: "static-mesh"
}); });
center.y += (0.45); //key Y offset from frame center.y += (0.45); //key Y offset from frame
var keyPos; var keyPos, keyRot, ud, td, keyID;
var keyRot; for (var i = 1; i <= soundFiles.length; i++) {
for (i=1, len=soundFiles.length; i<=len; i++) {
keyRot = Quat.fromVec3Radians({x:0, y:(0.9 - (i*0.2)), z:0}); keyRot = Quat.fromVec3Radians({x:0, y:(0.9 - (i*0.2)), z:0});
keyPos = Vec3.sum(center, Vec3.multiplyQbyV(keyRot, fwd)); keyPos = Vec3.sum(center, Vec3.multiplyQbyV(keyRot, fwd));
var ud = { ud = {
soundFile: soundFiles[i-1] soundFile: soundFiles[i-1]
}; };
var td = { td = {
"file4": Script.resolvePath("xylotex_bar" + i + ".png"), "file4": Script.resolvePath("xylotex_bar" + i + ".png"),
"file5": TEXBLACK "file5": TEXBLACK
}; };
var keyID = Entities.addEntity( { keyID = Entities.addEntity( {
name: ("XyloKey" + i), name: ("XyloKey" + i),
type: "Model", type: "Model",
modelURL: keyModelURL, modelURL: keyModelURL,
position: keyPos, position: keyPos,
rotation: keyRot, rotation: keyRot,
shapeType: "static-mesh", shapeType: "static-mesh",
script: keyScriptURL, script: keyScriptURL,
textures: JSON.stringify(td), textures: JSON.stringify(td),
userData: JSON.stringify(ud), userData: JSON.stringify(ud),
parentID: xyloFrameID, parentID: xyloFrameID,
} ); } );
}; }
//if rezzed on/above something, wait until after model has loaded so you can read its dimensions then move object on to that surface. //if rezzed on/above something, wait until after model has loaded so you can read its dimensions then move object on to that surface.
var pickRay = {origin: center, direction: {x:0, y:-1, z:0}}; var pickRay = {origin: center, direction: {x:0, y:-1, z:0}};
var intersection = Entities.findRayIntersection(pickRay, true); var intersection = Entities.findRayIntersection(pickRay, true);
if (intersection.intersects && (intersection.distance < 10)) { if (intersection.intersects && (intersection.distance < 10)) {
var surfaceY = intersection.intersection.y; var surfaceY = intersection.intersection.y;
Script.setTimeout( function() { Script.setTimeout( function() {
//should add loop to check for fbx loaded instead of delay //should add loop to check for fbx loaded instead of delay
var xyloDimensions = Entities.getEntityProperties(xyloFrameID, ["dimensions"]).dimensions; var xyloDimensions = Entities.getEntityProperties(xyloFrameID, ["dimensions"]).dimensions;
xyloFramePos.y = surfaceY + (xyloDimensions.y/2); xyloFramePos.y = surfaceY + (xyloDimensions.y/2);
Entities.editEntity(xyloFrameID, {position: xyloFramePos}); Entities.editEntity(xyloFrameID, {position: xyloFramePos});
rezMallets(); rezMallets();
}, 2000); //timeout (ms) }, 2000); //timeout (ms)
} else { } else {
print("No surface detected."); print("No surface detected.");
rezMallets(); rezMallets();
} }
function rezMallets() { function rezMallets() {
var malletProps = { var malletProps = {
name: "Xylophone Mallet", name: "Xylophone Mallet",
type: "Model", type: "Model",
modelURL: malletModelURL, modelURL: malletModelURL,
collidesWith: "static,dynamic,kinematic,", collidesWith: "static,dynamic,kinematic,",
collisionMask: 7, collisionMask: 7,
collisionsWillMove: 1, collisionsWillMove: 1,
dynamic: 1, dynamic: 1,
damping: 1, damping: 1,
angularDamping: 1, angularDamping: 1,
shapeType: "simple-compound", shapeType: "simple-compound",
userData: "{\"grabbableKey\":{\"grabbable\":true}}" userData: "{\"grabbableKey\":{\"grabbable\":true}}"
}; };
malletProps.position = Vec3.sum(xyloFramePos, {x: 0.1, y: 0.55, z: 0}); malletProps.position = Vec3.sum(xyloFramePos, {x: 0.1, y: 0.55, z: 0});
malletProps.rotation = Quat.fromVec3Radians({x:0, y:Math.PI - 0.1, z:0}), malletProps.rotation = Quat.fromVec3Radians({x:0, y:Math.PI - 0.1, z:0});
Entities.addEntity(malletProps); Entities.addEntity(malletProps);
malletProps.position = Vec3.sum(xyloFramePos, {x: -0.1, y: 0.55, z: 0}); malletProps.position = Vec3.sum(xyloFramePos, {x: -0.1, y: 0.55, z: 0});
malletProps.rotation = Quat.fromVec3Radians({x:0, y:Math.PI + 0.1, z:0}), malletProps.rotation = Quat.fromVec3Radians({x:0, y:Math.PI + 0.1, z:0});
Entities.addEntity(malletProps); Entities.addEntity(malletProps);
Script.stop(); Script.stop();
}; }