mirror of
https://github.com/overte-org/overte.git
synced 2025-04-14 13:27:01 +02:00
mostly working muzak boxxx
This commit is contained in:
parent
5b6b289bba
commit
3adb8dedb0
2 changed files with 178 additions and 24 deletions
unpublishedScripts/DomainContent/Home/musicBox
|
@ -1,5 +1,7 @@
|
|||
(function() {
|
||||
|
||||
|
||||
//tells this
|
||||
var _this;
|
||||
|
||||
function BaseBox() {
|
||||
|
@ -8,25 +10,79 @@
|
|||
}
|
||||
|
||||
BaseBox.prototype = {
|
||||
preload: function(entityID) {
|
||||
this.entityID = entityID;
|
||||
},
|
||||
continueNearGrab: function() {
|
||||
lid:null,
|
||||
startNearGrab: function(myID, params) {
|
||||
print('START GRAB ON BASE')
|
||||
_this.hand = params[0];
|
||||
_this.disableHand();
|
||||
var myProps = Entities.getEntityProperties(_this.entityID)
|
||||
var results = Entities.findEntities(myProps.position, 2);
|
||||
var lid = null;
|
||||
results.forEach(function(result) {
|
||||
var resultProps = Entities.getEntityProperties(result);
|
||||
if (resultProps.name.indexOf('music_box_lid') > -1) {
|
||||
lid = result;
|
||||
_this.lid = result;
|
||||
}
|
||||
});
|
||||
if (lid === null) {
|
||||
},
|
||||
|
||||
preload: function(entityID) {
|
||||
this.entityID = entityID;
|
||||
print('PRELOAD BASE!!')
|
||||
},
|
||||
|
||||
continueNearGrab: function() {
|
||||
print('GRAB ON DE BASE!')
|
||||
var myProps = Entities.getEntityProperties(_this.entityID)
|
||||
var results = Entities.findEntities(myProps.position, 2);
|
||||
|
||||
results.forEach(function(result) {
|
||||
var resultProps = Entities.getEntityProperties(result);
|
||||
if (resultProps.name.indexOf('music_box_lid') > -1) {
|
||||
_this.lid = result;
|
||||
}
|
||||
});
|
||||
if (_this.lid === null) {
|
||||
return;
|
||||
} else {
|
||||
Entities.callEntityMethod(lid, 'updateHatRotation');
|
||||
Entities.callEntityMethod(lid, 'updateKeyRotation');
|
||||
Entities.callEntityMethod(_this.lid, 'updateHatRotation');
|
||||
Entities.callEntityMethod(_this.lid, 'updateKeyRotation');
|
||||
}
|
||||
},
|
||||
|
||||
disableHand: function() {
|
||||
print('DISABLE HAND BASE')
|
||||
//disable the off hand in the grab script.
|
||||
var handToDisable = _this.hand === 'right' ? 'left' : 'right';
|
||||
print("disabling hand: " + handToDisable);
|
||||
Messages.sendLocalMessage('Hifi-Hand-Disabler', handToDisable);
|
||||
|
||||
//tell the lid which hand it should use.
|
||||
//the lid should use the hand that is disabled.
|
||||
if (handToDisable === 'right') {
|
||||
Entities.callEntityMethod(_this.lid, 'setRightHand');
|
||||
}
|
||||
if (handToDisable === 'left') {
|
||||
Entities.callEntityMethod(_this.lid, 'setLeftHand');
|
||||
}
|
||||
|
||||
print('DISABLED BASE HAND:: ' + handToDisable)
|
||||
},
|
||||
|
||||
enableHand: function() {
|
||||
print('SHOULD ENABLE HAND FROM BASE')
|
||||
Messages.sendLocalMessage('Hifi-Hand-Disabler', "none")
|
||||
Entities.callEntityMethod(_this.lid, 'clearHand');
|
||||
|
||||
},
|
||||
|
||||
releaseGrab: function() {
|
||||
print('RELEASE GRAB ON BASE')
|
||||
_this.enableHand();
|
||||
},
|
||||
|
||||
unload: function() {
|
||||
_this.enableHand();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
//TODO -- At the part of the animation where the user starts to close the lid we need to rewind any frames past the one where it is aligned for going up/down before switching to the down animation
|
||||
Script.include('../utils.js');
|
||||
var GRAB_CONSTRAINTS_USER_DATA_KEY = "grabConstraintsKey"
|
||||
var MAPPING_NAME = "com.highfidelity.musicBox";
|
||||
|
||||
var _this;
|
||||
|
||||
|
@ -18,6 +19,9 @@
|
|||
var OPEN_SOUND_URL = Script.resolvePath('atp:/closeSound.wav');
|
||||
|
||||
Lid.prototype = {
|
||||
disabledHand: 'none',
|
||||
lidLoopConnected: false,
|
||||
myInterval: null,
|
||||
musicInjector: null,
|
||||
preload: function(entityID) {
|
||||
this.entityID = entityID;
|
||||
|
@ -37,31 +41,122 @@
|
|||
}
|
||||
this.getParts();
|
||||
this.props = Entities.getEntityProperties(this.entityID);
|
||||
var mapping = Controller.newMapping(MAPPING_NAME);
|
||||
|
||||
mapping.from([Controller.Standard.RT]).peek().to(_this.rightTriggerPress);
|
||||
|
||||
mapping.from([Controller.Standard.LT]).peek().to(_this.leftTriggerPress);
|
||||
|
||||
Controller.enableMapping(MAPPING_NAME);
|
||||
|
||||
},
|
||||
setLeftHand: function() {
|
||||
_this.disabledHand = 'left';
|
||||
print('LID HAND IS LEFT');
|
||||
},
|
||||
|
||||
setRightHand: function() {
|
||||
_this.disabledHand = 'right';
|
||||
print('LID HAND IS RIGHT')
|
||||
},
|
||||
|
||||
clearHand: function() {
|
||||
_this.disabledHand = "none";
|
||||
},
|
||||
|
||||
createMyInteval: function() {
|
||||
_this.myInterval = Script.setInterval(function() {
|
||||
_this.handleTrigger();
|
||||
}, 16);
|
||||
},
|
||||
clearMyInterval: function() {
|
||||
if (_this.myInterval !== null) {
|
||||
Script.clearInterval(_this.myInterval)
|
||||
}
|
||||
},
|
||||
rightTriggerPress: function(value) {
|
||||
print('right trigger press 1')
|
||||
if (_this.disabledHand === 'none') {
|
||||
_this.generalTriggerPress(value,'right');
|
||||
return;
|
||||
}
|
||||
if (_this.disabledHand !== 'right') {
|
||||
return;
|
||||
}
|
||||
_this.hand = 'right';
|
||||
print('RIGHT TRIGGER PRESS')
|
||||
_this.triggerPress(value);
|
||||
},
|
||||
|
||||
leftTriggerPress: function(value) {
|
||||
print('left trigger press1 ')
|
||||
if (_this.disabledHand === 'none') {
|
||||
_this.generalTriggerPress(value,'left');
|
||||
return;
|
||||
}
|
||||
if (_this.disabledHand !== 'left') {
|
||||
return;
|
||||
}
|
||||
_this.hand = 'left';
|
||||
_this.triggerPress(value)
|
||||
print('LEFT TRIGGER PRESS2');
|
||||
},
|
||||
|
||||
generalTriggerPress: function(value,hand) {
|
||||
// print('GENERAL TRIGGER PRESS');
|
||||
_this.hand = hand;
|
||||
if (_this.disabledHand !== 'none') {
|
||||
return;
|
||||
} else {
|
||||
var handPosition = _this.getHandPosition();
|
||||
var lidProps = Entities.getEntityProperties(_this.entityID);
|
||||
|
||||
var distanceHandToLid = Vec3.distance(lidProps.position, handPosition);
|
||||
print('DISTANCE TO LID' + distanceHandToLid)
|
||||
|
||||
if(distanceHandToLid<=0.4){
|
||||
print('SOME PRESS NEARBY BUT WE ARE NOT GRABBING THE BOTTOM')
|
||||
_this.triggerPress(value);
|
||||
}
|
||||
else{
|
||||
print('TOO FAR FOR THIS TO COUNT')
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
triggerPress: function(value) {
|
||||
|
||||
print('SOME TRIGGER PRESS ' + value);
|
||||
if (value > 0.1 && _this.lidLoopConnected === false) {
|
||||
print('SHOULD CREATE INTERVAL')
|
||||
_this.lidLoopConnected = true;
|
||||
_this.createMyInteval();
|
||||
};
|
||||
|
||||
if (value <= 0.1 && _this.lidLoopConnected === true) {
|
||||
print('SHOULD CLEAR INTERVAL')
|
||||
_this.lidLoopConnected = false;
|
||||
_this.clearMyInterval();
|
||||
}
|
||||
|
||||
},
|
||||
updateSoundPositionWhileBaseIsHeld: function() {
|
||||
|
||||
},
|
||||
|
||||
startNearTrigger: function() {
|
||||
this.getParts();
|
||||
},
|
||||
|
||||
getHandPosition: function() {
|
||||
if (this.hand === 'left') {
|
||||
if (_this.hand === 'left') {
|
||||
return MyAvatar.getLeftPalmPosition();
|
||||
}
|
||||
if (this.hand === 'right') {
|
||||
if (_this.hand === 'right') {
|
||||
return MyAvatar.getRightPalmPosition();
|
||||
}
|
||||
|
||||
},
|
||||
continueNearTrigger: function(myID, paramsArray) {
|
||||
paramsArray.forEach(function(param, index) {
|
||||
if (index === 0) {
|
||||
_this.hand = param;
|
||||
}
|
||||
});
|
||||
|
||||
handleTrigger: function() {
|
||||
|
||||
// get the base position
|
||||
// get the hand position
|
||||
|
@ -89,7 +184,7 @@
|
|||
|
||||
var finalAngle = scaleValue(distaceHandToBaseBox, 0.1, maxDistance, 0, 75)
|
||||
|
||||
print('FINAL ANGLE:: ' + finalAngle);
|
||||
// print('FINAL ANGLE:: ' + finalAngle);
|
||||
|
||||
if (finalAngle < 0) {
|
||||
finalAngle = 0;
|
||||
|
@ -167,7 +262,7 @@
|
|||
angularVelocity: worldAngularVelocity
|
||||
})
|
||||
|
||||
print('UPDATE HAT ANGULAR VELOCITY!' + JSON.stringify(worldAngularVelocity));
|
||||
// print('UPDATE HAT ANGULAR VELOCITY!' + JSON.stringify(worldAngularVelocity));
|
||||
|
||||
},
|
||||
|
||||
|
@ -184,7 +279,7 @@
|
|||
angularVelocity: worldAngularVelocity
|
||||
})
|
||||
|
||||
print('UPDATE KEY ANGULAR VELOCITY!' + JSON.stringify(worldAngularVelocity));
|
||||
// print('UPDATE KEY ANGULAR VELOCITY!' + JSON.stringify(worldAngularVelocity));
|
||||
|
||||
},
|
||||
|
||||
|
@ -223,7 +318,7 @@
|
|||
loop: false
|
||||
}
|
||||
this.openSoundInjector = Audio.playSound(this.openSound, audioOptions);
|
||||
print('this oppen soundinejctopr' + JSON.stringify(this.openSoundInjector))
|
||||
print('this open soundinjector' + JSON.stringify(this.openSoundInjector))
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -305,9 +400,12 @@
|
|||
},
|
||||
|
||||
unload: function() {
|
||||
Controller.disableMapping(MAPPING_NAME);
|
||||
print('DISABLED MAPPING:: ' + MAPPING_NAME);
|
||||
if (this.musicInjector !== null) {
|
||||
this.musicInjector.stop();
|
||||
}
|
||||
|
||||
},
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue