overte-HifiExperiments/unpublishedScripts/DomainContent/Home/cuckooClock/wrapper.js
2016-03-17 13:18:40 -07:00

190 lines
No EOL
5.1 KiB
JavaScript

//
// wrapper.js
// For cuckooClock
//
// Created by Eric Levin on 3/15/16.
// Copyright 2016 High Fidelity, Inc.
//
// This entity script handles the logic for growing a plant when it has water poured on it
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
var MINUTE_HAND_CLOCK_SCRIPT_URL = Script.resolvePath("cuckooClockMinuteHandEntityScript.js?v1" + Math.random())
var CLOCK_BODY_URL = "http://hifi-content.s3.amazonaws.com/DomainContent/Home/cuckooClock/cuckoo2_BODY.fbx";
var CLOCK_FACE_URL = "https://s3-us-west-1.amazonaws.com/hifi-content/eric/models/cuckooClock2_FACE.fbx";
var CLOCK_HOUR_HAND_URL = "https://s3-us-west-1.amazonaws.com/hifi-content/eric/models/cuckooClock2_HOUR_HAND.fbx";
var CLOCK_MINUTE_HAND_URL = "https://s3-us-west-1.amazonaws.com/hifi-content/eric/models/cuckooClock2_MINUTE_HAND.fbx";
MyCuckooClock = function(spawnPosition, spawnRotation) {
var clockBody, clockFace, clockMinuteHand, clockHourHand, clockSecondHand;
function createClock() {
clockBody = Entities.addEntity({
type: "Model",
modelURL: CLOCK_BODY_URL,
name: "home_model_clockbody",
animation: {
url: CLOCK_BODY_URL,
running: false,
currentFrame: 0,
firstFrame: 0,
lastFrame: 100,
loop: false
},
position: spawnPosition,
dimensions: {
x: 0.8181,
y: 1.3662,
z: 0.8181
},
})
var clockFaceOffset = {
x: -0.0345,
y: 0.2587,
z: 0.1255
};
var clockFacePosition = Vec3.sum(spawnPosition, clockFaceOffset);
clockFace = Entities.addEntity({
type: "Model",
parentID: clockBody,
name: "home_model_clockface",
modelURL: CLOCK_FACE_URL,
position: clockFacePosition,
dimensions: {
x: 0.2397,
y: 0.2402,
z: 0.0212
}
});
// CLOCK HANDS
// __________
// _\|/_
// /|\
// ___________
var clockHandOffset = {
x: -0.0007,
y: -0.0015,
z: 0.0121
};
var myDate = new Date()
// HOUR HAND *************************
var DEGREES_FOR_HOUR = 30
var hours = myDate.getHours();
var hourRollDegrees = -hours * DEGREES_FOR_HOUR;
var ANGULAR_ROLL_SPEED_HOUR_RADIANS = 0.000029098833;
clockHourHand = Entities.addEntity({
type: "Model",
name: "home_model_clockHourHand",
parentID: clockFace,
modelURL: CLOCK_HOUR_HAND_URL,
position: Vec3.sum(clockFacePosition, clockHandOffset),
registrationPoint: {
x: 0.5,
y: 0.05,
z: 0.5
},
rotation: Quat.fromPitchYawRollDegrees(0, 0, hourRollDegrees),
angularDamping: 0,
angularVelocity: {
x: 0,
y: 0,
z: -ANGULAR_ROLL_SPEED_HOUR_RADIANS
},
dimensions: {
x: 0.0263,
y: 0.0982,
z: 0.0024
},
// script: SCRIPT_URL
});
// MINUTE HAND ************************
var DEGREES_FOR_MINUTE = 6;
var minutes = myDate.getMinutes();
var minuteRollDegrees = -minutes * DEGREES_FOR_MINUTE;
var ANGULAR_ROLL_SPEED_MINUTE_RADIANS = 0.00174533;
clockMinuteHand = Entities.addEntity({
type: "Model",
modelURL: CLOCK_MINUTE_HAND_URL,
name: "home_model_clockMinuteHand",
parentID: clockFace,
position: Vec3.sum(clockFacePosition, clockHandOffset),
registrationPoint: {
x: 0.5,
y: 0.05,
z: 0.5
},
rotation: Quat.fromPitchYawRollDegrees(0, 0, minuteRollDegrees),
angularDamping: 0,
angularVelocity: {
x: 0,
y: 0,
z: -ANGULAR_ROLL_SPEED_MINUTE_RADIANS
},
dimensions: {
x: 0.0251,
y: 0.1179,
z: 0.0032
},
script: MINUTE_HAND_CLOCK_SCRIPT_URL,
userData: JSON.stringify({clockBody: clockBody})
});
// *******************************************
var DEGREES_FOR_SECOND = 6;
var seconds = myDate.getSeconds();
secondRollDegrees = -seconds * DEGREES_FOR_SECOND;
var ANGULAR_ROLL_SPEED_SECOND_RADIANS = 0.10472
clockSecondHand = Entities.addEntity({
type: "Box",
parentID: clockBody,
// modelURL: CLOCK_SECOND_HAND_URL,
name: "home_model_clockSecondHand",
position: Vec3.sum(clockFacePosition, clockHandOffset),
dimensions: {
x: 0.00263,
y: 0.0982,
z: 0.0024
},
color: {
red: 200,
green: 10,
blue: 200
},
registrationPoint: {
x: 0.5,
y: 0.05,
z: 0.5
},
rotation: Quat.fromPitchYawRollDegrees(0, 0, secondRollDegrees),
angularDamping: 0,
angularVelocity: {
x: 0,
y: 0,
z: -ANGULAR_ROLL_SPEED_SECOND_RADIANS
}
});
}
createClock();
function cleanup() {
print('cuckoo cleanup')
Entities.deleteEntity(clockBody);
Entities.deleteEntity(clockFace);
Entities.deleteEntity(clockHourHand);
Entities.deleteEntity(clockMinuteHand);
Entities.deleteEntity(clockSecondHand);
}
this.cleanup = cleanup;
return this
}