From 3f73f83cf1322e05c1f570cfc57241660607c045 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Sun, 27 Dec 2015 11:23:54 -0800 Subject: [PATCH] add doppelganger --- .../example/avatarcontrol/doppelganger.js | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 examples/example/avatarcontrol/doppelganger.js diff --git a/examples/example/avatarcontrol/doppelganger.js b/examples/example/avatarcontrol/doppelganger.js new file mode 100644 index 0000000000..6fb7026ea1 --- /dev/null +++ b/examples/example/avatarcontrol/doppelganger.js @@ -0,0 +1,84 @@ +var TEST_MODEL_URL = ''; + +var doppelgangers = []; + +function Doppelganger(avatar) { + this.initialProperties = { + name: 'Hifi-Doppelganger', + type: 'Model', + modelURL: TEST_MODEL_URL, + dimensions: getAvatarDimensions(avatar), + position: putDoppelgangerAcrossFromAvatar(this, avatar), + rotation: rotateDoppelgangerTowardAvatar(this, avatar), + }; + + this.id = createDoppelgangerEntity(this); + this.avatar = avatar; + return this; +} + +function getJointData() { + return jointData; +} + +function setJointData(doppelganger, jointData) { + return true; +} + +function mirrorJointData() { + return mirroredJointData; +} + +function createDoppelganger(avatar) { + return new Doppelganger(avatar); +} + +function createDoppelgangerEntity(doppelganger) { + return Entities.addEntitiy(doppelganger.initialProperties); +} + +function putDoppelgangerAcrossFromAvatar(doppelganger, avatar) { + return position; +} + +function getAvatarDimensions(avatar) { + return dimensions; +} + +function rotateDoppelgangerTowardAvatar(doppelganger, avatar) { + return rotation; +} + +function connectDoppelgangerUpdates() { + Script.update.connect(updateDoppelganger); +} + +function disconnectDoppelgangerUpdates() { + Script.update.disconnect(updateDoppelganger); +} + +function updateDoppelganger() { + doppelgangers.forEach(function(doppelganger) { + var joints = getJointData(doppelganger.avatar.id); + var mirroredJoints = mirrorJointData(joints); + setJointData(doppelganger, mirroredJoints); + }); + +} + +function makeDoppelgangerForMyAvatar() { + var doppelganger = createDoppelganger(MyAvatar); + doppelgangers.push(doppelganger); + connectDoppelgangerUpdates(); +} + +function cleanup() { + disconnectDoppelgangerUpdates(); + + doppelgangers.forEach(function(doppelganger) { + Entities.deleteEntity(doppelganger); + }); + +} + +Script.scriptEnding.connect(cleanup); \ No newline at end of file