diff --git a/assignment-client/src/AssignmentClientApp.cpp b/assignment-client/src/AssignmentClientApp.cpp index 2fa052e244..162f18f712 100644 --- a/assignment-client/src/AssignmentClientApp.cpp +++ b/assignment-client/src/AssignmentClientApp.cpp @@ -240,6 +240,9 @@ AssignmentClientApp::AssignmentClientApp(int argc, char* argv[]) : QThread::currentThread()->setObjectName("main thread"); + LogHandler::getInstance().setParent(this); + LogHandler::getInstance().setupRepeatedMessageFlusher(); + DependencyManager::registerInheritance(); DependencyManager::set(); diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index 307a43ee88..bad553c65e 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -174,6 +174,9 @@ DomainServer::DomainServer(int argc, char* argv[]) : LogUtils::init(); + LogHandler::getInstance().setParent(this); + LogHandler::getInstance().setupRepeatedMessageFlusher(); + qDebug() << "Setting up domain-server"; qDebug() << "[VERSION] Build sequence:" << qPrintable(applicationVersion()); qDebug() << "[VERSION] MODIFIED_ORGANIZATION:" << BuildInfo::MODIFIED_ORGANIZATION; @@ -320,7 +323,7 @@ DomainServer::DomainServer(int argc, char* argv[]) : connect(_contentManager.get(), &DomainContentBackupManager::recoveryCompleted, this, &DomainServer::restart); -static const int NODE_PING_MONITOR_INTERVAL_MSECS = 1 * MSECS_PER_SECOND; + static const int NODE_PING_MONITOR_INTERVAL_MSECS = 1 * MSECS_PER_SECOND; _nodePingMonitorTimer = new QTimer{ this }; connect(_nodePingMonitorTimer, &QTimer::timeout, this, &DomainServer::nodePingMonitor); _nodePingMonitorTimer->start(NODE_PING_MONITOR_INTERVAL_MSECS); diff --git a/interface/resources/avatar/animations/idle_aimoffsets.fbx b/interface/resources/avatar/animations/idle_aimoffsets.fbx new file mode 100644 index 0000000000..6e5ab05fdc Binary files /dev/null and b/interface/resources/avatar/animations/idle_aimoffsets.fbx differ diff --git a/interface/resources/avatar/avatar-animation.json b/interface/resources/avatar/avatar-animation.json index 738d25e8ee..9ab4d5d935 100644 --- a/interface/resources/avatar/avatar-animation.json +++ b/interface/resources/avatar/avatar-animation.json @@ -588,1455 +588,6 @@ "children": [ { "children": [ - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 271, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_talk02.fbx" - }, - "id": "seatedTalk02", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 252, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_talk03.fbx" - }, - "id": "seatedTalk03", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 442, - "loopFlag": true, - "startFrame": 0, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_talk04.fbx" - }, - "id": "seatedTalk04", - "type": "clip" - } - ], - "data": { - "currentState": "seatedTalk02", - "randomSwitchTimeMax": 12, - "randomSwitchTimeMin": 7, - "states": [ - { - "easingType": "easeInOutQuad", - "id": "seatedTalk02", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 1, - "resume": true, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedTalk03", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 1, - "resume": true, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedTalk04", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 1, - "resume": true, - "transitions": [ - ] - } - ], - "triggerRandomSwitch": "seatedTalkSwitch" - }, - "id": "seatedTalk", - "type": "randomSwitchStateMachine" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 800, - "loopFlag": true, - "startFrame": 0, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_idle.fbx" - }, - "id": "seatedIdle01", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 800, - "loopFlag": true, - "startFrame": 0, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_idle02.fbx" - }, - "id": "seatedIdle02", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 800, - "loopFlag": true, - "startFrame": 0, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_idle03.fbx" - }, - "id": "seatedIdle03", - "type": "clip" - } - ], - "data": { - "currentState": "seatedIdle01", - "randomSwitchTimeMax": 20, - "randomSwitchTimeMin": 10, - "states": [ - { - "easingType": "easeInOutQuad", - "id": "seatedIdle01", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 1, - "resume": true, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedIdle02", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 1, - "resume": true, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedIdle03", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 1, - "resume": true, - "transitions": [ - ] - } - ], - "triggerRandomSwitch": "seatedIdleSwitch" - }, - "id": "seatedIdle", - "type": "randomSwitchStateMachine" - } - ], - "data": { - "alpha": 1, - "alphaVar": "talkOverlayAlpha", - "boneSet": "upperBody" - }, - "id": "seatedTalkOverlay", - "type": "overlay" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 44, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_agree_headnod.fbx" - }, - "id": "seatedReactionPositiveHeadNod", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 78, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_agree_headnodyes.fbx" - }, - "id": "seatedReactionPositiveHeadNodYes", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 65, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_agree_longheadnod.fbx" - }, - "id": "seatedReactionPositiveLongHeadNod", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 78, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_agree_cheer.fbx" - }, - "id": "seatedReactionPositiveCheer", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 64, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_agree_acknowledge.fbx" - }, - "id": "seatedReactionPositiveAcknowledge", - "type": "clip" - } - ], - "data": { - "currentState": "seatedReactionPositiveHeadNod", - "endFrame": 30, - "loopFlag": false, - "randomSwitchTimeMax": 12, - "randomSwitchTimeMin": 7, - "startFrame": 0, - "states": [ - { - "id": "seatedReactionPositiveHeadNod", - "interpDuration": 1, - "interpTarget": 1, - "priority": 1, - "resume": false, - "transitions": [ - ] - }, - { - "id": "seatedReactionPositiveHeadNodYes", - "interpDuration": 1, - "interpTarget": 1, - "priority": 1, - "resume": false, - "transitions": [ - ] - }, - { - "id": "seatedReactionPositiveLongHeadNod", - "interpDuration": 1, - "interpTarget": 1, - "priority": 1, - "resume": false, - "transitions": [ - ] - }, - { - "id": "seatedReactionPositiveCheer", - "interpDuration": 1, - "interpTarget": 1, - "priority": 1, - "resume": false, - "transitions": [ - ] - }, - { - "id": "seatedReactionPositiveAcknowledge", - "interpDuration": 1, - "interpTarget": 1, - "priority": 1, - "resume": false, - "transitions": [ - ] - } - ], - "timeScale": 1, - "triggerRandomSwitch": "", - "url": "qrc:///avatar/animations/sitting_idle.fbx" - }, - "id": "seatedReactionPositive", - "type": "randomSwitchStateMachine" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 64, - "loopFlag": false, - "startFrame": 0, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_disagree_headshake.fbx" - }, - "id": "seatedReactionNegativeDisagreeHeadshake", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 99, - "loopFlag": false, - "startFrame": 0, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_disagree_drophead.fbx" - }, - "id": "seatedReactionNegativeDisagreeDropHead", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 124, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_disagree_disbelief.fbx" - }, - "id": "seatedReactionNegativeDisagreeDisbelief", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 70, - "loopFlag": false, - "startFrame": 0, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_disagree_dismiss.fbx" - }, - "id": "seatedReactionNegativeDisagreeDismiss", - "type": "clip" - } - ], - "data": { - "currentState": "seatedReactionNegativeDisagreeHeadshake", - "endFrame": 30, - "loopFlag": false, - "randomSwitchTimeMax": 10, - "randomSwitchTimeMin": 1, - "startFrame": 0, - "states": [ - { - "easingType": "easeInOutQuad", - "id": "seatedReactionNegativeDisagreeHeadshake", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionNegativeDisagreeDropHead", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionNegativeDisagreeDisbelief", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionNegativeDisagreeDismiss", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - ] - } - ], - "timeScale": 1, - "triggerRandomSwitch": "", - "url": "qrc:///avatar/animations/sitting_idle.fbx" - }, - "id": "seatedReactionNegative", - "type": "randomSwitchStateMachine" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 32, - "loopFlag": false, - "startFrame": 0, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_raisehand_all.fbx" - }, - "id": "seatedReactionRaiseHandIntro", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 345, - "loopFlag": true, - "startFrame": 32, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_raisehand_all.fbx" - }, - "id": "seatedReactionRaiseHandLoop", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 400, - "loopFlag": false, - "startFrame": 345, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_raisehand_all.fbx" - }, - "id": "seatedReactionRaiseHandOutro", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 18, - "loopFlag": false, - "startFrame": 0, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_raisehand02_all.fbx" - }, - "id": "seatedReactionRaiseHand02Intro", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 378, - "loopFlag": true, - "startFrame": 18, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_raisehand02_all.fbx" - }, - "id": "seatedReactionRaiseHand02Loop", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 435, - "loopFlag": false, - "startFrame": 378, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_raisehand02_all.fbx" - }, - "id": "seatedReactionRaiseHand02Outro", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 15, - "loopFlag": false, - "startFrame": 0, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_raisehand03_all.fbx" - }, - "id": "seatedReactionRaiseHand03Intro", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 233, - "loopFlag": true, - "mirrorFlag": false, - "startFrame": 15, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_raisehand03_all.fbx" - }, - "id": "seatedReactionRaiseHand03Loop", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 296, - "loopFlag": false, - "mirrorFlag": false, - "startFrame": 233, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_raisehand03_all.fbx" - }, - "id": "seatedReactionRaiseHand03Outro", - "type": "clip" - } - ], - "data": { - "currentState": "seatedReactionRaiseHandIntro", - "randomSwitchTimeMax": 10, - "randomSwitchTimeMin": 1, - "states": [ - { - "easingType": "easeInOutQuad", - "id": "seatedReactionRaiseHandIntro", - "interpDuration": 8, - "interpTarget": 9, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionRaiseHandLoop", - "var": "seatedReactionRaiseHandIntroOnDone" - } - ] - }, - { - "id": "seatedReactionRaiseHandLoop", - "interpDuration": 1, - "interpTarget": 1, - "priority": 0, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionRaiseHandOutro", - "var": "reactionRaiseHandDisabled" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionRaiseHandOutro", - "interpDuration": 12, - "interpTarget": 12, - "interpType": "evaluateBoth", - "priority": 0, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionRaiseHandLoop", - "var": "reactionRaiseHandEnabled" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionRaiseHand02Intro", - "interpDuration": 8, - "interpTarget": 8, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionRaiseHand02Loop", - "var": "seatedReactionRaiseHand02IntroOnDone" - } - ] - }, - { - "id": "seatedReactionRaiseHand02Loop", - "interpDuration": 1, - "interpTarget": 1, - "priority": 0, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionRaiseHand02Outro", - "var": "reactionRaiseHandDisabled" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionRaiseHand02Outro", - "interpDuration": 12, - "interpTarget": 12, - "interpType": "evaluateBoth", - "priority": 0, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionRaiseHand02Loop", - "var": "reactionRaiseHandEnabled" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionRaiseHand03Intro", - "interpDuration": 8, - "interpTarget": 8, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionRaiseHand03Loop", - "var": "seatedReactionRaiseHand03IntroOnDone" - } - ] - }, - { - "id": "seatedReactionRaiseHand03Loop", - "interpDuration": 1, - "interpTarget": 1, - "priority": 0, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionRaiseHand03Outro", - "var": "reactionRaiseHandDisabled" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionRaiseHand03Outro", - "interpDuration": 12, - "interpTarget": 12, - "interpType": "evaluateBoth", - "priority": 0, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionRaiseHand03Loop", - "var": "reactionRaiseHandEnabled" - } - ] - } - ], - "triggerRandomSwitch": "" - }, - "id": "seatedReactionRaiseHand", - "type": "randomSwitchStateMachine" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 12, - "loopFlag": false, - "startFrame": 0, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_clap_all.fbx" - }, - "id": "seatedReactionApplaudIntro", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 76, - "loopFlag": true, - "startFrame": 12, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_clap_all.fbx" - }, - "id": "seatedReactionApplaudLoop", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 99, - "loopFlag": false, - "startFrame": 76, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_clap_all.fbx" - }, - "id": "seatedReactionApplaudOutro", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 12, - "loopFlag": false, - "startFrame": 0, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_clap02_all.fbx" - }, - "id": "seatedReactionApplaud02Intro", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 112, - "loopFlag": true, - "startFrame": 12, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_clap02_all.fbx" - }, - "id": "seatedReactionApplaud02Loop", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 132, - "loopFlag": false, - "startFrame": 112, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_clap02_all.fbx" - }, - "id": "seatedReactionApplaud02Outro", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 17, - "loopFlag": false, - "startFrame": 0, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_clap03_all.fbx" - }, - "id": "seatedReactionApplaud03Intro", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 111, - "loopFlag": true, - "startFrame": 17, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_clap03_all.fbx" - }, - "id": "seatedReactionApplaud03Loop", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 136, - "loopFlag": false, - "startFrame": 111, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_clap03_all.fbx" - }, - "id": "seatedReactionApplaud03Outro", - "type": "clip" - } - ], - "data": { - "currentState": "seatedReactionApplaudIntro", - "randomSwitchTimeMax": 10, - "randomSwitchTimeMin": 1, - "states": [ - { - "easingType": "easeInOutQuad", - "id": "seatedReactionApplaudIntro", - "interpDuration": 8, - "interpTarget": 8, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionApplaudLoop", - "var": "seatedReactionApplaudIntroOnDone" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionApplaudLoop", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": 0, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionApplaudOutro", - "var": "reactionApplaudDisabled" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionApplaudOutro", - "interpDuration": 12, - "interpTarget": 12, - "interpType": "evaluateBoth", - "priority": 0, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionApplaudLoop", - "var": "reactionApplaudEnabled" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionApplaud02Intro", - "interpDuration": 8, - "interpTarget": 8, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionApplaud02Loop", - "var": "seatedReactionApplaud02IntroOnDone" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionApplaud02Loop", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": 0, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionApplaud02Outro", - "var": "reactionApplaudDisabled" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionApplaud02Outro", - "interpDuration": 12, - "interpTarget": 12, - "interpType": "evaluateBoth", - "priority": 0, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionApplaud02Loop", - "var": "reactionApplaudEnabled" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionApplaud03Intro", - "interpDuration": 8, - "interpTarget": 8, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionApplaud03Loop", - "var": "seatedReactionApplaud03IntroOnDone" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionApplaud03Loop", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": 0, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionApplaud03Outro", - "var": "reactionApplaudDisabled" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionApplaud03Outro", - "interpDuration": 12, - "interpTarget": 12, - "interpType": "evaluateBoth", - "priority": 0, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionApplaud03Loop", - "var": "reactionApplaudEnabled" - } - ] - } - ], - "triggerRandomSwitch": "" - }, - "id": "seatedReactionApplaud", - "type": "randomSwitchStateMachine" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 21, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_point_all.fbx" - }, - "id": "seatedReactionPointIntro", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 100, - "loopFlag": true, - "startFrame": 21, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_point_all.fbx" - }, - "id": "seatedReactionPointLoop", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 134, - "loopFlag": false, - "mirrorFlag": false, - "startFrame": 100, - "timeScale": 1, - "url": "qrc:///avatar/animations/sitting_emote_point_all.fbx" - }, - "id": "seatedReactionPointOutro", - "type": "clip" - } - ], - "data": { - "currentState": "seatedReactionPointIntro", - "randomSwitchTimeMax": 10, - "randomSwitchTimeMin": 1, - "states": [ - { - "easingType": "easeInOutQuad", - "id": "seatedReactionPointIntro", - "interpDuration": 18, - "interpTarget": 18, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionPointLoop", - "var": "seatedReactionPointIntroOnDone" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionPointLoop", - "interpDuration": 18, - "interpTarget": 18, - "interpType": "evaluateBoth", - "priority": 0, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionPointOutro", - "var": "reactionPointDisabled" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionPointOutro", - "interpDuration": 18, - "interpTarget": 18, - "interpType": "evaluateBoth", - "priority": 0, - "resume": false, - "transitions": [ - { - "randomSwitchState": "seatedReactionPointLoop", - "var": "reactionPointEnabled" - } - ] - } - ], - "triggerRandomSwitch": "" - }, - "id": "seatedReactionPoint", - "type": "randomSwitchStateMachine" - } - ], - "data": { - "currentState": "seatedTalkOverlay", - "states": [ - { - "easingType": "easeInOutQuad", - "id": "seatedTalkOverlay", - "interpDuration": 25, - "interpTarget": 25, - "interpType": "evaluateBoth", - "transitions": [ - { - "state": "seatedReactionPositive", - "var": "reactionPositiveTrigger" - }, - { - "state": "seatedReactionNegative", - "var": "reactionNegativeTrigger" - }, - { - "state": "seatedReactionRaiseHand", - "var": "reactionRaiseHandEnabled" - }, - { - "state": "seatedReactionApplaud", - "var": "reactionApplaudEnabled" - }, - { - "state": "seatedReactionPoint", - "var": "reactionPointEnabled" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionPositive", - "interpDuration": 12, - "interpTarget": 12, - "interpType": "evaluateBoth", - "transitions": [ - { - "state": "seatedTalkOverlay", - "var": "seatedReactionPositiveHeadNodOnDone" - }, - { - "state": "seatedTalkOverlay", - "var": "seatedReactionPositiveHeadNodYesOnDone" - }, - { - "state": "seatedTalkOverlay", - "var": "seatedReactionPositiveLongHeadNodOnDone" - }, - { - "state": "seatedTalkOverlay", - "var": "seatedReactionPositiveCheerOnDone" - }, - { - "state": "seatedTalkOverlay", - "var": "seatedReactionPositiveAcknowledgeOnDone" - }, - { - "state": "seatedReactionNegative", - "var": "reactionNegativeTrigger" - }, - { - "state": "seatedReactionRaiseHand", - "var": "reactionRaiseHandEnabled" - }, - { - "state": "seatedReactionApplaud", - "var": "reactionApplaudEnabled" - }, - { - "state": "seatedReactionPoint", - "var": "reactionPointEnabled" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionNegative", - "interpDuration": 12, - "interpTarget": 12, - "interpType": "evaluateBoth", - "transitions": [ - { - "state": "seatedReactionPositive", - "var": "reactionPositiveTrigger" - }, - { - "state": "seatedTalkOverlay", - "var": "seatedReactionNegativeDisagreeHeadshakeOnDone" - }, - { - "state": "seatedTalkOverlay", - "var": "seatedReactionNegativeDisagreeDropHeadOnDone" - }, - { - "state": "seatedTalkOverlay", - "var": "seatedReactionNegativeDisagreeDisbeliefOnDone" - }, - { - "state": "seatedTalkOverlay", - "var": "seatedReactionNegativeDisagreeDismissOnDone" - }, - { - "state": "seatedReactionRaiseHand", - "var": "reactionRaiseHandEnabled" - }, - { - "state": "seatedReactionApplaud", - "var": "reactionApplaudEnabled" - }, - { - "state": "seatedReactionPoint", - "var": "reactionPointEnabled" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionRaiseHand", - "interpDuration": 12, - "interpTarget": 12, - "interpType": "evaluateBoth", - "transitions": [ - { - "state": "seatedReactionNegative", - "var": "reactionNegativeTrigger" - }, - { - "state": "seatedReactionPositive", - "var": "reactionPositiveTrigger" - }, - { - "state": "seatedTalkOverlay", - "var": "reactionRaiseHandDisabled" - }, - { - "state": "seatedReactionApplaud", - "var": "reactionApplaudEnabled" - }, - { - "state": "seatedReactionPoint", - "var": "reactionPointEnabled" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionApplaud", - "interpDuration": 12, - "interpTarget": 12, - "interpType": "evaluateBoth", - "transitions": [ - { - "state": "seatedReactionNegative", - "var": "reactionNegativeTrigger" - }, - { - "state": "seatedReactionPositive", - "var": "reactionPositiveTrigger" - }, - { - "state": "seatedReactionRaiseHand", - "var": "reactionRaiseHandEnabled" - }, - { - "state": "seatedTalkOverlay", - "var": "reactionApplaudDisabled" - }, - { - "state": "seatedReactionPoint", - "var": "reactionPointEnabled" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "seatedReactionPoint", - "interpDuration": 12, - "interpTarget": 12, - "interpType": "evaluateBoth", - "transitions": [ - { - "state": "seatedReactionNegative", - "var": "reactionNegativeTrigger" - }, - { - "state": "seatedReactionPositive", - "var": "reactionPositiveTrigger" - }, - { - "state": "seatedReactionRaiseHand", - "var": "reactionRaiseHandEnabled" - }, - { - "state": "seatedReactionApplaud", - "var": "reactionApplaudEnabled" - }, - { - "state": "seatedTalkOverlay", - "var": "reactionPointDisabled" - } - ] - } - ] - }, - "id": "seated", - "type": "stateMachine" - }, - { - "children": [ - { - "children": [ - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 500, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/talk.fbx" - }, - "id": "talk", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 325, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/talk02.fbx" - }, - "id": "talk02", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 300, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/talk03.fbx" - }, - "id": "talk03", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 500, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/talk04.fbx" - }, - "id": "talk04", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 215, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/talk_armsdown.fbx" - }, - "id": "talk_armsdown", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 500, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/talk_lefthand.fbx" - }, - "id": "talk_lefthand", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 502, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/talk_righthand.fbx" - }, - "id": "talk_righthand", - "type": "clip" - } - ], - "data": { - "currentState": "talk", - "randomSwitchTimeMax": 12, - "randomSwitchTimeMin": 7, - "states": [ - { - "easingType": "easeInOutQuad", - "id": "talk", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 0.33, - "resume": true, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "talk02", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 0.33, - "resume": true, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "talk03", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 0.33, - "resume": true, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "talk04", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 0.33, - "resume": true, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "talk_armsdown", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 0.33, - "resume": true, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "talk_lefthand", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 0.33, - "resume": true, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "talk_righthand", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 0.33, - "resume": true, - "transitions": [ - ] - } - ], - "triggerRandomSwitch": "idleTalkSwitch" - }, - "id": "idleTalk", - "type": "randomSwitchStateMachine" - }, { "children": [ { @@ -2045,26 +596,99 @@ "children": [ ], "data": { - "endFrame": 300, + "endFrame": 271, "loopFlag": true, "startFrame": 1, "timeScale": 1, - "url": "qrc:///avatar/animations/idle.fbx" + "url": "qrc:///avatar/animations/sitting_talk02.fbx" }, - "id": "masterIdle1", + "id": "seatedTalk02", "type": "clip" }, { "children": [ ], "data": { - "endFrame": 400, + "endFrame": 252, "loopFlag": true, "startFrame": 1, - "timeScale": 0.75, - "url": "qrc:///avatar/animations/idle02.fbx" + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_talk03.fbx" }, - "id": "masterIdle2", + "id": "seatedTalk03", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 442, + "loopFlag": true, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_talk04.fbx" + }, + "id": "seatedTalk04", + "type": "clip" + } + ], + "data": { + "currentState": "seatedTalk02", + "randomSwitchTimeMax": 12, + "randomSwitchTimeMin": 7, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "seatedTalk02", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 1, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedTalk03", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 1, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedTalk04", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 1, + "resume": true, + "transitions": [ + ] + } + ], + "triggerRandomSwitch": "seatedTalkSwitch" + }, + "id": "seatedTalk", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 800, + "loopFlag": true, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle.fbx" + }, + "id": "seatedIdle01", "type": "clip" }, { @@ -2073,893 +697,207 @@ "data": { "endFrame": 800, "loopFlag": true, - "startFrame": 1, + "startFrame": 0, "timeScale": 1, - "url": "qrc:///avatar/animations/idle03.fbx" + "url": "qrc:///avatar/animations/sitting_idle02.fbx" }, - "id": "masterIdle3", + "id": "seatedIdle02", "type": "clip" }, { "children": [ ], "data": { - "endFrame": 902, + "endFrame": 800, "loopFlag": true, - "startFrame": 1, + "startFrame": 0, "timeScale": 1, - "url": "qrc:///avatar/animations/idle04.fbx" + "url": "qrc:///avatar/animations/sitting_idle03.fbx" }, - "id": "masterIdle4", + "id": "seatedIdle03", "type": "clip" } ], "data": { - "currentState": "masterIdle1", - "randomSwitchTimeMax": 30, + "currentState": "seatedIdle01", + "randomSwitchTimeMax": 20, "randomSwitchTimeMin": 10, "states": [ { "easingType": "easeInOutQuad", - "id": "masterIdle1", - "interpDuration": 30, - "interpTarget": 30, + "id": "seatedIdle01", + "interpDuration": 15, + "interpTarget": 15, "interpType": "evaluateBoth", - "priority": 0.25, + "priority": 1, "resume": true, "transitions": [ ] }, { "easingType": "easeInOutQuad", - "id": "masterIdle2", - "interpDuration": 30, - "interpTarget": 30, + "id": "seatedIdle02", + "interpDuration": 15, + "interpTarget": 15, "interpType": "evaluateBoth", - "priority": 0.25, + "priority": 1, "resume": true, "transitions": [ ] }, { "easingType": "easeInOutQuad", - "id": "masterIdle3", - "interpDuration": 30, - "interpTarget": 30, + "id": "seatedIdle03", + "interpDuration": 15, + "interpTarget": 15, "interpType": "evaluateBoth", - "priority": 0.25, - "resume": true, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "masterIdle4", - "interpDuration": 30, - "interpTarget": 30, - "interpType": "evaluateBoth", - "priority": 0.25, + "priority": 1, "resume": true, "transitions": [ ] } ], - "triggerRandomSwitch": "masterIdleSwitch" + "triggerRandomSwitch": "seatedIdleSwitch" }, - "id": "masterIdle", - "type": "randomSwitchStateMachine" - }, - { - "children": [ - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 91, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_once_slownod.fbx" - }, - "id": "idle_once_slownod", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 154, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_once_headtilt.fbx" - }, - "id": "idle_once_headtilt", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 491, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_once_shiftheelpivot.fbx" - }, - "id": "idle_once_shiftheelpivot", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 1620, - "loopFlag": false, - "startFrame": 1, - "timeScale": 0.7, - "url": "qrc:///avatar/animations/idleWS_all.fbx" - }, - "id": "idleWS_all", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 324, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_once_lookaround.fbx" - }, - "id": "idle_once_lookaround", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 169, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_once_neckstretch.fbx" - }, - "id": "idle_once_neckstretch", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 375, - "loopFlag": false, - "startFrame": 1, - "timeScale": 0.7, - "url": "qrc:///avatar/animations/idle_once_lookleftright.fbx" - }, - "id": "idle_once_lookleftright", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 429, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_once_fidget.fbx" - }, - "id": "idle_once_fidget", - "type": "clip" - } - ], - "data": { - "currentState": "idle_once_slownod", - "states": [ - { - "easingType": "easeInOutQuad", - "id": "idle_once_slownod", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 0.2, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "idle_once_headtilt", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 0.2, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "idle_once_shiftheelpivot", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 0.2, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "idleWS_all", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 0.2, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "idle_once_lookaround", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 0.2, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "idle_once_neckstretch", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 0.2, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "idle_once_lookleftright", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 0.2, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "idle_once_fidget", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 0.2, - "resume": false, - "transitions": [ - ] - } - ] - }, - "id": "movement", - "type": "randomSwitchStateMachine" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 80, - "loopFlag": false, - "startFrame": 1, - "startFrameVar": "", - "timeScale": 0.65, - "url": "qrc:///avatar/animations/idle_LFF_all.fbx" - }, - "id": "transitionToAltIdle1", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 80, - "loopFlag": false, - "startFrame": 1, - "timeScale": 0.65, - "url": "qrc:///avatar/animations/idle_RFF_all.fbx" - }, - "id": "transitionToAltIdle2", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 388, - "loopFlag": true, - "startFrame": 80, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_LFF_all.fbx" - }, - "id": "altIdle1", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 388, - "loopFlag": true, - "startFrame": 80, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_RFF_all.fbx" - }, - "id": "altIdle2", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 472, - "loopFlag": false, - "startFrame": 388, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_LFF_all.fbx" - }, - "id": "alt1ToMasterIdle", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 453, - "loopFlag": false, - "startFrame": 388, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_RFF_all.fbx" - }, - "id": "alt2ToMasterIdle", - "type": "clip" - } - ], - "data": { - "currentState": "transitionToAltIdle1", - "states": [ - { - "easingType": "easeInOutQuad", - "id": "transitionToAltIdle1", - "interpDuration": 20, - "interpTarget": 20, - "interpType": "evaluateBoth", - "priority": 0.5, - "resume": false, - "transitions": [ - { - "randomSwitchState": "altIdle1", - "var": "transitionToAltIdle1OnDone" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "transitionToAltIdle2", - "interpDuration": 20, - "interpTarget": 20, - "interpType": "evaluateBoth", - "priority": 0.5, - "resume": false, - "transitions": [ - { - "randomSwitchState": "altIdle2", - "var": "transitionToAltIdle2OnDone" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "altIdle1", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": -1, - "resume": false, - "transitions": [ - { - "randomSwitchState": "alt1ToMasterIdle", - "var": "finishAltIdle2" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "altIdle2", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": -1, - "resume": false, - "transitions": [ - { - "randomSwitchState": "alt2ToMasterIdle", - "var": "finishAltIdle2" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "alt1ToMasterIdle", - "interpDuration": 24, - "interpTarget": 24, - "interpType": "evaluateBoth", - "priority": -1, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "alt2ToMasterIdle", - "interpDuration": 24, - "interpTarget": 24, - "interpType": "evaluateBoth", - "priority": -1, - "resume": false, - "transitions": [ - ] - } - ], - "transitionVar": "finishAltIdle2", - "triggerTimeMax": 60, - "triggerTimeMin": 10 - }, - "id": "alternateIdle", - "type": "randomSwitchStateMachine" - } - ], - "data": { - "currentState": "movement", - "states": [ - { - "easingType": "easeInOutQuad", - "id": "movement", - "interpDuration": 30, - "interpTarget": 30, - "interpType": "evaluateBoth", - "priority": 0.6, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "alternateIdle", - "interpDuration": 30, - "interpTarget": 30, - "interpType": "evaluateBoth", - "priority": 0.4, - "resume": false, - "transitions": [ - ] - } - ] - }, - "id": "fidget", + "id": "seatedIdle", "type": "randomSwitchStateMachine" } ], "data": { - "currentState": "masterIdle", - "states": [ - { - "easingType": "easeInOutQuad", - "id": "masterIdle", - "interpDuration": 30, - "interpTarget": 30, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - { - "randomSwitchState": "fidget", - "var": "timeToFidget" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "fidget", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": -1, - "resume": false, - "transitions": [ - { - "randomSwitchState": "masterIdle", - "var": "idle_once_slownodOnDone" - }, - { - "randomSwitchState": "masterIdle", - "var": "idle_once_headtiltOnDone" - }, - { - "randomSwitchState": "masterIdle", - "var": "idle_once_shiftheelpivotOnDone" - }, - { - "randomSwitchState": "masterIdle", - "var": "idleWS_allOnDone" - }, - { - "randomSwitchState": "masterIdle", - "var": "idle_once_lookaroundOnDone" - }, - { - "randomSwitchState": "masterIdle", - "var": "idle_once_neckstretchOnDone" - }, - { - "randomSwitchState": "masterIdle", - "var": "idle_once_lookleftrightOnDone" - }, - { - "randomSwitchState": "masterIdle", - "var": "idle_once_fidgetOnDone" - }, - { - "randomSwitchState": "masterIdle", - "var": "alt1ToMasterIdleOnDone" - }, - { - "randomSwitchState": "masterIdle", - "var": "alt2ToMasterIdleOnDone" - } - ] - } - ], - "transitionVar": "timeToFidget", - "triggerTimeMax": 50, - "triggerTimeMin": 10 + "alpha": 1, + "alphaVar": "talkOverlayAlpha", + "boneSet": "upperBody" }, - "id": "idleStand", - "type": "randomSwitchStateMachine" - } - ], - "data": { - "alpha": 1, - "alphaVar": "talkOverlayAlpha", - "boneSet": "upperBody" - }, - "id": "idleTalkOverlay", - "type": "overlay" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 64, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/emote_agree_acknowledge.fbx" - }, - "id": "positiveAcknowledge", - "type": "clip" + "id": "seatedTalkOverlay", + "type": "overlay" }, - { - "children": [ - ], - "data": { - "endFrame": 55, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/emote_agree_headnod.fbx" - }, - "id": "positiveHeadNod", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 94, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/emote_agree_headnodyes.fbx" - }, - "id": "positiveHeadNodYes", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 68, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/emote_agree_longheadnod.fbx" - }, - "id": "positiveLongHeadNod", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 84, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/emote_agree_thoughtfulheadnod.fbx" - }, - "id": "positiveThoughtfulHeadNod", - "type": "clip" - } - ], - "data": { - "currentState": "positiveAcknowledge", - "randomSwitchTimeMax": 10, - "randomSwitchTimeMin": 1, - "states": [ - { - "easingType": "easeInOutQuad", - "id": "positiveAcknowledge", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "positiveHeadNod", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "positiveHeadNodYes", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "positiveLongHeadNod", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "positiveThoughtfulHeadNod", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": 0.33, - "resume": false, - "transitions": [ - ] - } - ], - "triggerRandomSwitch": "" - }, - "id": "reactionPositive", - "type": "randomSwitchStateMachine" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 72, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/emote_disagree_annoyedheadshake.fbx" - }, - "id": "negativeAnnoyedHeadshake", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 92, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/emote_disagree_thoughtfulheadshake.fbx" - }, - "id": "negativeThoughtfulHeadshake", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 158, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/emote_disagree_drophead.fbx" - }, - "id": "negativeDropHead", - "type": "clip" - } - ], - "data": { - "currentState": "negativeAnnoyedHeadshake", - "randomSwitchTimeMax": 10, - "randomSwitchTimeMin": 1, - "states": [ - { - "easingType": "easeInOutQuad", - "id": "negativeAnnoyedHeadshake", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "negativeThoughtfulHeadshake", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "negativeDropHead", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - ] - } - ] - }, - "id": "reactionNegative", - "type": "randomSwitchStateMachine" - }, - { - "children": [ { "children": [ { "children": [ ], "data": { - "endFrame": 18, + "endFrame": 44, "loopFlag": false, "startFrame": 1, "timeScale": 1, - "url": "qrc:///avatar/animations/emote_raisehand01_all.fbx" + "url": "qrc:///avatar/animations/sitting_emote_agree_headnod.fbx" }, - "id": "raiseHand01Intro", + "id": "seatedReactionPositiveHeadNod", "type": "clip" }, { "children": [ ], "data": { - "endFrame": 378, - "loopFlag": true, - "startFrame": 18, - "timeScale": 1, - "url": "qrc:///avatar/animations/emote_raisehand01_all.fbx" - }, - "id": "raiseHand01Loop", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 435, + "endFrame": 78, "loopFlag": false, - "startFrame": 378, + "startFrame": 1, "timeScale": 1, - "url": "qrc:///avatar/animations/emote_raisehand01_all.fbx" + "url": "qrc:///avatar/animations/sitting_emote_agree_headnodyes.fbx" }, - "id": "raiseHand01Outro", + "id": "seatedReactionPositiveHeadNodYes", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 65, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_agree_longheadnod.fbx" + }, + "id": "seatedReactionPositiveLongHeadNod", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 78, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_agree_cheer.fbx" + }, + "id": "seatedReactionPositiveCheer", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 64, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_agree_acknowledge.fbx" + }, + "id": "seatedReactionPositiveAcknowledge", "type": "clip" } ], "data": { - "currentState": "raiseHand01Intro", - "randomSwitchTimeMax": 10, - "randomSwitchTimeMin": 1, + "currentState": "seatedReactionPositiveHeadNod", + "endFrame": 30, + "loopFlag": false, + "randomSwitchTimeMax": 12, + "randomSwitchTimeMin": 7, + "startFrame": 0, "states": [ { - "easingType": "easeInOutQuad", - "id": "raiseHand01Intro", - "interpDuration": 10, - "interpTarget": 10, - "interpType": "evaluateBoth", + "id": "seatedReactionPositiveHeadNod", + "interpDuration": 1, + "interpTarget": 1, "priority": 1, "resume": false, "transitions": [ - { - "randomSwitchState": "raiseHand01Loop", - "var": "raiseHand01IntroOnDone" - } ] }, { - "id": "raiseHand01Loop", + "id": "seatedReactionPositiveHeadNodYes", "interpDuration": 1, "interpTarget": 1, - "priority": 0, + "priority": 1, "resume": false, "transitions": [ - { - "randomSwitchState": "raiseHand01Outro", - "var": "reactionRaiseHandDisabled" - } ] }, { - "id": "raiseHand01Outro", - "interpDuration": 6, - "interpTarget": 6, - "priority": 0, + "id": "seatedReactionPositiveLongHeadNod", + "interpDuration": 1, + "interpTarget": 1, + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "id": "seatedReactionPositiveCheer", + "interpDuration": 1, + "interpTarget": 1, + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "id": "seatedReactionPositiveAcknowledge", + "interpDuration": 1, + "interpTarget": 1, + "priority": 1, "resume": false, "transitions": [ - { - "randomSwitchState": "raiseHand01Loop", - "var": "reactionRaiseHandEnabled" - } ] } ], - "triggerRandomSwitch": "" + "timeScale": 1, + "triggerRandomSwitch": "", + "url": "qrc:///avatar/animations/sitting_idle.fbx" }, - "id": "raiseHand01", + "id": "seatedReactionPositive", "type": "randomSwitchStateMachine" }, { @@ -2968,92 +906,113 @@ "children": [ ], "data": { - "endFrame": 19, + "endFrame": 64, + "loopFlag": false, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_disagree_headshake.fbx" + }, + "id": "seatedReactionNegativeDisagreeHeadshake", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 99, + "loopFlag": false, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_disagree_drophead.fbx" + }, + "id": "seatedReactionNegativeDisagreeDropHead", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 124, "loopFlag": false, "startFrame": 1, "timeScale": 1, - "url": "qrc:///avatar/animations/emote_raisehand03_all.fbx" + "url": "qrc:///avatar/animations/sitting_emote_disagree_disbelief.fbx" }, - "id": "raiseHand03Intro", + "id": "seatedReactionNegativeDisagreeDisbelief", "type": "clip" }, { "children": [ ], "data": { - "endFrame": 237, - "loopFlag": true, - "startFrame": 19, - "timeScale": 1, - "url": "qrc:///avatar/animations/emote_raisehand03_all.fbx" - }, - "id": "raiseHand03Loop", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 300, + "endFrame": 70, "loopFlag": false, - "startFrame": 237, + "startFrame": 0, "timeScale": 1, - "url": "qrc:///avatar/animations/emote_raisehand03_all.fbx" + "url": "qrc:///avatar/animations/sitting_emote_disagree_dismiss.fbx" }, - "id": "raiseHand03Outro", + "id": "seatedReactionNegativeDisagreeDismiss", "type": "clip" } ], "data": { - "currentState": "raiseHand03Intro", + "currentState": "seatedReactionNegativeDisagreeHeadshake", + "endFrame": 30, + "loopFlag": false, "randomSwitchTimeMax": 10, "randomSwitchTimeMin": 1, + "startFrame": 0, "states": [ { "easingType": "easeInOutQuad", - "id": "raiseHand03Intro", - "interpDuration": 15, - "interpTarget": 15, + "id": "seatedReactionNegativeDisagreeHeadshake", + "interpDuration": 1, + "interpTarget": 1, "interpType": "evaluateBoth", "priority": 1, "resume": false, "transitions": [ - { - "randomSwitchState": "raiseHand03Loop", - "var": "raiseHand03IntroOnDone" - } ] }, { - "id": "raiseHand03Loop", + "easingType": "easeInOutQuad", + "id": "seatedReactionNegativeDisagreeDropHead", "interpDuration": 1, "interpTarget": 1, - "priority": 0, + "interpType": "evaluateBoth", + "priority": 1, "resume": false, "transitions": [ - { - "randomSwitchState": "raiseHand03Outro", - "var": "reactionRaiseHandDisabled" - } ] }, { - "id": "raiseHand03Outro", - "interpDuration": 6, - "interpTarget": 6, - "priority": 0, + "easingType": "easeInOutQuad", + "id": "seatedReactionNegativeDisagreeDisbelief", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionNegativeDisagreeDismiss", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, "resume": false, "transitions": [ - { - "randomSwitchState": "raiseHand03Loop", - "var": "reactionRaiseHandEnabled" - } ] } ], - "triggerRandomSwitch": "" + "timeScale": 1, + "triggerRandomSwitch": "", + "url": "qrc:///avatar/animations/sitting_idle.fbx" }, - "id": "raiseHand03", + "id": "seatedReactionNegative", "type": "randomSwitchStateMachine" }, { @@ -3064,11 +1023,11 @@ "data": { "endFrame": 32, "loopFlag": false, - "startFrame": 1, + "startFrame": 0, "timeScale": 1, - "url": "qrc:///avatar/animations/emote_raisehand04_all.fbx" + "url": "qrc:///avatar/animations/sitting_emote_raisehand_all.fbx" }, - "id": "raiseHand04Intro", + "id": "seatedReactionRaiseHandIntro", "type": "clip" }, { @@ -3079,9 +1038,9 @@ "loopFlag": true, "startFrame": 32, "timeScale": 1, - "url": "qrc:///avatar/animations/emote_raisehand04_all.fbx" + "url": "qrc:///avatar/animations/sitting_emote_raisehand_all.fbx" }, - "id": "raiseHand04Loop", + "id": "seatedReactionRaiseHandLoop", "type": "clip" }, { @@ -3092,54 +1051,222 @@ "loopFlag": false, "startFrame": 345, "timeScale": 1, - "url": "qrc:///avatar/animations/emote_raisehand04_all.fbx" + "url": "qrc:///avatar/animations/sitting_emote_raisehand_all.fbx" }, - "id": "raiseHand04Outro", + "id": "seatedReactionRaiseHandOutro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 18, + "loopFlag": false, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_raisehand02_all.fbx" + }, + "id": "seatedReactionRaiseHand02Intro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 378, + "loopFlag": true, + "startFrame": 18, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_raisehand02_all.fbx" + }, + "id": "seatedReactionRaiseHand02Loop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 435, + "loopFlag": false, + "startFrame": 378, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_raisehand02_all.fbx" + }, + "id": "seatedReactionRaiseHand02Outro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": false, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_raisehand03_all.fbx" + }, + "id": "seatedReactionRaiseHand03Intro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 233, + "loopFlag": true, + "mirrorFlag": false, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_raisehand03_all.fbx" + }, + "id": "seatedReactionRaiseHand03Loop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 296, + "loopFlag": false, + "mirrorFlag": false, + "startFrame": 233, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_raisehand03_all.fbx" + }, + "id": "seatedReactionRaiseHand03Outro", "type": "clip" } ], "data": { - "currentState": "raiseHand04Intro", + "currentState": "seatedReactionRaiseHandIntro", "randomSwitchTimeMax": 10, "randomSwitchTimeMin": 1, "states": [ { "easingType": "easeInOutQuad", - "id": "raiseHand04Intro", - "interpDuration": 15, - "interpTarget": 15, + "id": "seatedReactionRaiseHandIntro", + "interpDuration": 8, + "interpTarget": 9, "interpType": "evaluateBoth", "priority": 1, "resume": false, "transitions": [ { - "randomSwitchState": "raiseHand04Loop", - "var": "raiseHand04IntroOnDone" + "randomSwitchState": "seatedReactionRaiseHandLoop", + "var": "seatedReactionRaiseHandIntroOnDone" } ] }, { - "id": "raiseHand04Loop", + "id": "seatedReactionRaiseHandLoop", "interpDuration": 1, "interpTarget": 1, "priority": 0, "resume": false, "transitions": [ { - "randomSwitchState": "raiseHand04Outro", + "randomSwitchState": "seatedReactionRaiseHandOutro", "var": "reactionRaiseHandDisabled" } ] }, { - "id": "raiseHand04Outro", - "interpDuration": 6, - "interpTarget": 6, + "easingType": "easeInOutQuad", + "id": "seatedReactionRaiseHandOutro", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", "priority": 0, "resume": false, "transitions": [ { - "randomSwitchState": "raiseHand04Loop", + "randomSwitchState": "seatedReactionRaiseHandLoop", + "var": "reactionRaiseHandEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionRaiseHand02Intro", + "interpDuration": 8, + "interpTarget": 8, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionRaiseHand02Loop", + "var": "seatedReactionRaiseHand02IntroOnDone" + } + ] + }, + { + "id": "seatedReactionRaiseHand02Loop", + "interpDuration": 1, + "interpTarget": 1, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionRaiseHand02Outro", + "var": "reactionRaiseHandDisabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionRaiseHand02Outro", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionRaiseHand02Loop", + "var": "reactionRaiseHandEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionRaiseHand03Intro", + "interpDuration": 8, + "interpTarget": 8, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionRaiseHand03Loop", + "var": "seatedReactionRaiseHand03IntroOnDone" + } + ] + }, + { + "id": "seatedReactionRaiseHand03Loop", + "interpDuration": 1, + "interpTarget": 1, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionRaiseHand03Outro", + "var": "reactionRaiseHandDisabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionRaiseHand03Outro", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionRaiseHand03Loop", "var": "reactionRaiseHandEnabled" } ] @@ -3147,68 +1274,100 @@ ], "triggerRandomSwitch": "" }, - "id": "raiseHand04", + "id": "seatedReactionRaiseHand", "type": "randomSwitchStateMachine" - } - ], - "data": { - "currentState": "raiseHand01", - "randomSwitchTimeMax": 10, - "randomSwitchTimeMin": 1, - "states": [ - { - "easingType": "easeInOutQuad", - "id": "raiseHand01", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "raiseHand03", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - ] - }, - { - "easingType": "easeInOutQuad", - "id": "raiseHand04", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - ] - } - ] - }, - "id": "reactionRaiseHand", - "type": "randomSwitchStateMachine" - }, - { - "children": [ + }, { "children": [ + { + "children": [ + ], + "data": { + "endFrame": 12, + "loopFlag": false, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_clap_all.fbx" + }, + "id": "seatedReactionApplaudIntro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 76, + "loopFlag": true, + "startFrame": 12, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_clap_all.fbx" + }, + "id": "seatedReactionApplaudLoop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 99, + "loopFlag": false, + "startFrame": 76, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_clap_all.fbx" + }, + "id": "seatedReactionApplaudOutro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 12, + "loopFlag": false, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_clap02_all.fbx" + }, + "id": "seatedReactionApplaud02Intro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 112, + "loopFlag": true, + "startFrame": 12, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_clap02_all.fbx" + }, + "id": "seatedReactionApplaud02Loop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 132, + "loopFlag": false, + "startFrame": 112, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_clap02_all.fbx" + }, + "id": "seatedReactionApplaud02Outro", + "type": "clip" + }, { "children": [ ], "data": { "endFrame": 17, "loopFlag": false, - "startFrame": 1, + "startFrame": 0, "timeScale": 1, - "url": "qrc:///avatar/animations/emote_clap01_all.fbx" + "url": "qrc:///avatar/animations/sitting_emote_clap03_all.fbx" }, - "id": "applaudClap01Intro", + "id": "seatedReactionApplaud03Intro", "type": "clip" }, { @@ -3219,68 +1378,161 @@ "loopFlag": true, "startFrame": 17, "timeScale": 1, - "url": "qrc:///avatar/animations/emote_clap01_all.fbx" + "url": "qrc:///avatar/animations/sitting_emote_clap03_all.fbx" }, - "id": "applaudClap01Loop", + "id": "seatedReactionApplaud03Loop", "type": "clip" }, { "children": [ ], "data": { - "endFrame": 160, + "endFrame": 136, "loopFlag": false, "startFrame": 111, "timeScale": 1, - "url": "qrc:///avatar/animations/emote_clap01_all.fbx" + "url": "qrc:///avatar/animations/sitting_emote_clap03_all.fbx" }, - "id": "applaudClap01Outro", + "id": "seatedReactionApplaud03Outro", "type": "clip" } ], "data": { - "currentState": "applaudClap01Intro", + "currentState": "seatedReactionApplaudIntro", "randomSwitchTimeMax": 10, "randomSwitchTimeMin": 1, "states": [ { "easingType": "easeInOutQuad", - "id": "applaudClap01Intro", - "interpDuration": 15, - "interpTarget": 15, + "id": "seatedReactionApplaudIntro", + "interpDuration": 8, + "interpTarget": 8, "interpType": "evaluateBoth", "priority": 1, "resume": false, "transitions": [ { - "randomSwitchState": "applaudClap01Loop", - "var": "applaudClap01IntroOnDone" + "randomSwitchState": "seatedReactionApplaudLoop", + "var": "seatedReactionApplaudIntroOnDone" } ] }, { - "id": "applaudClap01Loop", + "easingType": "easeInOutQuad", + "id": "seatedReactionApplaudLoop", "interpDuration": 1, "interpTarget": 1, - "priority": 0, - "resume": false, - "transitions": [ - { - "randomSwitchState": "applaudClap01Outro", - "var": "reactionApplaudDisabled" - } - ] - }, - { - "id": "applaudClap01Outro", - "interpDuration": 6, - "interpTarget": 6, "interpType": "evaluateBoth", "priority": 0, "resume": false, "transitions": [ { - "randomSwitchState": "applaudClap01Loop", + "randomSwitchState": "seatedReactionApplaudOutro", + "var": "reactionApplaudDisabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionApplaudOutro", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionApplaudLoop", + "var": "reactionApplaudEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionApplaud02Intro", + "interpDuration": 8, + "interpTarget": 8, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionApplaud02Loop", + "var": "seatedReactionApplaud02IntroOnDone" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionApplaud02Loop", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionApplaud02Outro", + "var": "reactionApplaudDisabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionApplaud02Outro", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionApplaud02Loop", + "var": "reactionApplaudEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionApplaud03Intro", + "interpDuration": 8, + "interpTarget": 8, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionApplaud03Loop", + "var": "seatedReactionApplaud03IntroOnDone" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionApplaud03Loop", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionApplaud03Outro", + "var": "reactionApplaudDisabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionApplaud03Outro", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionApplaud03Loop", "var": "reactionApplaudEnabled" } ] @@ -3288,7 +1540,7 @@ ], "triggerRandomSwitch": "" }, - "id": "applaudClap01", + "id": "seatedReactionApplaud", "type": "randomSwitchStateMachine" }, { @@ -3297,108 +1549,13 @@ "children": [ ], "data": { - "endFrame": 14, + "endFrame": 21, "loopFlag": false, "startFrame": 1, "timeScale": 1, - "url": "qrc:///avatar/animations/emote_clap02_all.fbx" + "url": "qrc:///avatar/animations/sitting_emote_point_all.fbx" }, - "id": "applaudClap02Intro", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 78, - "loopFlag": true, - "startFrame": 14, - "timeScale": 1, - "url": "qrc:///avatar/animations/emote_clap02_all.fbx" - }, - "id": "applaudClap02Loop", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 115, - "loopFlag": false, - "startFrame": 78, - "timeScale": 1, - "url": "qrc:///avatar/animations/emote_clap02_all.fbx" - }, - "id": "applaudClap02Outro", - "type": "clip" - } - ], - "data": { - "currentState": "applaudClap02Intro", - "randomSwitchTimeMax": 10, - "randomSwitchTimeMin": 1, - "states": [ - { - "easingType": "easeInOutQuad", - "id": "applaudClap02Intro", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - { - "randomSwitchState": "applaudClap02Loop", - "var": "applaudClap02IntroOnDone" - } - ] - }, - { - "id": "applaudClap02Loop", - "interpDuration": 1, - "interpTarget": 1, - "priority": 0, - "resume": false, - "transitions": [ - { - "randomSwitchState": "applaudClap02Outro", - "var": "reactionApplaudDisabled" - } - ] - }, - { - "id": "applaudClap02Outro", - "interpDuration": 6, - "interpTarget": 6, - "interpType": "evaluateBoth", - "priority": 0, - "resume": false, - "transitions": [ - { - "randomSwitchState": "applaudClap02Loop", - "var": "reactionApplaudEnabled" - } - ] - } - ], - "triggerRandomSwitch": "" - }, - "id": "applaudClap02", - "type": "randomSwitchStateMachine" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 14, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/emote_clap03_all.fbx" - }, - "id": "applaudClap03Intro", + "id": "seatedReactionPointIntro", "type": "clip" }, { @@ -3407,62 +1564,2047 @@ "data": { "endFrame": 100, "loopFlag": true, - "startFrame": 14, + "startFrame": 21, "timeScale": 1, - "url": "qrc:///avatar/animations/emote_clap03_all.fbx" + "url": "qrc:///avatar/animations/sitting_emote_point_all.fbx" }, - "id": "applaudClap03Loop", + "id": "seatedReactionPointLoop", "type": "clip" }, { "children": [ ], "data": { - "endFrame": 149, + "endFrame": 134, "loopFlag": false, + "mirrorFlag": false, "startFrame": 100, "timeScale": 1, - "url": "qrc:///avatar/animations/emote_clap03_all.fbx" + "url": "qrc:///avatar/animations/sitting_emote_point_all.fbx" }, - "id": "applaudClap03Outro", + "id": "seatedReactionPointOutro", "type": "clip" } ], "data": { - "currentState": "applaudClap03Intro", + "currentState": "seatedReactionPointIntro", "randomSwitchTimeMax": 10, "randomSwitchTimeMin": 1, "states": [ { "easingType": "easeInOutQuad", - "id": "applaudClap03Intro", - "interpDuration": 15, - "interpTarget": 15, + "id": "seatedReactionPointIntro", + "interpDuration": 18, + "interpTarget": 18, "interpType": "evaluateBoth", "priority": 1, "resume": false, "transitions": [ { - "randomSwitchState": "applaudClap03Loop", - "var": "applaudClap03IntroOnDone" + "randomSwitchState": "seatedReactionPointLoop", + "var": "seatedReactionPointIntroOnDone" } ] }, { - "id": "applaudClap03Loop", + "easingType": "easeInOutQuad", + "id": "seatedReactionPointLoop", + "interpDuration": 18, + "interpTarget": 18, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionPointOutro", + "var": "reactionPointDisabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionPointOutro", + "interpDuration": 18, + "interpTarget": 18, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionPointLoop", + "var": "reactionPointEnabled" + } + ] + } + ], + "triggerRandomSwitch": "" + }, + "id": "seatedReactionPoint", + "type": "randomSwitchStateMachine" + } + ], + "data": { + "currentState": "seatedTalkOverlay", + "states": [ + { + "easingType": "easeInOutQuad", + "id": "seatedTalkOverlay", + "interpDuration": 25, + "interpTarget": 25, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "seatedReactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "seatedReactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "seatedReactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "seatedReactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "seatedReactionPoint", + "var": "reactionPointEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionPositive", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "seatedTalkOverlay", + "var": "seatedReactionPositiveHeadNodOnDone" + }, + { + "state": "seatedTalkOverlay", + "var": "seatedReactionPositiveHeadNodYesOnDone" + }, + { + "state": "seatedTalkOverlay", + "var": "seatedReactionPositiveLongHeadNodOnDone" + }, + { + "state": "seatedTalkOverlay", + "var": "seatedReactionPositiveCheerOnDone" + }, + { + "state": "seatedTalkOverlay", + "var": "seatedReactionPositiveAcknowledgeOnDone" + }, + { + "state": "seatedReactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "seatedReactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "seatedReactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "seatedReactionPoint", + "var": "reactionPointEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionNegative", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "seatedReactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "seatedTalkOverlay", + "var": "seatedReactionNegativeDisagreeHeadshakeOnDone" + }, + { + "state": "seatedTalkOverlay", + "var": "seatedReactionNegativeDisagreeDropHeadOnDone" + }, + { + "state": "seatedTalkOverlay", + "var": "seatedReactionNegativeDisagreeDisbeliefOnDone" + }, + { + "state": "seatedTalkOverlay", + "var": "seatedReactionNegativeDisagreeDismissOnDone" + }, + { + "state": "seatedReactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "seatedReactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "seatedReactionPoint", + "var": "reactionPointEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionRaiseHand", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "seatedReactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "seatedReactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "seatedTalkOverlay", + "var": "reactionRaiseHandDisabled" + }, + { + "state": "seatedReactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "seatedReactionPoint", + "var": "reactionPointEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionApplaud", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "seatedReactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "seatedReactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "seatedReactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "seatedTalkOverlay", + "var": "reactionApplaudDisabled" + }, + { + "state": "seatedReactionPoint", + "var": "reactionPointEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionPoint", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "seatedReactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "seatedReactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "seatedReactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "seatedReactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "seatedTalkOverlay", + "var": "reactionPointDisabled" + } + ] + } + ] + }, + "id": "seated", + "type": "stateMachine" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 500, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/talk.fbx" + }, + "id": "talk", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 325, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/talk02.fbx" + }, + "id": "talk02", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 300, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/talk03.fbx" + }, + "id": "talk03", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 500, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/talk04.fbx" + }, + "id": "talk04", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 215, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/talk_armsdown.fbx" + }, + "id": "talk_armsdown", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 500, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/talk_lefthand.fbx" + }, + "id": "talk_lefthand", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 502, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/talk_righthand.fbx" + }, + "id": "talk_righthand", + "type": "clip" + } + ], + "data": { + "currentState": "talk", + "randomSwitchTimeMax": 12, + "randomSwitchTimeMin": 7, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "talk", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.33, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "talk02", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.33, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "talk03", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.33, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "talk04", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.33, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "talk_armsdown", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.33, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "talk_lefthand", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.33, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "talk_righthand", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.33, + "resume": true, + "transitions": [ + ] + } + ], + "triggerRandomSwitch": "idleTalkSwitch" + }, + "id": "idleTalk", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 300, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle.fbx" + }, + "id": "masterIdle1", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 400, + "loopFlag": true, + "startFrame": 1, + "timeScale": 0.75, + "url": "qrc:///avatar/animations/idle02.fbx" + }, + "id": "masterIdle2", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 800, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle03.fbx" + }, + "id": "masterIdle3", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 902, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle04.fbx" + }, + "id": "masterIdle4", + "type": "clip" + } + ], + "data": { + "currentState": "masterIdle1", + "randomSwitchTimeMax": 30, + "randomSwitchTimeMin": 10, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "masterIdle1", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 0.25, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "masterIdle2", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 0.25, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "masterIdle3", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 0.25, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "masterIdle4", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 0.25, + "resume": true, + "transitions": [ + ] + } + ], + "triggerRandomSwitch": "masterIdleSwitch" + }, + "id": "masterIdle", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 91, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_once_slownod.fbx" + }, + "id": "idle_once_slownod", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 154, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_once_headtilt.fbx" + }, + "id": "idle_once_headtilt", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 491, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_once_shiftheelpivot.fbx" + }, + "id": "idle_once_shiftheelpivot", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 1620, + "loopFlag": false, + "startFrame": 1, + "timeScale": 0.7, + "url": "qrc:///avatar/animations/idleWS_all.fbx" + }, + "id": "idleWS_all", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 324, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_once_lookaround.fbx" + }, + "id": "idle_once_lookaround", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 169, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_once_neckstretch.fbx" + }, + "id": "idle_once_neckstretch", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 375, + "loopFlag": false, + "startFrame": 1, + "timeScale": 0.7, + "url": "qrc:///avatar/animations/idle_once_lookleftright.fbx" + }, + "id": "idle_once_lookleftright", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 429, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_once_fidget.fbx" + }, + "id": "idle_once_fidget", + "type": "clip" + } + ], + "data": { + "currentState": "idle_once_slownod", + "states": [ + { + "easingType": "easeInOutQuad", + "id": "idle_once_slownod", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.2, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idle_once_headtilt", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.2, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idle_once_shiftheelpivot", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.2, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idleWS_all", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.2, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idle_once_lookaround", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.2, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idle_once_neckstretch", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.2, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idle_once_lookleftright", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.2, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idle_once_fidget", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.2, + "resume": false, + "transitions": [ + ] + } + ] + }, + "id": "movement", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 80, + "loopFlag": false, + "startFrame": 1, + "startFrameVar": "", + "timeScale": 0.65, + "url": "qrc:///avatar/animations/idle_LFF_all.fbx" + }, + "id": "transitionToAltIdle1", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 80, + "loopFlag": false, + "startFrame": 1, + "timeScale": 0.65, + "url": "qrc:///avatar/animations/idle_RFF_all.fbx" + }, + "id": "transitionToAltIdle2", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 388, + "loopFlag": true, + "startFrame": 80, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_LFF_all.fbx" + }, + "id": "altIdle1", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 388, + "loopFlag": true, + "startFrame": 80, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_RFF_all.fbx" + }, + "id": "altIdle2", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 472, + "loopFlag": false, + "startFrame": 388, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_LFF_all.fbx" + }, + "id": "alt1ToMasterIdle", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 453, + "loopFlag": false, + "startFrame": 388, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_RFF_all.fbx" + }, + "id": "alt2ToMasterIdle", + "type": "clip" + } + ], + "data": { + "currentState": "transitionToAltIdle1", + "states": [ + { + "easingType": "easeInOutQuad", + "id": "transitionToAltIdle1", + "interpDuration": 20, + "interpTarget": 20, + "interpType": "evaluateBoth", + "priority": 0.5, + "resume": false, + "transitions": [ + { + "randomSwitchState": "altIdle1", + "var": "transitionToAltIdle1OnDone" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "transitionToAltIdle2", + "interpDuration": 20, + "interpTarget": 20, + "interpType": "evaluateBoth", + "priority": 0.5, + "resume": false, + "transitions": [ + { + "randomSwitchState": "altIdle2", + "var": "transitionToAltIdle2OnDone" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "altIdle1", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": -1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "alt1ToMasterIdle", + "var": "finishAltIdle2" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "altIdle2", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": -1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "alt2ToMasterIdle", + "var": "finishAltIdle2" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "alt1ToMasterIdle", + "interpDuration": 24, + "interpTarget": 24, + "interpType": "evaluateBoth", + "priority": -1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "alt2ToMasterIdle", + "interpDuration": 24, + "interpTarget": 24, + "interpType": "evaluateBoth", + "priority": -1, + "resume": false, + "transitions": [ + ] + } + ], + "transitionVar": "finishAltIdle2", + "triggerTimeMax": 60, + "triggerTimeMin": 10 + }, + "id": "alternateIdle", + "type": "randomSwitchStateMachine" + } + ], + "data": { + "currentState": "movement", + "states": [ + { + "easingType": "easeInOutQuad", + "id": "movement", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 0.6, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "alternateIdle", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 0.4, + "resume": false, + "transitions": [ + ] + } + ] + }, + "id": "fidget", + "type": "randomSwitchStateMachine" + } + ], + "data": { + "currentState": "masterIdle", + "states": [ + { + "easingType": "easeInOutQuad", + "id": "masterIdle", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "fidget", + "var": "timeToFidget" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "fidget", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": -1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "masterIdle", + "var": "idle_once_slownodOnDone" + }, + { + "randomSwitchState": "masterIdle", + "var": "idle_once_headtiltOnDone" + }, + { + "randomSwitchState": "masterIdle", + "var": "idle_once_shiftheelpivotOnDone" + }, + { + "randomSwitchState": "masterIdle", + "var": "idleWS_allOnDone" + }, + { + "randomSwitchState": "masterIdle", + "var": "idle_once_lookaroundOnDone" + }, + { + "randomSwitchState": "masterIdle", + "var": "idle_once_neckstretchOnDone" + }, + { + "randomSwitchState": "masterIdle", + "var": "idle_once_lookleftrightOnDone" + }, + { + "randomSwitchState": "masterIdle", + "var": "idle_once_fidgetOnDone" + }, + { + "randomSwitchState": "masterIdle", + "var": "alt1ToMasterIdleOnDone" + }, + { + "randomSwitchState": "masterIdle", + "var": "alt2ToMasterIdleOnDone" + } + ] + } + ], + "transitionVar": "timeToFidget", + "triggerTimeMax": 50, + "triggerTimeMin": 10 + }, + "id": "idleStand", + "type": "randomSwitchStateMachine" + } + ], + "data": { + "alpha": 1, + "alphaVar": "talkOverlayAlpha", + "boneSet": "upperBody" + }, + "id": "idleTalkOverlay", + "type": "overlay" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 64, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_agree_acknowledge.fbx" + }, + "id": "positiveAcknowledge", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 55, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_agree_headnod.fbx" + }, + "id": "positiveHeadNod", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 94, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_agree_headnodyes.fbx" + }, + "id": "positiveHeadNodYes", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 68, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_agree_longheadnod.fbx" + }, + "id": "positiveLongHeadNod", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 84, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_agree_thoughtfulheadnod.fbx" + }, + "id": "positiveThoughtfulHeadNod", + "type": "clip" + } + ], + "data": { + "currentState": "positiveAcknowledge", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "positiveAcknowledge", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "positiveHeadNod", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "positiveHeadNodYes", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "positiveLongHeadNod", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "positiveThoughtfulHeadNod", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 0.33, + "resume": false, + "transitions": [ + ] + } + ], + "triggerRandomSwitch": "" + }, + "id": "reactionPositive", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 72, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_disagree_annoyedheadshake.fbx" + }, + "id": "negativeAnnoyedHeadshake", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 92, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_disagree_thoughtfulheadshake.fbx" + }, + "id": "negativeThoughtfulHeadshake", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 158, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_disagree_drophead.fbx" + }, + "id": "negativeDropHead", + "type": "clip" + } + ], + "data": { + "currentState": "negativeAnnoyedHeadshake", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "negativeAnnoyedHeadshake", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "negativeThoughtfulHeadshake", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "negativeDropHead", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + } + ] + }, + "id": "reactionNegative", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 18, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_raisehand01_all.fbx" + }, + "id": "raiseHand01Intro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 378, + "loopFlag": true, + "startFrame": 18, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_raisehand01_all.fbx" + }, + "id": "raiseHand01Loop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 435, + "loopFlag": false, + "startFrame": 378, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_raisehand01_all.fbx" + }, + "id": "raiseHand01Outro", + "type": "clip" + } + ], + "data": { + "currentState": "raiseHand01Intro", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "raiseHand01Intro", + "interpDuration": 10, + "interpTarget": 10, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "raiseHand01Loop", + "var": "raiseHand01IntroOnDone" + } + ] + }, + { + "id": "raiseHand01Loop", + "interpDuration": 1, + "interpTarget": 1, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "raiseHand01Outro", + "var": "reactionRaiseHandDisabled" + } + ] + }, + { + "id": "raiseHand01Outro", + "interpDuration": 6, + "interpTarget": 6, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "raiseHand01Loop", + "var": "reactionRaiseHandEnabled" + } + ] + } + ], + "triggerRandomSwitch": "" + }, + "id": "raiseHand01", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 19, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_raisehand03_all.fbx" + }, + "id": "raiseHand03Intro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 237, + "loopFlag": true, + "startFrame": 19, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_raisehand03_all.fbx" + }, + "id": "raiseHand03Loop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 300, + "loopFlag": false, + "startFrame": 237, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_raisehand03_all.fbx" + }, + "id": "raiseHand03Outro", + "type": "clip" + } + ], + "data": { + "currentState": "raiseHand03Intro", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "raiseHand03Intro", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "raiseHand03Loop", + "var": "raiseHand03IntroOnDone" + } + ] + }, + { + "id": "raiseHand03Loop", + "interpDuration": 1, + "interpTarget": 1, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "raiseHand03Outro", + "var": "reactionRaiseHandDisabled" + } + ] + }, + { + "id": "raiseHand03Outro", + "interpDuration": 6, + "interpTarget": 6, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "raiseHand03Loop", + "var": "reactionRaiseHandEnabled" + } + ] + } + ], + "triggerRandomSwitch": "" + }, + "id": "raiseHand03", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 32, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_raisehand04_all.fbx" + }, + "id": "raiseHand04Intro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 345, + "loopFlag": true, + "startFrame": 32, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_raisehand04_all.fbx" + }, + "id": "raiseHand04Loop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 400, + "loopFlag": false, + "startFrame": 345, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_raisehand04_all.fbx" + }, + "id": "raiseHand04Outro", + "type": "clip" + } + ], + "data": { + "currentState": "raiseHand04Intro", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "raiseHand04Intro", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "raiseHand04Loop", + "var": "raiseHand04IntroOnDone" + } + ] + }, + { + "id": "raiseHand04Loop", + "interpDuration": 1, + "interpTarget": 1, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "raiseHand04Outro", + "var": "reactionRaiseHandDisabled" + } + ] + }, + { + "id": "raiseHand04Outro", + "interpDuration": 6, + "interpTarget": 6, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "raiseHand04Loop", + "var": "reactionRaiseHandEnabled" + } + ] + } + ], + "triggerRandomSwitch": "" + }, + "id": "raiseHand04", + "type": "randomSwitchStateMachine" + } + ], + "data": { + "currentState": "raiseHand01", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "raiseHand01", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "raiseHand03", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "raiseHand04", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + } + ] + }, + "id": "reactionRaiseHand", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 17, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_clap01_all.fbx" + }, + "id": "applaudClap01Intro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 111, + "loopFlag": true, + "startFrame": 17, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_clap01_all.fbx" + }, + "id": "applaudClap01Loop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 160, + "loopFlag": false, + "startFrame": 111, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_clap01_all.fbx" + }, + "id": "applaudClap01Outro", + "type": "clip" + } + ], + "data": { + "currentState": "applaudClap01Intro", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "applaudClap01Intro", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "applaudClap01Loop", + "var": "applaudClap01IntroOnDone" + } + ] + }, + { + "id": "applaudClap01Loop", + "interpDuration": 1, + "interpTarget": 1, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "applaudClap01Outro", + "var": "reactionApplaudDisabled" + } + ] + }, + { + "id": "applaudClap01Outro", + "interpDuration": 6, + "interpTarget": 6, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "applaudClap01Loop", + "var": "reactionApplaudEnabled" + } + ] + } + ], + "triggerRandomSwitch": "" + }, + "id": "applaudClap01", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 14, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_clap02_all.fbx" + }, + "id": "applaudClap02Intro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 78, + "loopFlag": true, + "startFrame": 14, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_clap02_all.fbx" + }, + "id": "applaudClap02Loop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 115, + "loopFlag": false, + "startFrame": 78, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_clap02_all.fbx" + }, + "id": "applaudClap02Outro", + "type": "clip" + } + ], + "data": { + "currentState": "applaudClap02Intro", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "applaudClap02Intro", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "applaudClap02Loop", + "var": "applaudClap02IntroOnDone" + } + ] + }, + { + "id": "applaudClap02Loop", + "interpDuration": 1, + "interpTarget": 1, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "applaudClap02Outro", + "var": "reactionApplaudDisabled" + } + ] + }, + { + "id": "applaudClap02Outro", + "interpDuration": 6, + "interpTarget": 6, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "applaudClap02Loop", + "var": "reactionApplaudEnabled" + } + ] + } + ], + "triggerRandomSwitch": "" + }, + "id": "applaudClap02", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 14, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_clap03_all.fbx" + }, + "id": "applaudClap03Intro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 100, + "loopFlag": true, + "startFrame": 14, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_clap03_all.fbx" + }, + "id": "applaudClap03Loop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 149, + "loopFlag": false, + "startFrame": 100, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_clap03_all.fbx" + }, + "id": "applaudClap03Outro", + "type": "clip" + } + ], + "data": { + "currentState": "applaudClap03Intro", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "applaudClap03Intro", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "applaudClap03Loop", + "var": "applaudClap03IntroOnDone" + } + ] + }, + { + "id": "applaudClap03Loop", + "interpDuration": 1, + "interpTarget": 1, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "applaudClap03Outro", + "var": "reactionApplaudDisabled" + } + ] + }, + { + "id": "applaudClap03Outro", + "interpDuration": 6, + "interpTarget": 6, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "applaudClap03Loop", + "var": "reactionApplaudEnabled" + } + ] + } + ], + "triggerRandomSwitch": "" + }, + "id": "applaudClap03", + "type": "randomSwitchStateMachine" + } + ], + "data": { + "currentState": "applaudClap01", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "applaudClap01", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "applaudClap02", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "applaudClap03", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + } + ] + }, + "id": "reactionApplaud", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 21, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_point01_all.fbx" + }, + "id": "reactionPointIntro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 100, + "loopFlag": true, + "startFrame": 21, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_point01_all.fbx" + }, + "id": "reactionPointLoop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 134, + "loopFlag": false, + "startFrame": 100, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_point01_all.fbx" + }, + "id": "reactionPointOutro", + "type": "clip" + } + ], + "data": { + "currentState": "reactionPointIntro", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "reactionPointIntro", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "reactionPointLoop", + "var": "reactionPointIntroOnDone" + } + ] + }, + { + "id": "reactionPointLoop", "interpDuration": 1, "interpTarget": 1, "priority": 0, "resume": false, "transitions": [ { - "randomSwitchState": "applaudClap03Outro", - "var": "reactionApplaudDisabled" + "randomSwitchState": "reactionPointOutro", + "var": "reactionPointDisabled" } ] }, { - "id": "applaudClap03Outro", + "easingType": "easeInOutQuad", + "id": "reactionPointOutro", "interpDuration": 6, "interpTarget": 6, "interpType": "evaluateBoth", @@ -3470,60 +3612,223 @@ "resume": false, "transitions": [ { - "randomSwitchState": "applaudClap03Loop", - "var": "reactionApplaudEnabled" + "randomSwitchState": "reactionPointLoop", + "var": "reactionPointEnabled" } ] } ], "triggerRandomSwitch": "" }, - "id": "applaudClap03", + "id": "reactionPoint", "type": "randomSwitchStateMachine" } ], "data": { - "currentState": "applaudClap01", - "randomSwitchTimeMax": 10, - "randomSwitchTimeMin": 1, + "currentState": "idleTalkOverlay", "states": [ { "easingType": "easeInOutQuad", - "id": "applaudClap01", - "interpDuration": 1, - "interpTarget": 1, + "id": "idleTalkOverlay", + "interpDuration": 20, + "interpTarget": 20, "interpType": "evaluateBoth", - "priority": 1, - "resume": false, "transitions": [ + { + "state": "reactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "reactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "reactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "reactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "reactionPoint", + "var": "reactionPointEnabled" + } ] }, { "easingType": "easeInOutQuad", - "id": "applaudClap02", - "interpDuration": 1, - "interpTarget": 1, + "id": "reactionPositive", + "interpDuration": 18, + "interpTarget": 18, "interpType": "evaluateBoth", - "priority": 1, - "resume": false, "transitions": [ + { + "state": "idleTalkOverlay", + "var": "positiveAcknowledgeOnDone" + }, + { + "state": "idleTalkOverlay", + "var": "positiveHeadNodOnDone" + }, + { + "state": "idleTalkOverlay", + "var": "positiveHeadNodYesOnDone" + }, + { + "state": "idleTalkOverlay", + "var": "positiveLongHeadNodOnDone" + }, + { + "state": "idleTalkOverlay", + "var": "positiveThoughtfulHeadNodOnDone" + }, + { + "state": "reactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "reactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "reactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "reactionPoint", + "var": "reactionPointEnabled" + } ] }, { "easingType": "easeInOutQuad", - "id": "applaudClap03", - "interpDuration": 1, - "interpTarget": 1, + "id": "reactionNegative", + "interpDuration": 18, + "interpTarget": 18, "interpType": "evaluateBoth", - "priority": 1, - "resume": false, "transitions": [ + { + "state": "reactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "idleTalkOverlay", + "var": "negativeAnnoyedHeadshakeOnDone" + }, + { + "state": "idleTalkOverlay", + "var": "negativeThoughtfulHeadshakeOnDone" + }, + { + "state": "idleTalkOverlay", + "var": "negativeDropHeadOnDone" + }, + { + "state": "reactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "reactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "reactionPoint", + "var": "reactionPointEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "reactionRaiseHand", + "interpDuration": 18, + "interpTarget": 18, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "reactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "reactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "idleTalkOverlay", + "var": "reactionRaiseHandDisabled" + }, + { + "state": "reactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "reactionPoint", + "var": "reactionPointEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "reactionApplaud", + "interpDuration": 18, + "interpTarget": 18, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "reactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "reactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "reactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "idleTalkOverlay", + "var": "reactionApplaudDisabled" + }, + { + "state": "reactionPoint", + "var": "reactionPointEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "reactionPoint", + "interpDuration": 18, + "interpTarget": 18, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "reactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "reactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "reactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "reactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "idleTalkOverlay", + "var": "reactionPointDisabled" + } ] } ] }, - "id": "reactionApplaud", - "type": "randomSwitchStateMachine" + "id": "idle", + "type": "stateMachine" }, { "children": [ @@ -3531,301 +3836,1667 @@ "children": [ ], "data": { - "endFrame": 21, - "loopFlag": false, + "endFrame": 40, + "loopFlag": true, "startFrame": 1, "timeScale": 1, - "url": "qrc:///avatar/animations/emote_point01_all.fbx" + "url": "qrc:///avatar/animations/walk_short_fwd.fbx" }, - "id": "reactionPointIntro", + "id": "walkFwdShort_c", "type": "clip" }, { "children": [ ], "data": { - "endFrame": 100, + "endFrame": 30, "loopFlag": true, - "startFrame": 21, + "startFrame": 1, "timeScale": 1, - "url": "qrc:///avatar/animations/emote_point01_all.fbx" + "url": "qrc:///avatar/animations/walk_fwd.fbx" }, - "id": "reactionPointLoop", + "id": "walkFwdNormal_c", "type": "clip" }, { "children": [ ], "data": { - "endFrame": 134, - "loopFlag": false, - "startFrame": 100, + "endFrame": 26, + "loopFlag": true, + "startFrame": 1, "timeScale": 1, - "url": "qrc:///avatar/animations/emote_point01_all.fbx" + "url": "qrc:///avatar/animations/walk_fwd_fast.fbx" }, - "id": "reactionPointOutro", + "id": "walkFwdFast_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 18, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/jog_fwd.fbx" + }, + "id": "walkFwdJog_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 19, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/run_fast_fwd.fbx" + }, + "id": "walkFwdRun_c", "type": "clip" } ], "data": { - "currentState": "reactionPointIntro", - "randomSwitchTimeMax": 10, - "randomSwitchTimeMin": 1, - "states": [ - { - "easingType": "easeInOutQuad", - "id": "reactionPointIntro", - "interpDuration": 1, - "interpTarget": 1, - "interpType": "evaluateBoth", - "priority": 1, - "resume": false, - "transitions": [ - { - "randomSwitchState": "reactionPointLoop", - "var": "reactionPointIntroOnDone" - } - ] - }, - { - "id": "reactionPointLoop", - "interpDuration": 1, - "interpTarget": 1, - "priority": 0, - "resume": false, - "transitions": [ - { - "randomSwitchState": "reactionPointOutro", - "var": "reactionPointDisabled" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "reactionPointOutro", - "interpDuration": 6, - "interpTarget": 6, - "interpType": "evaluateBoth", - "priority": 0, - "resume": false, - "transitions": [ - { - "randomSwitchState": "reactionPointLoop", - "var": "reactionPointEnabled" - } - ] - } + "alpha": 0, + "alphaVar": "moveForwardAlpha", + "characteristicSpeeds": [ + 0.5, + 1.8, + 2.5, + 3.55, + 5.675 ], - "triggerRandomSwitch": "" + "desiredSpeed": 1.4, + "desiredSpeedVar": "moveForwardSpeed" }, - "id": "reactionPoint", - "type": "randomSwitchStateMachine" + "id": "WALKFWD", + "type": "blendLinearMove" + }, + { + "children": [ + ], + "data": { + "endFrame": 13, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_to_walk.fbx" + }, + "id": "idleToWalkFwd", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 59, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/settle_to_idle_small.fbx" + }, + "id": "idleSettle", + "type": "clip" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 37, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/walk_bwd.fbx" + }, + "id": "walkBwdShort_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 28, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/walk_bwd_fast.fbx" + }, + "id": "walkBwdFast_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 20, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/jog_bwd.fbx" + }, + "id": "jogBwd_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 14, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/run_bwd.fbx" + }, + "id": "runBwd_c", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "moveBackwardAlpha", + "characteristicSpeeds": [ + 0.6, + 1.6, + 2.8, + 4.5 + ], + "desiredSpeed": 1.4, + "desiredSpeedVar": "moveBackwardSpeed" + }, + "id": "WALKBWD", + "type": "blendLinearMove" + }, + { + "children": [ + ], + "data": { + "endFrame": 33, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/turn_left.fbx" + }, + "id": "turnLeft", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 31, + "loopFlag": true, + "mirrorFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/turn_right.fbx" + }, + "id": "turnRight", + "type": "clip" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 30, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/side_step_short_left.fbx" + }, + "id": "strafeLeftShortStep_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 20, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/side_step_left.fbx" + }, + "id": "strafeLeftStep_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 35, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/walk_left.fbx" + }, + "id": "strafeLeftWalk_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 21, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/walk_left_fast.fbx" + }, + "id": "strafeLeftWalkFast_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 20, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/jog_left.fbx" + }, + "id": "strafeLeftJog_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 19, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/run_fast_left.fbx" + }, + "id": "strafeLeftRun_c", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "moveLateralAlpha", + "characteristicSpeeds": [ + 0.1, + 0.5, + 1, + 2.55, + 3.35, + 5.25 + ], + "desiredSpeed": 1.4, + "desiredSpeedVar": "moveLateralSpeed" + }, + "id": "STRAFELEFT", + "type": "blendLinearMove" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 30, + "loopFlag": true, + "mirrorFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/side_step_short_left.fbx" + }, + "id": "strafeRightShortStep_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 20, + "loopFlag": true, + "mirrorFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/side_step_left.fbx" + }, + "id": "strafeRightStep_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 35, + "loopFlag": true, + "mirrorFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/walk_right.fbx" + }, + "id": "strafeRightWalk_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 21, + "loopFlag": true, + "mirrorFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/walk_right_fast.fbx" + }, + "id": "strafeRightFast_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 20, + "loopFlag": true, + "mirrorFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/jog_right.fbx" + }, + "id": "strafeRightJog_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 19, + "loopFlag": true, + "mirrorFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/run_fast_right.fbx" + }, + "id": "strafeRightRun_c", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "moveLateralAlpha", + "characteristicSpeeds": [ + 0.1, + 0.5, + 1, + 2.55, + 3.4, + 5.25 + ], + "desiredSpeed": 1.4, + "desiredSpeedVar": "moveLateralSpeed" + }, + "id": "STRAFERIGHT", + "type": "blendLinearMove" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 30, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/side_step_short_left.fbx" + }, + "id": "stepLeftShort_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 20, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/side_step_left.fbx" + }, + "id": "stepLeft_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 16, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/side_step_left_fast.fbx" + }, + "id": "strafeLeftAnim_c", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "moveLateralAlpha", + "characteristicSpeeds": [ + 0, + 0.5, + 2.5 + ], + "desiredSpeed": 1.4, + "desiredSpeedVar": "moveLateralSpeed" + }, + "id": "strafeLeftHmd", + "type": "blendLinearMove" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 30, + "loopFlag": true, + "mirrorFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/side_step_short_left.fbx" + }, + "id": "stepRightShort_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 20, + "loopFlag": true, + "mirrorFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/side_step_left.fbx" + }, + "id": "stepRight_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 16, + "loopFlag": true, + "mirrorFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/side_step_left_fast.fbx" + }, + "id": "strafeRightAnim_c", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "moveLateralAlpha", + "characteristicSpeeds": [ + 0, + 0.5, + 2.5 + ], + "desiredSpeed": 1.4, + "desiredSpeedVar": "moveLateralSpeed" + }, + "id": "strafeRightHmd", + "type": "blendLinearMove" + }, + { + "children": [ + ], + "data": { + "endFrame": 79, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/fly.fbx" + }, + "id": "fly", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 16, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_standing_launch_all.fbx" + }, + "id": "takeoffStand", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": false, + "startFrame": 4, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_running_launch_land_all.fbx" + }, + "id": "TAKEOFFRUN", + "type": "clip" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 1, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_standing_apex_all.fbx" + }, + "id": "inAirStandPreApex", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 2, + "loopFlag": false, + "startFrame": 2, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_standing_apex_all.fbx" + }, + "id": "inAirStandApex", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 3, + "loopFlag": false, + "startFrame": 3, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_standing_apex_all.fbx" + }, + "id": "inAirStandPostApex", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "inAirAlpha" + }, + "id": "inAirStand", + "type": "blendLinear" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 16, + "loopFlag": false, + "startFrame": 16, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_running_launch_land_all.fbx" + }, + "id": "inAirRunPreApex", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 22, + "loopFlag": false, + "startFrame": 22, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_running_launch_land_all.fbx" + }, + "id": "inAirRunApex", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 33, + "loopFlag": false, + "startFrame": 33, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_running_launch_land_all.fbx" + }, + "id": "inAirRunPostApex", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "inAirAlpha" + }, + "id": "INAIRRUN", + "type": "blendLinear" + }, + { + "children": [ + ], + "data": { + "endFrame": 6, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_standing_land_settle_all.fbx" + }, + "id": "landStandImpact", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 68, + "loopFlag": false, + "startFrame": 6, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_standing_land_settle_all.fbx" + }, + "id": "landStand", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 40, + "loopFlag": false, + "startFrame": 29, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_running_launch_land_all.fbx" + }, + "id": "LANDRUN", + "type": "clip" } ], "data": { - "currentState": "idleTalkOverlay", + "currentState": "idle", + "outputJoints": [ + "LeftFoot", + "RightFoot" + ], "states": [ { "easingType": "easeInOutQuad", - "id": "idleTalkOverlay", - "interpDuration": 20, - "interpTarget": 20, + "id": "seated", + "interpDuration": 6, + "interpTarget": 6, "interpType": "evaluateBoth", "transitions": [ { - "state": "reactionPositive", - "var": "reactionPositiveTrigger" + "state": "idle", + "var": "isNotMoving" }, { - "state": "reactionNegative", - "var": "reactionNegativeTrigger" + "state": "WALKFWD", + "var": "isMovingForward" }, { - "state": "reactionRaiseHand", - "var": "reactionRaiseHandEnabled" + "state": "WALKBWD", + "var": "isMovingBackward" }, { - "state": "reactionApplaud", - "var": "reactionApplaudEnabled" + "state": "STRAFERIGHT", + "var": "isMovingRight" }, { - "state": "reactionPoint", - "var": "reactionPointEnabled" + "state": "STRAFELEFT", + "var": "isMovingLeft" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "idle", + "var": "isNotSeated" } ] }, { "easingType": "easeInOutQuad", - "id": "reactionPositive", - "interpDuration": 18, - "interpTarget": 18, + "id": "idle", + "interpDuration": 30, + "interpTarget": 30, "interpType": "evaluateBoth", "transitions": [ { - "state": "idleTalkOverlay", - "var": "positiveAcknowledgeOnDone" + "state": "WALKFWD", + "var": "isMovingForward" }, { - "state": "idleTalkOverlay", - "var": "positiveHeadNodOnDone" + "state": "WALKBWD", + "var": "isMovingBackward" }, { - "state": "idleTalkOverlay", - "var": "positiveHeadNodYesOnDone" + "state": "STRAFERIGHT", + "var": "isMovingRight" }, { - "state": "idleTalkOverlay", - "var": "positiveLongHeadNodOnDone" + "state": "STRAFELEFT", + "var": "isMovingLeft" }, { - "state": "idleTalkOverlay", - "var": "positiveThoughtfulHeadNodOnDone" + "state": "turnRight", + "var": "isTurningRight" }, { - "state": "reactionNegative", - "var": "reactionNegativeTrigger" + "state": "turnLeft", + "var": "isTurningLeft" }, { - "state": "reactionRaiseHand", - "var": "reactionRaiseHandEnabled" + "state": "fly", + "var": "isFlying" }, { - "state": "reactionApplaud", - "var": "reactionApplaudEnabled" + "state": "takeoffStand", + "var": "isTakeoffStand" }, { - "state": "reactionPoint", - "var": "reactionPointEnabled" + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "id": "idleToWalkFwd", + "interpDuration": 8, + "interpTarget": 12, + "transitions": [ + { + "state": "WALKFWD", + "var": "idleToWalkFwdOnDone" + }, + { + "state": "idle", + "var": "isNotMoving" + }, + { + "state": "WALKBWD", + "var": "isMovingBackward" + }, + { + "state": "STRAFERIGHT", + "var": "isMovingRight" + }, + { + "state": "STRAFELEFT", + "var": "isMovingLeft" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "seated", + "var": "isSeated" } ] }, { "easingType": "easeInOutQuad", - "id": "reactionNegative", - "interpDuration": 18, - "interpTarget": 18, + "id": "idleSettle", + "interpDuration": 12, + "interpTarget": 12, "interpType": "evaluateBoth", "transitions": [ { - "state": "reactionPositive", - "var": "reactionPositiveTrigger" + "state": "idle", + "var": "idleSettleOnDone" }, { - "state": "idleTalkOverlay", - "var": "negativeAnnoyedHeadshakeOnDone" + "state": "WALKFWD", + "var": "isMovingForward" }, { - "state": "idleTalkOverlay", - "var": "negativeThoughtfulHeadshakeOnDone" + "state": "WALKBWD", + "var": "isMovingBackward" }, { - "state": "idleTalkOverlay", - "var": "negativeDropHeadOnDone" + "state": "STRAFERIGHT", + "var": "isMovingRight" }, { - "state": "reactionRaiseHand", - "var": "reactionRaiseHandEnabled" + "state": "STRAFELEFT", + "var": "isMovingLeft" }, { - "state": "reactionApplaud", - "var": "reactionApplaudEnabled" + "state": "strafeRightHmd", + "var": "isMovingRightHmd" }, { - "state": "reactionPoint", - "var": "reactionPointEnabled" + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "id": "WALKFWD", + "interpDuration": 10, + "interpTarget": 35, + "interpType": "snapshotPrev", + "transitions": [ + { + "state": "idleSettle", + "var": "isNotMoving" + }, + { + "state": "WALKBWD", + "var": "isMovingBackward" + }, + { + "state": "STRAFERIGHT", + "var": "isMovingRight" + }, + { + "state": "STRAFELEFT", + "var": "isMovingLeft" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "id": "WALKBWD", + "interpDuration": 10, + "interpTarget": 35, + "interpType": "snapshotPrev", + "transitions": [ + { + "state": "idleSettle", + "var": "isNotMoving" + }, + { + "state": "WALKFWD", + "var": "isMovingForward" + }, + { + "state": "STRAFERIGHT", + "var": "isMovingRight" + }, + { + "state": "STRAFELEFT", + "var": "isMovingLeft" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "id": "STRAFERIGHT", + "interpDuration": 8, + "interpTarget": 25, + "interpType": "snapshotPrev", + "transitions": [ + { + "state": "idleSettle", + "var": "isNotMoving" + }, + { + "state": "WALKFWD", + "var": "isMovingForward" + }, + { + "state": "WALKBWD", + "var": "isMovingBackward" + }, + { + "state": "STRAFELEFT", + "var": "isMovingLeft" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "id": "STRAFELEFT", + "interpDuration": 8, + "interpTarget": 25, + "interpType": "snapshotPrev", + "transitions": [ + { + "state": "idleSettle", + "var": "isNotMoving" + }, + { + "state": "WALKFWD", + "var": "isMovingForward" + }, + { + "state": "WALKBWD", + "var": "isMovingBackward" + }, + { + "state": "STRAFERIGHT", + "var": "isMovingRight" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "seated", + "var": "isSeated" } ] }, { "easingType": "easeInOutQuad", - "id": "reactionRaiseHand", - "interpDuration": 18, - "interpTarget": 18, + "id": "turnRight", + "interpDuration": 15, + "interpTarget": 15, "interpType": "evaluateBoth", "transitions": [ { - "state": "reactionNegative", - "var": "reactionNegativeTrigger" + "state": "idle", + "var": "isNotTurning" }, { - "state": "reactionPositive", - "var": "reactionPositiveTrigger" + "state": "WALKFWD", + "var": "isMovingForward" }, { - "state": "idleTalkOverlay", - "var": "reactionRaiseHandDisabled" + "state": "WALKBWD", + "var": "isMovingBackward" }, { - "state": "reactionApplaud", - "var": "reactionApplaudEnabled" + "state": "STRAFERIGHT", + "var": "isMovingRight" }, { - "state": "reactionPoint", - "var": "reactionPointEnabled" + "state": "STRAFELEFT", + "var": "isMovingLeft" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "seated", + "var": "isSeated" } ] }, { "easingType": "easeInOutQuad", - "id": "reactionApplaud", - "interpDuration": 18, - "interpTarget": 18, + "id": "turnLeft", + "interpDuration": 15, + "interpTarget": 15, "interpType": "evaluateBoth", "transitions": [ { - "state": "reactionNegative", - "var": "reactionNegativeTrigger" + "state": "idle", + "var": "isNotTurning" }, { - "state": "reactionPositive", - "var": "reactionPositiveTrigger" + "state": "WALKFWD", + "var": "isMovingForward" }, { - "state": "reactionRaiseHand", - "var": "reactionRaiseHandEnabled" + "state": "WALKBWD", + "var": "isMovingBackward" }, { - "state": "idleTalkOverlay", - "var": "reactionApplaudDisabled" + "state": "STRAFERIGHT", + "var": "isMovingRight" }, { - "state": "reactionPoint", - "var": "reactionPointEnabled" + "state": "STRAFELEFT", + "var": "isMovingLeft" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "id": "strafeRightHmd", + "interpDuration": 8, + "interpTarget": 8, + "interpType": "snapshotPrev", + "transitions": [ + { + "state": "idleSettle", + "var": "isNotMoving" + }, + { + "state": "WALKFWD", + "var": "isMovingForward" + }, + { + "state": "WALKBWD", + "var": "isMovingBackward" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "STRAFERIGHT", + "var": "isMovingRight" + }, + { + "state": "STRAFELEFT", + "var": "isMovingLeft" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "id": "strafeLeftHmd", + "interpDuration": 8, + "interpTarget": 8, + "interpType": "snapshotPrev", + "transitions": [ + { + "state": "idleSettle", + "var": "isNotMoving" + }, + { + "state": "WALKFWD", + "var": "isMovingForward" + }, + { + "state": "WALKBWD", + "var": "isMovingBackward" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "STRAFERIGHT", + "var": "isMovingRight" + }, + { + "state": "STRAFELEFT", + "var": "isMovingLeft" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "seated", + "var": "isSeated" } ] }, { "easingType": "easeInOutQuad", - "id": "reactionPoint", - "interpDuration": 18, - "interpTarget": 18, + "id": "fly", + "interpDuration": 24, + "interpTarget": 24, "interpType": "evaluateBoth", "transitions": [ { - "state": "reactionNegative", - "var": "reactionNegativeTrigger" + "state": "idleSettle", + "var": "isNotFlying" + } + ] + }, + { + "id": "takeoffStand", + "interpDuration": 2, + "interpTarget": 2, + "transitions": [ + { + "state": "inAirStand", + "var": "isNotTakeoff" + } + ] + }, + { + "id": "TAKEOFFRUN", + "interpDuration": 2, + "interpTarget": 2, + "transitions": [ + { + "state": "INAIRRUN", + "var": "isNotTakeoff" + } + ] + }, + { + "id": "inAirStand", + "interpDuration": 3, + "interpTarget": 3, + "interpType": "snapshotPrev", + "transitions": [ + { + "state": "landStandImpact", + "var": "isNotInAir" + } + ] + }, + { + "id": "INAIRRUN", + "interpDuration": 3, + "interpTarget": 3, + "interpType": "snapshotPrev", + "transitions": [ + { + "state": "WALKFWD", + "var": "isNotInAir" + } + ] + }, + { + "id": "landStandImpact", + "interpDuration": 1, + "interpTarget": 1, + "transitions": [ + { + "state": "fly", + "var": "isFlying" }, { - "state": "reactionPositive", - "var": "reactionPositiveTrigger" + "state": "takeoffStand", + "var": "isTakeoffStand" }, { - "state": "reactionRaiseHand", - "var": "reactionRaiseHandEnabled" + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" }, { - "state": "reactionApplaud", - "var": "reactionApplaudEnabled" + "state": "landStand", + "var": "landStandImpactOnDone" + } + ] + }, + { + "id": "landStand", + "interpDuration": 1, + "interpTarget": 1, + "transitions": [ + { + "state": "WALKFWD", + "var": "isMovingForward" }, { - "state": "idleTalkOverlay", - "var": "reactionPointDisabled" + "state": "WALKBWD", + "var": "isMovingBackward" + }, + { + "state": "STRAFERIGHT", + "var": "isMovingRight" + }, + { + "state": "STRAFELEFT", + "var": "isMovingLeft" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "idle", + "var": "landStandOnDone" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "id": "LANDRUN", + "interpDuration": 2, + "interpTarget": 2, + "transitions": [ + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "WALKFWD", + "var": "landRunOnDone" } ] } ] }, - "id": "idle", + "id": "mainStateMachine", "type": "stateMachine" }, { @@ -3834,1668 +5505,175 @@ "children": [ ], "data": { - "endFrame": 40, + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 11, "loopFlag": true, - "startFrame": 1, + "startFrame": 11, "timeScale": 1, - "url": "qrc:///avatar/animations/walk_short_fwd.fbx" + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" }, - "id": "walkFwdShort_c", + "id": "lookLeft", "type": "clip" }, { "children": [ ], "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", "endFrame": 30, "loopFlag": true, - "startFrame": 1, + "startFrame": 30, "timeScale": 1, - "url": "qrc:///avatar/animations/walk_fwd.fbx" + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" }, - "id": "walkFwdNormal_c", + "id": "lookRight", "type": "clip" }, { "children": [ ], "data": { - "endFrame": 26, + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 50, "loopFlag": true, - "startFrame": 1, + "startFrame": 50, "timeScale": 1, - "url": "qrc:///avatar/animations/walk_fwd_fast.fbx" + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" }, - "id": "walkFwdFast_c", + "id": "lookUp", "type": "clip" }, { "children": [ ], "data": { - "endFrame": 18, + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 70, "loopFlag": true, - "startFrame": 1, + "startFrame": 70, "timeScale": 1, - "url": "qrc:///avatar/animations/jog_fwd.fbx" + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" }, - "id": "walkFwdJog_c", + "id": "lookDown", "type": "clip" }, { "children": [ ], "data": { - "endFrame": 19, + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 97, "loopFlag": true, - "startFrame": 1, + "startFrame": 97, "timeScale": 1, - "url": "qrc:///avatar/animations/run_fast_fwd.fbx" + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" }, - "id": "walkFwdRun_c", - "type": "clip" - } - ], - "data": { - "alpha": 0, - "alphaVar": "moveForwardAlpha", - "characteristicSpeeds": [ - 0.5, - 1.8, - 2.5, - 3.55, - 5.675 - ], - "desiredSpeed": 1.4, - "desiredSpeedVar": "moveForwardSpeed" - }, - "id": "WALKFWD", - "type": "blendLinearMove" - }, - { - "children": [ - ], - "data": { - "endFrame": 13, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_to_walk.fbx" - }, - "id": "idleToWalkFwd", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 59, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/settle_to_idle_small.fbx" - }, - "id": "idleSettle", - "type": "clip" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 37, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/walk_bwd.fbx" - }, - "id": "walkBwdShort_c", + "id": "lookUpLeft", "type": "clip" }, { "children": [ ], "data": { - "endFrame": 28, + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 110, "loopFlag": true, - "startFrame": 1, + "startFrame": 110, "timeScale": 1, - "url": "qrc:///avatar/animations/walk_bwd_fast.fbx" + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" }, - "id": "walkBwdFast_c", + "id": "lookUpRight", "type": "clip" }, { "children": [ ], "data": { - "endFrame": 20, + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 130, "loopFlag": true, - "startFrame": 1, + "startFrame": 130, "timeScale": 1, - "url": "qrc:///avatar/animations/jog_bwd.fbx" + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" }, - "id": "jogBwd_c", + "id": "lookDownLeft", "type": "clip" }, { "children": [ ], "data": { - "endFrame": 14, + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 150, "loopFlag": true, - "startFrame": 1, + "startFrame": 150, "timeScale": 1, - "url": "qrc:///avatar/animations/run_bwd.fbx" + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" }, - "id": "runBwd_c", - "type": "clip" - } - ], - "data": { - "alpha": 0, - "alphaVar": "moveBackwardAlpha", - "characteristicSpeeds": [ - 0.6, - 1.6, - 2.8, - 4.5 - ], - "desiredSpeed": 1.4, - "desiredSpeedVar": "moveBackwardSpeed" - }, - "id": "WALKBWD", - "type": "blendLinearMove" - }, - { - "children": [ - ], - "data": { - "endFrame": 33, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/turn_left.fbx" - }, - "id": "turnLeft", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 31, - "loopFlag": true, - "mirrorFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/turn_right.fbx" - }, - "id": "turnRight", - "type": "clip" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 30, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/side_step_short_left.fbx" - }, - "id": "strafeLeftShortStep_c", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 20, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/side_step_left.fbx" - }, - "id": "strafeLeftStep_c", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 35, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/walk_left.fbx" - }, - "id": "strafeLeftWalk_c", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 21, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/walk_left_fast.fbx" - }, - "id": "strafeLeftWalkFast_c", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 20, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/jog_left.fbx" - }, - "id": "strafeLeftJog_c", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 19, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/run_fast_left.fbx" - }, - "id": "strafeLeftRun_c", - "type": "clip" - } - ], - "data": { - "alpha": 0, - "alphaVar": "moveLateralAlpha", - "characteristicSpeeds": [ - 0.1, - 0.5, - 1, - 2.55, - 3.35, - 5.25 - ], - "desiredSpeed": 1.4, - "desiredSpeedVar": "moveLateralSpeed" - }, - "id": "STRAFELEFT", - "type": "blendLinearMove" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 30, - "loopFlag": true, - "mirrorFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/side_step_short_left.fbx" - }, - "id": "strafeRightShortStep_c", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 20, - "loopFlag": true, - "mirrorFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/side_step_left.fbx" - }, - "id": "strafeRightStep_c", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 35, - "loopFlag": true, - "mirrorFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/walk_right.fbx" - }, - "id": "strafeRightWalk_c", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 21, - "loopFlag": true, - "mirrorFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/walk_right_fast.fbx" - }, - "id": "strafeRightFast_c", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 20, - "loopFlag": true, - "mirrorFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/jog_right.fbx" - }, - "id": "strafeRightJog_c", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 19, - "loopFlag": true, - "mirrorFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/run_fast_right.fbx" - }, - "id": "strafeRightRun_c", - "type": "clip" - } - ], - "data": { - "alpha": 0, - "alphaVar": "moveLateralAlpha", - "characteristicSpeeds": [ - 0.1, - 0.5, - 1, - 2.55, - 3.4, - 5.25 - ], - "desiredSpeed": 1.4, - "desiredSpeedVar": "moveLateralSpeed" - }, - "id": "STRAFERIGHT", - "type": "blendLinearMove" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 30, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/side_step_short_left.fbx" - }, - "id": "stepLeftShort_c", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 20, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/side_step_left.fbx" - }, - "id": "stepLeft_c", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 16, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/side_step_left_fast.fbx" - }, - "id": "strafeLeftAnim_c", - "type": "clip" - } - ], - "data": { - "alpha": 0, - "alphaVar": "moveLateralAlpha", - "characteristicSpeeds": [ - 0, - 0.5, - 2.5 - ], - "desiredSpeed": 1.4, - "desiredSpeedVar": "moveLateralSpeed" - }, - "id": "strafeLeftHmd", - "type": "blendLinearMove" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 30, - "loopFlag": true, - "mirrorFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/side_step_short_left.fbx" - }, - "id": "stepRightShort_c", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 20, - "loopFlag": true, - "mirrorFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/side_step_left.fbx" - }, - "id": "stepRight_c", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 16, - "loopFlag": true, - "mirrorFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/side_step_left_fast.fbx" - }, - "id": "strafeRightAnim_c", - "type": "clip" - } - ], - "data": { - "alpha": 0, - "alphaVar": "moveLateralAlpha", - "characteristicSpeeds": [ - 0, - 0.5, - 2.5 - ], - "desiredSpeed": 1.4, - "desiredSpeedVar": "moveLateralSpeed" - }, - "id": "strafeRightHmd", - "type": "blendLinearMove" - }, - { - "children": [ - ], - "data": { - "endFrame": 79, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/fly.fbx" - }, - "id": "fly", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 16, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/jump_standing_launch_all.fbx" - }, - "id": "takeoffStand", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 15, - "loopFlag": false, - "startFrame": 4, - "timeScale": 1, - "url": "qrc:///avatar/animations/jump_running_launch_land_all.fbx" - }, - "id": "TAKEOFFRUN", - "type": "clip" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 1, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/jump_standing_apex_all.fbx" - }, - "id": "inAirStandPreApex", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 2, - "loopFlag": false, - "startFrame": 2, - "timeScale": 1, - "url": "qrc:///avatar/animations/jump_standing_apex_all.fbx" - }, - "id": "inAirStandApex", + "id": "lookDownRight", "type": "clip" }, { "children": [ ], "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", "endFrame": 3, - "loopFlag": false, + "loopFlag": true, "startFrame": 3, "timeScale": 1, - "url": "qrc:///avatar/animations/jump_standing_apex_all.fbx" + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" }, - "id": "inAirStandPostApex", + "id": "lookCenter", "type": "clip" } ], "data": { - "alpha": 0, - "alphaVar": "inAirAlpha" + "alpha": [ + 0, + 0, + 0 + ], + "alphaVar": "lookAroundAlpha", + "centerId": "lookCenter", + "downId": "lookDown", + "downLeftId": "lookDownLeft", + "downRightId": "lookDownRight", + "leftId": "lookLeft", + "rightId": "lookRight", + "upId": "lookUp", + "upLeftId": "lookUpLeft", + "upRightId": "lookUpRight" }, - "id": "inAirStand", - "type": "blendLinear" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 16, - "loopFlag": false, - "startFrame": 16, - "timeScale": 1, - "url": "qrc:///avatar/animations/jump_running_launch_land_all.fbx" - }, - "id": "inAirRunPreApex", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 22, - "loopFlag": false, - "startFrame": 22, - "timeScale": 1, - "url": "qrc:///avatar/animations/jump_running_launch_land_all.fbx" - }, - "id": "inAirRunApex", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 33, - "loopFlag": false, - "startFrame": 33, - "timeScale": 1, - "url": "qrc:///avatar/animations/jump_running_launch_land_all.fbx" - }, - "id": "inAirRunPostApex", - "type": "clip" - } - ], - "data": { - "alpha": 0, - "alphaVar": "inAirAlpha" - }, - "id": "INAIRRUN", - "type": "blendLinear" - }, - { - "children": [ - ], - "data": { - "endFrame": 6, - "loopFlag": false, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/jump_standing_land_settle_all.fbx" - }, - "id": "landStandImpact", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 68, - "loopFlag": false, - "startFrame": 6, - "timeScale": 1, - "url": "qrc:///avatar/animations/jump_standing_land_settle_all.fbx" - }, - "id": "landStand", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 40, - "loopFlag": false, - "startFrame": 29, - "timeScale": 1, - "url": "qrc:///avatar/animations/jump_running_launch_land_all.fbx" - }, - "id": "LANDRUN", - "type": "clip" + "id": "lookAround", + "type": "blendDirectional" } ], "data": { - "currentState": "idle", - "outputJoints": [ - "LeftFoot", - "RightFoot" - ], - "states": [ - { - "easingType": "easeInOutQuad", - "id": "seated", - "interpDuration": 6, - "interpTarget": 6, - "interpType": "evaluateBoth", - "transitions": [ - { - "state": "idle", - "var": "isNotMoving" - }, - { - "state": "WALKFWD", - "var": "isMovingForward" - }, - { - "state": "WALKBWD", - "var": "isMovingBackward" - }, - { - "state": "STRAFERIGHT", - "var": "isMovingRight" - }, - { - "state": "STRAFELEFT", - "var": "isMovingLeft" - }, - { - "state": "turnRight", - "var": "isTurningRight" - }, - { - "state": "turnLeft", - "var": "isTurningLeft" - }, - { - "state": "fly", - "var": "isFlying" - }, - { - "state": "takeoffStand", - "var": "isTakeoffStand" - }, - { - "state": "TAKEOFFRUN", - "var": "isTakeoffRun" - }, - { - "state": "inAirStand", - "var": "isInAirStand" - }, - { - "state": "INAIRRUN", - "var": "isInAirRun" - }, - { - "state": "strafeRightHmd", - "var": "isMovingRightHmd" - }, - { - "state": "strafeLeftHmd", - "var": "isMovingLeftHmd" - }, - { - "state": "idle", - "var": "isNotSeated" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "idle", - "interpDuration": 30, - "interpTarget": 30, - "interpType": "evaluateBoth", - "transitions": [ - { - "state": "WALKFWD", - "var": "isMovingForward" - }, - { - "state": "WALKBWD", - "var": "isMovingBackward" - }, - { - "state": "STRAFERIGHT", - "var": "isMovingRight" - }, - { - "state": "STRAFELEFT", - "var": "isMovingLeft" - }, - { - "state": "turnRight", - "var": "isTurningRight" - }, - { - "state": "turnLeft", - "var": "isTurningLeft" - }, - { - "state": "fly", - "var": "isFlying" - }, - { - "state": "takeoffStand", - "var": "isTakeoffStand" - }, - { - "state": "TAKEOFFRUN", - "var": "isTakeoffRun" - }, - { - "state": "inAirStand", - "var": "isInAirStand" - }, - { - "state": "INAIRRUN", - "var": "isInAirRun" - }, - { - "state": "strafeRightHmd", - "var": "isMovingRightHmd" - }, - { - "state": "strafeLeftHmd", - "var": "isMovingLeftHmd" - }, - { - "state": "seated", - "var": "isSeated" - } - ] - }, - { - "id": "idleToWalkFwd", - "interpDuration": 8, - "interpTarget": 12, - "transitions": [ - { - "state": "WALKFWD", - "var": "idleToWalkFwdOnDone" - }, - { - "state": "idle", - "var": "isNotMoving" - }, - { - "state": "WALKBWD", - "var": "isMovingBackward" - }, - { - "state": "STRAFERIGHT", - "var": "isMovingRight" - }, - { - "state": "STRAFELEFT", - "var": "isMovingLeft" - }, - { - "state": "turnRight", - "var": "isTurningRight" - }, - { - "state": "turnLeft", - "var": "isTurningLeft" - }, - { - "state": "fly", - "var": "isFlying" - }, - { - "state": "takeoffStand", - "var": "isTakeoffStand" - }, - { - "state": "TAKEOFFRUN", - "var": "isTakeoffRun" - }, - { - "state": "inAirStand", - "var": "isInAirStand" - }, - { - "state": "INAIRRUN", - "var": "isInAirRun" - }, - { - "state": "strafeRightHmd", - "var": "isMovingRightHmd" - }, - { - "state": "strafeLeftHmd", - "var": "isMovingLeftHmd" - }, - { - "state": "seated", - "var": "isSeated" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "idleSettle", - "interpDuration": 12, - "interpTarget": 12, - "interpType": "evaluateBoth", - "transitions": [ - { - "state": "idle", - "var": "idleSettleOnDone" - }, - { - "state": "WALKFWD", - "var": "isMovingForward" - }, - { - "state": "WALKBWD", - "var": "isMovingBackward" - }, - { - "state": "STRAFERIGHT", - "var": "isMovingRight" - }, - { - "state": "STRAFELEFT", - "var": "isMovingLeft" - }, - { - "state": "strafeRightHmd", - "var": "isMovingRightHmd" - }, - { - "state": "strafeLeftHmd", - "var": "isMovingLeftHmd" - }, - { - "state": "turnRight", - "var": "isTurningRight" - }, - { - "state": "turnLeft", - "var": "isTurningLeft" - }, - { - "state": "fly", - "var": "isFlying" - }, - { - "state": "takeoffStand", - "var": "isTakeoffStand" - }, - { - "state": "TAKEOFFRUN", - "var": "isTakeoffRun" - }, - { - "state": "inAirStand", - "var": "isInAirStand" - }, - { - "state": "INAIRRUN", - "var": "isInAirRun" - }, - { - "state": "seated", - "var": "isSeated" - } - ] - }, - { - "id": "WALKFWD", - "interpDuration": 10, - "interpTarget": 35, - "interpType": "snapshotPrev", - "transitions": [ - { - "state": "idleSettle", - "var": "isNotMoving" - }, - { - "state": "WALKBWD", - "var": "isMovingBackward" - }, - { - "state": "STRAFERIGHT", - "var": "isMovingRight" - }, - { - "state": "STRAFELEFT", - "var": "isMovingLeft" - }, - { - "state": "turnRight", - "var": "isTurningRight" - }, - { - "state": "turnLeft", - "var": "isTurningLeft" - }, - { - "state": "fly", - "var": "isFlying" - }, - { - "state": "takeoffStand", - "var": "isTakeoffStand" - }, - { - "state": "TAKEOFFRUN", - "var": "isTakeoffRun" - }, - { - "state": "inAirStand", - "var": "isInAirStand" - }, - { - "state": "INAIRRUN", - "var": "isInAirRun" - }, - { - "state": "strafeRightHmd", - "var": "isMovingRightHmd" - }, - { - "state": "strafeLeftHmd", - "var": "isMovingLeftHmd" - }, - { - "state": "seated", - "var": "isSeated" - } - ] - }, - { - "id": "WALKBWD", - "interpDuration": 10, - "interpTarget": 35, - "interpType": "snapshotPrev", - "transitions": [ - { - "state": "idleSettle", - "var": "isNotMoving" - }, - { - "state": "WALKFWD", - "var": "isMovingForward" - }, - { - "state": "STRAFERIGHT", - "var": "isMovingRight" - }, - { - "state": "STRAFELEFT", - "var": "isMovingLeft" - }, - { - "state": "turnRight", - "var": "isTurningRight" - }, - { - "state": "turnLeft", - "var": "isTurningLeft" - }, - { - "state": "fly", - "var": "isFlying" - }, - { - "state": "takeoffStand", - "var": "isTakeoffStand" - }, - { - "state": "TAKEOFFRUN", - "var": "isTakeoffRun" - }, - { - "state": "inAirStand", - "var": "isInAirStand" - }, - { - "state": "INAIRRUN", - "var": "isInAirRun" - }, - { - "state": "strafeRightHmd", - "var": "isMovingRightHmd" - }, - { - "state": "strafeLeftHmd", - "var": "isMovingLeftHmd" - }, - { - "state": "seated", - "var": "isSeated" - } - ] - }, - { - "id": "STRAFERIGHT", - "interpDuration": 8, - "interpTarget": 25, - "interpType": "snapshotPrev", - "transitions": [ - { - "state": "idleSettle", - "var": "isNotMoving" - }, - { - "state": "WALKFWD", - "var": "isMovingForward" - }, - { - "state": "WALKBWD", - "var": "isMovingBackward" - }, - { - "state": "STRAFELEFT", - "var": "isMovingLeft" - }, - { - "state": "turnRight", - "var": "isTurningRight" - }, - { - "state": "turnLeft", - "var": "isTurningLeft" - }, - { - "state": "fly", - "var": "isFlying" - }, - { - "state": "takeoffStand", - "var": "isTakeoffStand" - }, - { - "state": "TAKEOFFRUN", - "var": "isTakeoffRun" - }, - { - "state": "inAirStand", - "var": "isInAirStand" - }, - { - "state": "INAIRRUN", - "var": "isInAirRun" - }, - { - "state": "strafeRightHmd", - "var": "isMovingRightHmd" - }, - { - "state": "strafeLeftHmd", - "var": "isMovingLeftHmd" - }, - { - "state": "seated", - "var": "isSeated" - } - ] - }, - { - "id": "STRAFELEFT", - "interpDuration": 8, - "interpTarget": 25, - "interpType": "snapshotPrev", - "transitions": [ - { - "state": "idleSettle", - "var": "isNotMoving" - }, - { - "state": "WALKFWD", - "var": "isMovingForward" - }, - { - "state": "WALKBWD", - "var": "isMovingBackward" - }, - { - "state": "STRAFERIGHT", - "var": "isMovingRight" - }, - { - "state": "turnRight", - "var": "isTurningRight" - }, - { - "state": "turnLeft", - "var": "isTurningLeft" - }, - { - "state": "fly", - "var": "isFlying" - }, - { - "state": "takeoffStand", - "var": "isTakeoffStand" - }, - { - "state": "TAKEOFFRUN", - "var": "isTakeoffRun" - }, - { - "state": "inAirStand", - "var": "isInAirStand" - }, - { - "state": "INAIRRUN", - "var": "isInAirRun" - }, - { - "state": "strafeRightHmd", - "var": "isMovingRightHmd" - }, - { - "state": "strafeLeftHmd", - "var": "isMovingLeftHmd" - }, - { - "state": "seated", - "var": "isSeated" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "turnRight", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "transitions": [ - { - "state": "idle", - "var": "isNotTurning" - }, - { - "state": "WALKFWD", - "var": "isMovingForward" - }, - { - "state": "WALKBWD", - "var": "isMovingBackward" - }, - { - "state": "STRAFERIGHT", - "var": "isMovingRight" - }, - { - "state": "STRAFELEFT", - "var": "isMovingLeft" - }, - { - "state": "turnLeft", - "var": "isTurningLeft" - }, - { - "state": "fly", - "var": "isFlying" - }, - { - "state": "takeoffStand", - "var": "isTakeoffStand" - }, - { - "state": "TAKEOFFRUN", - "var": "isTakeoffRun" - }, - { - "state": "inAirStand", - "var": "isInAirStand" - }, - { - "state": "INAIRRUN", - "var": "isInAirRun" - }, - { - "state": "strafeRightHmd", - "var": "isMovingRightHmd" - }, - { - "state": "strafeLeftHmd", - "var": "isMovingLeftHmd" - }, - { - "state": "seated", - "var": "isSeated" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "turnLeft", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "transitions": [ - { - "state": "idle", - "var": "isNotTurning" - }, - { - "state": "WALKFWD", - "var": "isMovingForward" - }, - { - "state": "WALKBWD", - "var": "isMovingBackward" - }, - { - "state": "STRAFERIGHT", - "var": "isMovingRight" - }, - { - "state": "STRAFELEFT", - "var": "isMovingLeft" - }, - { - "state": "turnRight", - "var": "isTurningRight" - }, - { - "state": "fly", - "var": "isFlying" - }, - { - "state": "takeoffStand", - "var": "isTakeoffStand" - }, - { - "state": "TAKEOFFRUN", - "var": "isTakeoffRun" - }, - { - "state": "inAirStand", - "var": "isInAirStand" - }, - { - "state": "INAIRRUN", - "var": "isInAirRun" - }, - { - "state": "strafeRightHmd", - "var": "isMovingRightHmd" - }, - { - "state": "strafeLeftHmd", - "var": "isMovingLeftHmd" - }, - { - "state": "seated", - "var": "isSeated" - } - ] - }, - { - "id": "strafeRightHmd", - "interpDuration": 8, - "interpTarget": 8, - "interpType": "snapshotPrev", - "transitions": [ - { - "state": "idleSettle", - "var": "isNotMoving" - }, - { - "state": "WALKFWD", - "var": "isMovingForward" - }, - { - "state": "WALKBWD", - "var": "isMovingBackward" - }, - { - "state": "strafeLeftHmd", - "var": "isMovingLeftHmd" - }, - { - "state": "STRAFERIGHT", - "var": "isMovingRight" - }, - { - "state": "STRAFELEFT", - "var": "isMovingLeft" - }, - { - "state": "turnRight", - "var": "isTurningRight" - }, - { - "state": "turnLeft", - "var": "isTurningLeft" - }, - { - "state": "fly", - "var": "isFlying" - }, - { - "state": "takeoffStand", - "var": "isTakeoffStand" - }, - { - "state": "TAKEOFFRUN", - "var": "isTakeoffRun" - }, - { - "state": "inAirStand", - "var": "isInAirStand" - }, - { - "state": "INAIRRUN", - "var": "isInAirRun" - }, - { - "state": "seated", - "var": "isSeated" - } - ] - }, - { - "id": "strafeLeftHmd", - "interpDuration": 8, - "interpTarget": 8, - "interpType": "snapshotPrev", - "transitions": [ - { - "state": "idleSettle", - "var": "isNotMoving" - }, - { - "state": "WALKFWD", - "var": "isMovingForward" - }, - { - "state": "WALKBWD", - "var": "isMovingBackward" - }, - { - "state": "strafeRightHmd", - "var": "isMovingRightHmd" - }, - { - "state": "STRAFERIGHT", - "var": "isMovingRight" - }, - { - "state": "STRAFELEFT", - "var": "isMovingLeft" - }, - { - "state": "turnRight", - "var": "isTurningRight" - }, - { - "state": "turnLeft", - "var": "isTurningLeft" - }, - { - "state": "fly", - "var": "isFlying" - }, - { - "state": "takeoffStand", - "var": "isTakeoffStand" - }, - { - "state": "TAKEOFFRUN", - "var": "isTakeoffRun" - }, - { - "state": "inAirStand", - "var": "isInAirStand" - }, - { - "state": "INAIRRUN", - "var": "isInAirRun" - }, - { - "state": "seated", - "var": "isSeated" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "fly", - "interpDuration": 24, - "interpTarget": 24, - "interpType": "evaluateBoth", - "transitions": [ - { - "state": "idleSettle", - "var": "isNotFlying" - } - ] - }, - { - "id": "takeoffStand", - "interpDuration": 2, - "interpTarget": 2, - "transitions": [ - { - "state": "inAirStand", - "var": "isNotTakeoff" - } - ] - }, - { - "id": "TAKEOFFRUN", - "interpDuration": 2, - "interpTarget": 2, - "transitions": [ - { - "state": "INAIRRUN", - "var": "isNotTakeoff" - } - ] - }, - { - "id": "inAirStand", - "interpDuration": 3, - "interpTarget": 3, - "interpType": "snapshotPrev", - "transitions": [ - { - "state": "landStandImpact", - "var": "isNotInAir" - } - ] - }, - { - "id": "INAIRRUN", - "interpDuration": 3, - "interpTarget": 3, - "interpType": "snapshotPrev", - "transitions": [ - { - "state": "WALKFWD", - "var": "isNotInAir" - } - ] - }, - { - "id": "landStandImpact", - "interpDuration": 1, - "interpTarget": 1, - "transitions": [ - { - "state": "fly", - "var": "isFlying" - }, - { - "state": "takeoffStand", - "var": "isTakeoffStand" - }, - { - "state": "TAKEOFFRUN", - "var": "isTakeoffRun" - }, - { - "state": "landStand", - "var": "landStandImpactOnDone" - } - ] - }, - { - "id": "landStand", - "interpDuration": 1, - "interpTarget": 1, - "transitions": [ - { - "state": "WALKFWD", - "var": "isMovingForward" - }, - { - "state": "WALKBWD", - "var": "isMovingBackward" - }, - { - "state": "STRAFERIGHT", - "var": "isMovingRight" - }, - { - "state": "STRAFELEFT", - "var": "isMovingLeft" - }, - { - "state": "turnRight", - "var": "isTurningRight" - }, - { - "state": "turnLeft", - "var": "isTurningLeft" - }, - { - "state": "fly", - "var": "isFlying" - }, - { - "state": "takeoffStand", - "var": "isTakeoffStand" - }, - { - "state": "TAKEOFFRUN", - "var": "isTakeoffRun" - }, - { - "state": "inAirStand", - "var": "isInAirStand" - }, - { - "state": "INAIRRUN", - "var": "isInAirRun" - }, - { - "state": "idle", - "var": "landStandOnDone" - }, - { - "state": "strafeRightHmd", - "var": "isMovingRightHmd" - }, - { - "state": "strafeLeftHmd", - "var": "isMovingLeftHmd" - }, - { - "state": "seated", - "var": "isSeated" - } - ] - }, - { - "id": "LANDRUN", - "interpDuration": 2, - "interpTarget": 2, - "transitions": [ - { - "state": "fly", - "var": "isFlying" - }, - { - "state": "takeoffStand", - "var": "isTakeoffStand" - }, - { - "state": "TAKEOFFRUN", - "var": "isTakeoffRun" - }, - { - "state": "WALKFWD", - "var": "landRunOnDone" - } - ] - } - ] + "alpha": 0, + "alphaVar": "additiveBlendAlpha", + "blendType": "addAbsolute" }, - "id": "mainStateMachine", - "type": "stateMachine" + "id": "additiveBlend", + "type": "blendLinear" } ], "data": { @@ -5695,6 +5873,7 @@ }, "id": "userAnimStateMachine", "type": "stateMachine" + }, "version": "1.1" -} +} \ No newline at end of file diff --git a/interface/resources/controllers/keyboardMouse.json b/interface/resources/controllers/keyboardMouse.json index 9b3c711c63..ff02142891 100644 --- a/interface/resources/controllers/keyboardMouse.json +++ b/interface/resources/controllers/keyboardMouse.json @@ -3,8 +3,8 @@ "channels": [ { "from": "Keyboard.A", "when": ["Keyboard.RightMouseButton", "!Keyboard.Control"], "to": "Actions.LATERAL_LEFT" }, { "from": "Keyboard.D", "when": ["Keyboard.RightMouseButton", "!Keyboard.Control"], "to": "Actions.LATERAL_RIGHT" }, - { "from": "Keyboard.E", "when": "!Keyboard.Control", "to": "Actions.LATERAL_RIGHT" }, - { "from": "Keyboard.Q", "when": "!Keyboard.Control", "to": "Actions.LATERAL_LEFT" }, + { "from": "Keyboard.E", "when": ["!Application.CameraSelfie", "!Application.CameraLookAt", "!Keyboard.Control"], "to": "Actions.LATERAL_RIGHT" }, + { "from": "Keyboard.Q", "when": ["!Application.CameraSelfie"," !Application.CameraLookAt", "!Keyboard.Control"], "to": "Actions.LATERAL_LEFT" }, { "from": "Keyboard.T", "when": "!Keyboard.Control", "to": "Actions.TogglePushToTalk" }, { "comment" : "Mouse turn need to be small continuous increments", @@ -39,7 +39,6 @@ ] }, - { "from": { "makeAxis" : [ ["Keyboard.Left" ], ["Keyboard.Right"] @@ -85,6 +84,24 @@ "when": ["Application.CameraThirdPerson", "!Keyboard.Shift"], "to": "Actions.Yaw" }, + + { "from": { "makeAxis" : [ + ["Keyboard.Left"], + ["Keyboard.Right"] + ] + }, + "when": ["Application.CameraLookAt", "!Keyboard.Shift"], + "to": "Actions.Yaw" + }, + + { "from": { "makeAxis" : [ + ["Keyboard.Left"], + ["Keyboard.Right"] + ] + }, + "when": ["Application.CameraSelfie", "!Keyboard.Shift"], + "to": "Actions.Yaw" + }, { "from": { "makeAxis" : [ ["Keyboard.A"], @@ -104,6 +121,24 @@ "to": "Actions.Yaw" }, + { "from": { "makeAxis" : [ + ["Keyboard.Q"], + ["Keyboard.E"] + ] + }, + "when": ["Application.CameraLookAt", "!Keyboard.Control"], + "to": "Actions.Yaw" + }, + + { "from": { "makeAxis" : [ + ["Keyboard.E"], + ["Keyboard.Q"] + ] + }, + "when": ["Application.CameraSelfie", "!Keyboard.Control"], + "to": "Actions.Yaw" + }, + { "from": { "makeAxis" : [ ["Keyboard.TouchpadLeft"], ["Keyboard.TouchpadRight"] @@ -122,6 +157,24 @@ "to": "Actions.Yaw" }, + { "from": { "makeAxis" : [ + ["Keyboard.TouchpadLeft"], + ["Keyboard.TouchpadRight"] + ] + }, + "when": "Application.CameraLookAt", + "to": "Actions.Yaw" + }, + + { "from": { "makeAxis" : [ + ["Keyboard.TouchpadLeft"], + ["Keyboard.TouchpadRight"] + ] + }, + "when": "Application.CameraSelfie", + "to": "Actions.Yaw" + }, + { "from": { "makeAxis" : ["Keyboard.MouseMoveLeft", "Keyboard.MouseMoveRight"] }, "when": "Keyboard.RightMouseButton", "to": "Actions.DeltaYaw", @@ -132,7 +185,7 @@ }, { "from": { "makeAxis" : ["Keyboard.MouseMoveUp", "Keyboard.MouseMoveDown"] }, - "when": "Keyboard.RightMouseButton", + "when": ["!Application.CameraSelfie", "!Application.CameraLookAt", "Keyboard.RightMouseButton"], "to": "Actions.DeltaPitch", "filters": [ @@ -140,16 +193,44 @@ ] }, - { "from": "Keyboard.W", "when": "!Keyboard.Control", "to": "Actions.LONGITUDINAL_FORWARD" }, - { "from": "Keyboard.S", "when": "!Keyboard.Control", "to": "Actions.LONGITUDINAL_BACKWARD" }, + { "from": { "makeAxis" : ["Keyboard.MouseMoveUp", "Keyboard.MouseMoveDown"] }, + "when": ["Application.CameraLookAt", "Keyboard.RightMouseButton"], + "to": "Actions.DeltaPitch", + "filters": + [ + { "type": "scale", "scale": 0.3 } + ] + }, + + { "from": { "makeAxis" : ["Keyboard.MouseMoveDown", "Keyboard.MouseMoveUp"] }, + "when": ["Application.CameraSelfie", "Keyboard.RightMouseButton"], + "to": "Actions.DeltaPitch", + "filters": + [ + { "type": "scale", "scale": 0.3 } + ] + }, + + { "from": "Keyboard.W", "when": ["!Application.CameraSelfie", "!Keyboard.Control"], "to": "Actions.LONGITUDINAL_FORWARD" }, + { "from": "Keyboard.S", "when": ["!Application.CameraSelfie", "!Keyboard.Control"], "to": "Actions.LONGITUDINAL_BACKWARD" }, + { "from": "Keyboard.S", "when": ["Application.CameraSelfie", "!Keyboard.Control"], "to": "Actions.LONGITUDINAL_FORWARD" }, + { "from": "Keyboard.W", "when": ["Application.CameraSelfie", "!Keyboard.Control"], "to": "Actions.LONGITUDINAL_BACKWARD" }, + { "from": "Keyboard.A", "when": "Application.CameraLookAt", "to": "Actions.LATERAL_LEFT" }, + { "from": "Keyboard.D", "when": "Application.CameraLookAt", "to": "Actions.LATERAL_RIGHT" }, + { "from": "Keyboard.A", "when": "Application.CameraSelfie", "to": "Actions.LATERAL_RIGHT" }, + { "from": "Keyboard.D", "when": "Application.CameraSelfie", "to": "Actions.LATERAL_LEFT" }, { "from": "Keyboard.Shift", "when": ["!Keyboard.Left", "!Keyboard.Right"], "to": "Actions.SPRINT" }, { "from": "Keyboard.C", "when": "!Keyboard.Control", "to": "Actions.VERTICAL_DOWN" }, { "from": "Keyboard.Left", "when": "Keyboard.Shift", "to": "Actions.LATERAL_LEFT" }, { "from": "Keyboard.Right", "when": "Keyboard.Shift", "to": "Actions.LATERAL_RIGHT" }, { "from": "Keyboard.Up", "when": "Application.CameraFirstPerson", "to": "Actions.LONGITUDINAL_FORWARD" }, { "from": "Keyboard.Up", "when": "Application.CameraThirdPerson", "to": "Actions.LONGITUDINAL_FORWARD" }, + { "from": "Keyboard.Up", "when": "Application.CameraLookAt", "to": "Actions.LONGITUDINAL_FORWARD" }, + { "from": "Keyboard.Up", "when": "Application.CameraSelfie", "to": "Actions.LONGITUDINAL_BACKWARD" }, { "from": "Keyboard.Down", "when": "Application.CameraFirstPerson", "to": "Actions.LONGITUDINAL_BACKWARD" }, { "from": "Keyboard.Down", "when": "Application.CameraThirdPerson", "to": "Actions.LONGITUDINAL_BACKWARD" }, + { "from": "Keyboard.Down", "when": "Application.CameraLookAt", "to": "Actions.LONGITUDINAL_BACKWARD" }, + { "from": "Keyboard.Down", "when": "Application.CameraSelfie", "to": "Actions.LONGITUDINAL_FORWARD" }, { "from": "Keyboard.PgDown", "to": "Actions.VERTICAL_DOWN" }, { "from": "Keyboard.PgUp", "to": "Actions.VERTICAL_UP" }, diff --git a/interface/resources/qml/hifi/simplifiedUI/settingsApp/vr/VR.qml b/interface/resources/qml/hifi/simplifiedUI/settingsApp/vr/VR.qml index 5f0fbe49d5..420ee11a05 100644 --- a/interface/resources/qml/hifi/simplifiedUI/settingsApp/vr/VR.qml +++ b/interface/resources/qml/hifi/simplifiedUI/settingsApp/vr/VR.qml @@ -71,7 +71,7 @@ Flickable { ColumnLayout { id: controlsContainer Layout.preferredWidth: parent.width - Layout.topMargin: 24 + Layout.topMargin: 24 spacing: 0 HifiStylesUit.GraphikSemiBold { @@ -154,6 +154,45 @@ Flickable { } } } + + ColumnLayout { + Layout.preferredWidth: parent.width + spacing: 0 + + HifiStylesUit.GraphikSemiBold { + text: "VR Rotation Mode" + Layout.preferredWidth: parent.width + height: paintedHeight + size: 22 + color: simplifiedUI.colors.text.white + } + + ColumnLayout { + width: parent.width + Layout.topMargin: simplifiedUI.margins.settings.settingsGroupTopMargin + spacing: simplifiedUI.margins.settings.spacingBetweenRadiobuttons + + ButtonGroup { id: rotationButtonGroup } + + SimplifiedControls.RadioButton { + text: "Snap Turn" + ButtonGroup.group: rotationButtonGroup + checked: MyAvatar.getSnapTurn() === true + onClicked: { + MyAvatar.setSnapTurn(true); + } + } + + SimplifiedControls.RadioButton { + text: "Smooth Turn" + ButtonGroup.group: rotationButtonGroup + checked: MyAvatar.getSnapTurn() === false + onClicked: { + MyAvatar.setSnapTurn(false); + } + } + } + } ColumnLayout { id: micControlsContainer diff --git a/interface/resources/qml/hifi/simplifiedUI/simplifiedControls/TextField.qml b/interface/resources/qml/hifi/simplifiedUI/simplifiedControls/TextField.qml index 1dd3a80a52..44f34c3356 100644 --- a/interface/resources/qml/hifi/simplifiedUI/simplifiedControls/TextField.qml +++ b/interface/resources/qml/hifi/simplifiedUI/simplifiedControls/TextField.qml @@ -24,6 +24,8 @@ TextField { property string rightGlyph: "" property alias bottomBorderVisible: bottomRectangle.visible property alias backgroundColor: textFieldBackground.color + property string unfocusedPlaceholderText + property bool blankPlaceholderTextOnFocus: true color: simplifiedUI.colors.text.white font.family: "Graphik Medium" @@ -47,6 +49,19 @@ TextField { } } + onFocusChanged: { + if (!root.blankPlaceholderTextOnFocus) { + return; + } + + if (focus) { + root.unfocusedPlaceholderText = root.placeholderText; + root.placeholderText = ""; + } else { + root.placeholderText = root.unfocusedPlaceholderText; + } + } + background: Rectangle { id: textFieldBackground color: Qt.rgba(0, 0, 0, 0); diff --git a/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml b/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml index 5e82804cf6..427e45abba 100644 --- a/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml +++ b/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml @@ -372,12 +372,14 @@ Rectangle { readonly property string shortPlaceholderText: "Jump to..." readonly property string longPlaceholderText: "Type the name of a location to quickly jump there..." anchors.centerIn: parent - width: Math.min(parent.width, 600) - height: parent.height - 11 + width: Math.min(parent.width, 445) + height: 35 leftPadding: 8 rightPadding: 8 bottomBorderVisible: false - backgroundColor: "#313131" + backgroundColor: "#1D1D1D" + placeholderTextColor: "#8E8E8E" + font.pixelSize: 14 placeholderText: width - leftPadding - rightPadding < goToTextFieldMetrics.width ? shortPlaceholderText : longPlaceholderText clip: true selectByMouse: true @@ -386,8 +388,8 @@ Rectangle { if (goToTextField.length > 0) { AddressManager.handleLookupString(goToTextField.text); goToTextField.text = ""; - parent.forceActiveFocus(); } + parent.forceActiveFocus(); } } } diff --git a/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml b/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml index 254e4203ce..1d15fe8b23 100644 --- a/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml +++ b/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml @@ -19,6 +19,7 @@ StackView { objectName: "stack" property string title: "General Settings" property alias gotoPreviousApp: root.gotoPreviousApp; + property alias gotoPreviousAppFromScript: root.gotoPreviousAppFromScript; signal sendToScript(var message); function pushSource(path) { @@ -30,6 +31,10 @@ StackView { profileRoot.pop(); } + function emitSendToScript(message) { + profileRoot.sendToScript(message); + } + TabletPreferencesDialog { id: root objectName: "TabletGeneralPreferences" diff --git a/interface/resources/qml/hifi/tablet/TabletRoot.qml b/interface/resources/qml/hifi/tablet/TabletRoot.qml index 5559c36fd1..6001497743 100644 --- a/interface/resources/qml/hifi/tablet/TabletRoot.qml +++ b/interface/resources/qml/hifi/tablet/TabletRoot.qml @@ -104,6 +104,10 @@ Rectangle { if (loader.item.hasOwnProperty("gotoPreviousApp")) { loader.item.gotoPreviousApp = true; } + + if (loader.item.hasOwnProperty("gotoPreviousAppFromScript")) { + loader.item.gotoPreviousAppFromScript = true; + } }); } } @@ -276,7 +280,7 @@ Rectangle { } else { console.log("newSource is of unknown type!"); } - + screenChanged(type, newSource); }); } diff --git a/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml b/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml index c6b4fce14e..8e8a262107 100644 --- a/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml +++ b/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml @@ -30,6 +30,7 @@ Item { property bool keyboardRaised: false property bool punctuationMode: false property bool gotoPreviousApp: false + property bool gotoPreviousAppFromScript: false property var tablet; @@ -72,7 +73,9 @@ Item { function closeDialog() { var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - if (gotoPreviousApp) { + if (gotoPreviousAppFromScript) { + dialog.parent.sendToScript("returnToPreviousApp"); + } else if (gotoPreviousApp) { tablet.returnToPreviousApp(); } else { tablet.gotoHomeScreen(); diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 973a4b605e..3fe03d5661 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -709,6 +709,8 @@ static const QString STATE_CAMERA_FIRST_PERSON = "CameraFirstPerson"; static const QString STATE_CAMERA_THIRD_PERSON = "CameraThirdPerson"; static const QString STATE_CAMERA_ENTITY = "CameraEntity"; static const QString STATE_CAMERA_INDEPENDENT = "CameraIndependent"; +static const QString STATE_CAMERA_LOOK_AT = "CameraLookAt"; +static const QString STATE_CAMERA_SELFIE = "CameraSelfie"; static const QString STATE_SNAP_TURN = "SnapTurn"; static const QString STATE_ADVANCED_MOVEMENT_CONTROLS = "AdvancedMovement"; static const QString STATE_GROUNDED = "Grounded"; @@ -925,7 +927,7 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { DependencyManager::set(); DependencyManager::set(); controller::StateController::setStateVariables({ { STATE_IN_HMD, STATE_CAMERA_FULL_SCREEN_MIRROR, - STATE_CAMERA_FIRST_PERSON, STATE_CAMERA_THIRD_PERSON, STATE_CAMERA_ENTITY, STATE_CAMERA_INDEPENDENT, + STATE_CAMERA_FIRST_PERSON, STATE_CAMERA_THIRD_PERSON, STATE_CAMERA_ENTITY, STATE_CAMERA_INDEPENDENT, STATE_CAMERA_LOOK_AT, STATE_CAMERA_SELFIE, STATE_SNAP_TURN, STATE_ADVANCED_MOVEMENT_CONTROLS, STATE_GROUNDED, STATE_NAV_FOCUSED, STATE_PLATFORM_WINDOWS, STATE_PLATFORM_MAC, STATE_PLATFORM_ANDROID, STATE_LEFT_HAND_DOMINANT, STATE_RIGHT_HAND_DOMINANT, STATE_STRAFE_ENABLED } }); DependencyManager::set(); @@ -1061,6 +1063,9 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo setProperty(hifi::properties::STEAM, (steamClient && steamClient->isRunning())); setProperty(hifi::properties::CRASHED, _previousSessionCrashed); + LogHandler::getInstance().setParent(this); + LogHandler::getInstance().setupRepeatedMessageFlusher(); + { const QStringList args = arguments(); @@ -1872,6 +1877,12 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo _applicationStateDevice->setInputVariant(STATE_CAMERA_THIRD_PERSON, []() -> float { return qApp->getCamera().getMode() == CAMERA_MODE_THIRD_PERSON ? 1 : 0; }); + _applicationStateDevice->setInputVariant(STATE_CAMERA_LOOK_AT, []() -> float { + return qApp->getCamera().getMode() == CAMERA_MODE_LOOK_AT ? 1 : 0; + }); + _applicationStateDevice->setInputVariant(STATE_CAMERA_SELFIE, []() -> float { + return qApp->getCamera().getMode() == CAMERA_MODE_SELFIE ? 1 : 0; + }); _applicationStateDevice->setInputVariant(STATE_CAMERA_ENTITY, []() -> float { return qApp->getCamera().getMode() == CAMERA_MODE_ENTITY ? 1 : 0; }); @@ -3586,7 +3597,8 @@ void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) { // Always use the default eye position, not the actual head eye position. // Using the latter will cause the camera to wobble with idle animations, // or with changes from the face tracker - if (_myCamera.getMode() == CAMERA_MODE_FIRST_PERSON) { + CameraMode mode = _myCamera.getMode(); + if (mode == CAMERA_MODE_FIRST_PERSON) { _thirdPersonHMDCameraBoomValid= false; if (isHMDMode()) { mat4 camMat = myAvatar->getSensorToWorldMatrix() * myAvatar->getHMDSensorMatrix(); @@ -3597,10 +3609,8 @@ void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) { _myCamera.setPosition(myAvatar->getDefaultEyePosition()); _myCamera.setOrientation(myAvatar->getMyHead()->getHeadOrientation()); } - } - else if (_myCamera.getMode() == CAMERA_MODE_THIRD_PERSON) { + } else if (mode == CAMERA_MODE_THIRD_PERSON || mode == CAMERA_MODE_LOOK_AT || mode == CAMERA_MODE_SELFIE) { if (isHMDMode()) { - if (!_thirdPersonHMDCameraBoomValid) { const glm::vec3 CAMERA_OFFSET = glm::vec3(0.0f, 0.0f, 0.7f); _thirdPersonHMDCameraBoom = cancelOutRollAndPitch(myAvatar->getHMDSensorOrientation()) * CAMERA_OFFSET; @@ -3615,22 +3625,28 @@ void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) { _myCamera.setOrientation(glm::normalize(glmExtractRotation(worldCameraMat))); _myCamera.setPosition(extractTranslation(worldCameraMat)); - } - else { + } else { _thirdPersonHMDCameraBoomValid = false; - - _myCamera.setOrientation(myAvatar->getHead()->getOrientation()); - if (isOptionChecked(MenuOption::CenterPlayerInView)) { + if (mode == CAMERA_MODE_THIRD_PERSON) { + _myCamera.setOrientation(myAvatar->getHead()->getOrientation()); + if (isOptionChecked(MenuOption::CenterPlayerInView)) { + _myCamera.setPosition(myAvatar->getDefaultEyePosition() + + _myCamera.getOrientation() * boomOffset); + } else { + _myCamera.setPosition(myAvatar->getDefaultEyePosition() + + myAvatar->getWorldOrientation() * boomOffset); + } + } else { + glm::quat lookAtRotation = myAvatar->getLookAtRotation(); + if (mode == CAMERA_MODE_SELFIE) { + lookAtRotation = lookAtRotation * glm::angleAxis(PI, myAvatar->getWorldOrientation() * Vectors::UP); + } _myCamera.setPosition(myAvatar->getDefaultEyePosition() - + _myCamera.getOrientation() * boomOffset); - } - else { - _myCamera.setPosition(myAvatar->getDefaultEyePosition() - + myAvatar->getWorldOrientation() * boomOffset); + + lookAtRotation * boomOffset); + _myCamera.lookAt(myAvatar->getDefaultEyePosition()); } } - } - else if (_myCamera.getMode() == CAMERA_MODE_MIRROR) { + } else if (mode == CAMERA_MODE_MIRROR) { _thirdPersonHMDCameraBoomValid= false; if (isHMDMode()) { @@ -3668,8 +3684,7 @@ void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) { glm::vec3(0.0f, 0.0f, -1.0f) * myAvatar->getBoomLength() * _scaleMirror); } renderArgs._renderMode = RenderArgs::MIRROR_RENDER_MODE; - } - else if (_myCamera.getMode() == CAMERA_MODE_ENTITY) { + } else if (mode == CAMERA_MODE_ENTITY) { _thirdPersonHMDCameraBoomValid= false; EntityItemPointer cameraEntity = _myCamera.getCameraEntityPointer(); if (cameraEntity != nullptr) { @@ -4387,12 +4402,12 @@ void Application::keyPressEvent(QKeyEvent* event) { } case Qt::Key_2: { Menu* menu = Menu::getInstance(); - menu->triggerOption(MenuOption::FullscreenMirror); + menu->triggerOption(MenuOption::SelfieCamera); break; } case Qt::Key_3: { Menu* menu = Menu::getInstance(); - menu->triggerOption(MenuOption::ThirdPerson); + menu->triggerOption(MenuOption::LookAtCamera); break; } case Qt::Key_4: @@ -5484,7 +5499,7 @@ void Application::loadSettings() { // dictated that we should be in first person Menu::getInstance()->setIsOptionChecked(MenuOption::FirstPerson, isFirstPerson); Menu::getInstance()->setIsOptionChecked(MenuOption::ThirdPerson, !isFirstPerson); - _myCamera.setMode((isFirstPerson) ? CAMERA_MODE_FIRST_PERSON : CAMERA_MODE_THIRD_PERSON); + _myCamera.setMode((isFirstPerson) ? CAMERA_MODE_FIRST_PERSON : CAMERA_MODE_LOOK_AT); cameraMenuChanged(); auto inputs = pluginManager->getInputPlugins(); @@ -5842,11 +5857,16 @@ void Application::cycleCamera() { } else if (menu->isOptionChecked(MenuOption::FirstPerson)) { menu->setIsOptionChecked(MenuOption::FirstPerson, false); - menu->setIsOptionChecked(MenuOption::ThirdPerson, true); + menu->setIsOptionChecked(MenuOption::LookAtCamera, true); - } else if (menu->isOptionChecked(MenuOption::ThirdPerson)) { + } else if (menu->isOptionChecked(MenuOption::LookAtCamera)) { - menu->setIsOptionChecked(MenuOption::ThirdPerson, false); + menu->setIsOptionChecked(MenuOption::LookAtCamera, false); + menu->setIsOptionChecked(MenuOption::SelfieCamera, true); + + } else if (menu->isOptionChecked(MenuOption::SelfieCamera)) { + + menu->setIsOptionChecked(MenuOption::SelfieCamera, false); menu->setIsOptionChecked(MenuOption::FullscreenMirror, true); } @@ -5858,11 +5878,11 @@ void Application::cameraModeChanged() { case CAMERA_MODE_FIRST_PERSON: Menu::getInstance()->setIsOptionChecked(MenuOption::FirstPerson, true); break; - case CAMERA_MODE_THIRD_PERSON: - Menu::getInstance()->setIsOptionChecked(MenuOption::ThirdPerson, true); + case CAMERA_MODE_LOOK_AT: + Menu::getInstance()->setIsOptionChecked(MenuOption::LookAtCamera, true); break; - case CAMERA_MODE_MIRROR: - Menu::getInstance()->setIsOptionChecked(MenuOption::FullscreenMirror, true); + case CAMERA_MODE_SELFIE: + Menu::getInstance()->setIsOptionChecked(MenuOption::SelfieCamera, true); break; default: // we don't have menu items for the others, so just leave it alone. @@ -5878,32 +5898,32 @@ void Application::changeViewAsNeeded(float boomLength) { if (_myCamera.getMode() == CAMERA_MODE_FIRST_PERSON && boomLengthGreaterThanMinimum) { Menu::getInstance()->setIsOptionChecked(MenuOption::FirstPerson, false); - Menu::getInstance()->setIsOptionChecked(MenuOption::ThirdPerson, true); + Menu::getInstance()->setIsOptionChecked(MenuOption::LookAtCamera, true); cameraMenuChanged(); - } else if (_myCamera.getMode() == CAMERA_MODE_THIRD_PERSON && !boomLengthGreaterThanMinimum) { + } else if (_myCamera.getMode() == CAMERA_MODE_LOOK_AT && !boomLengthGreaterThanMinimum) { Menu::getInstance()->setIsOptionChecked(MenuOption::FirstPerson, true); - Menu::getInstance()->setIsOptionChecked(MenuOption::ThirdPerson, false); + Menu::getInstance()->setIsOptionChecked(MenuOption::LookAtCamera, false); cameraMenuChanged(); } } void Application::cameraMenuChanged() { auto menu = Menu::getInstance(); - if (menu->isOptionChecked(MenuOption::FullscreenMirror)) { - if (!isHMDMode() && _myCamera.getMode() != CAMERA_MODE_MIRROR) { - _mirrorYawOffset = 0.0f; - _myCamera.setMode(CAMERA_MODE_MIRROR); - getMyAvatar()->reset(false, false, false); // to reset any active MyAvatar::FollowHelpers - getMyAvatar()->setBoomLength(MyAvatar::ZOOM_DEFAULT); - } - } else if (menu->isOptionChecked(MenuOption::FirstPerson)) { + if (menu->isOptionChecked(MenuOption::FirstPerson)) { if (_myCamera.getMode() != CAMERA_MODE_FIRST_PERSON) { _myCamera.setMode(CAMERA_MODE_FIRST_PERSON); getMyAvatar()->setBoomLength(MyAvatar::ZOOM_MIN); } - } else if (menu->isOptionChecked(MenuOption::ThirdPerson)) { - if (_myCamera.getMode() != CAMERA_MODE_THIRD_PERSON) { - _myCamera.setMode(CAMERA_MODE_THIRD_PERSON); + } else if (menu->isOptionChecked(MenuOption::LookAtCamera)) { + if (_myCamera.getMode() != CAMERA_MODE_LOOK_AT) { + _myCamera.setMode(CAMERA_MODE_LOOK_AT); + if (getMyAvatar()->getBoomLength() == MyAvatar::ZOOM_MIN) { + getMyAvatar()->setBoomLength(MyAvatar::ZOOM_DEFAULT); + } + } + } else if (menu->isOptionChecked(MenuOption::SelfieCamera)) { + if (_myCamera.getMode() != CAMERA_MODE_SELFIE) { + _myCamera.setMode(CAMERA_MODE_SELFIE); if (getMyAvatar()->getBoomLength() == MyAvatar::ZOOM_MIN) { getMyAvatar()->setBoomLength(MyAvatar::ZOOM_DEFAULT); } @@ -8994,9 +9014,9 @@ void Application::setDisplayPlugin(DisplayPluginPointer newDisplayPlugin) { cameraMenuChanged(); } - // Remove the mirror camera option from menu if in HMD mode - auto mirrorAction = menu->getActionForOption(MenuOption::FullscreenMirror); - mirrorAction->setVisible(!isHmd); + // Remove the selfie camera options from menu if in HMD mode + auto selfieAction = menu->getActionForOption(MenuOption::SelfieCamera); + selfieAction->setVisible(!isHmd); } Q_ASSERT_X(_displayPlugin, "Application::updateDisplayMode", "could not find an activated display plugin"); diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 0b1cb789f1..89fec3c812 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -177,19 +177,19 @@ Menu::Menu() { firstPersonAction->setProperty(EXCLUSION_GROUP_KEY, QVariant::fromValue(cameraModeGroup)); - // View > Third Person - auto thirdPersonAction = cameraModeGroup->addAction(addCheckableActionToQMenuAndActionHash( - viewMenu, MenuOption::ThirdPerson, 0, + // View > Look At + auto lookAtAction = cameraModeGroup->addAction(addCheckableActionToQMenuAndActionHash( + viewMenu, MenuOption::LookAtCamera, 0, false, qApp, SLOT(cameraMenuChanged()))); - thirdPersonAction->setProperty(EXCLUSION_GROUP_KEY, QVariant::fromValue(cameraModeGroup)); + lookAtAction->setProperty(EXCLUSION_GROUP_KEY, QVariant::fromValue(cameraModeGroup)); - // View > Mirror - auto viewMirrorAction = cameraModeGroup->addAction(addCheckableActionToQMenuAndActionHash( - viewMenu, MenuOption::FullscreenMirror, 0, - false, qApp, SLOT(cameraMenuChanged()))); + // View > Selfie + auto selfieAction = cameraModeGroup->addAction(addCheckableActionToQMenuAndActionHash( + viewMenu, MenuOption::SelfieCamera, 0, + false, qApp, SLOT(cameraMenuChanged()))); - viewMirrorAction->setProperty(EXCLUSION_GROUP_KEY, QVariant::fromValue(cameraModeGroup)); + selfieAction->setProperty(EXCLUSION_GROUP_KEY, QVariant::fromValue(cameraModeGroup)); viewMenu->addSeparator(); diff --git a/interface/src/Menu.h b/interface/src/Menu.h index c299dd8c10..0ba1159052 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -129,6 +129,7 @@ namespace MenuOption { const QString Login = "Login/Sign Up"; const QString Log = "Log"; const QString LogExtraTimings = "Log Extra Timing Details"; + const QString LookAtCamera = "Third Person"; const QString LowVelocityFilter = "Low Velocity Filter"; const QString MeshVisible = "Draw Mesh"; const QString MuteEnvironment = "Mute Environment"; @@ -181,6 +182,7 @@ namespace MenuOption { const QString RunTimingTests = "Run Timing Tests"; const QString ScriptedMotorControl = "Enable Scripted Motor Control"; const QString ShowTrackedObjects = "Show Tracked Objects"; + const QString SelfieCamera = "Selfie"; const QString SendWrongDSConnectVersion = "Send wrong DS connect version"; const QString SendWrongProtocolVersion = "Send wrong protocol version"; const QString SetHomeLocation = "Set Home Location"; @@ -201,7 +203,7 @@ namespace MenuOption { const QString AnimStats = "Show Animation Stats"; const QString StopAllScripts = "Stop All Scripts"; const QString SuppressShortTimings = "Suppress Timings Less than 10ms"; - const QString ThirdPerson = "Third Person"; + const QString ThirdPerson = "Third Person Legacy"; const QString ThreePointCalibration = "3 Point Calibration"; const QString ThrottleFPSIfNotFocus = "Throttle FPS If Not Focus"; // FIXME - this value duplicated in Basic2DWindowOpenGLDisplayPlugin.cpp const QString ToggleHipsFollowing = "Toggle Hips Following"; diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index f248495fe9..112685e891 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -99,6 +99,10 @@ static const QString USER_RECENTER_MODEL_FORCE_STAND = QStringLiteral("ForceStan static const QString USER_RECENTER_MODEL_AUTO = QStringLiteral("Auto"); static const QString USER_RECENTER_MODEL_DISABLE_HMD_LEAN = QStringLiteral("DisableHMDLean"); +const QString HEAD_BLENDING_NAME = "lookAroundAlpha"; +const QString HEAD_ALPHA_NAME = "additiveBlendAlpha"; +const float HEAD_ALPHA_BLENDING = 1.0f; + MyAvatar::SitStandModelType stringToUserRecenterModel(const QString& str) { if (str == USER_RECENTER_MODEL_FORCE_SIT) { return MyAvatar::ForceSit; @@ -451,7 +455,7 @@ QByteArray MyAvatar::toByteArrayStateful(AvatarDataDetail dataDetail, bool dropF _globalBoundingBoxDimensions.y = _characterController.getCapsuleHalfHeight(); _globalBoundingBoxDimensions.z = _characterController.getCapsuleRadius(); _globalBoundingBoxOffset = _characterController.getCapsuleLocalOffset(); - if (mode == CAMERA_MODE_THIRD_PERSON || mode == CAMERA_MODE_INDEPENDENT) { + if (mode == CAMERA_MODE_THIRD_PERSON || mode == CAMERA_MODE_INDEPENDENT || mode == CAMERA_MODE_LOOK_AT || mode == CAMERA_MODE_SELFIE) { // fake the avatar position that is sent up to the AvatarMixer glm::vec3 oldPosition = getWorldPosition(); setWorldPosition(getSkeletonPosition()); @@ -948,6 +952,13 @@ void MyAvatar::simulate(float deltaTime, bool inView) { head->setPosition(headPosition); head->setScale(getModelScale()); head->simulate(deltaTime); + CameraMode mode = qApp->getCamera().getMode(); + if (_scriptControlsHeadLookAt || mode == CAMERA_MODE_LOOK_AT || mode == CAMERA_MODE_SELFIE) { + updateHeadLookAt(deltaTime); + } else if (_headLookAtActive){ + resetHeadLookAt(); + _headLookAtActive = false; + } } // Record avatars movements. @@ -2610,7 +2621,7 @@ void MyAvatar::useFullAvatarURL(const QUrl& fullAvatarURL, const QString& modelN glm::vec3 MyAvatar::getSkeletonPosition() const { CameraMode mode = qApp->getCamera().getMode(); - if (mode == CAMERA_MODE_THIRD_PERSON || mode == CAMERA_MODE_INDEPENDENT) { + if (mode == CAMERA_MODE_THIRD_PERSON || mode == CAMERA_MODE_INDEPENDENT || mode == CAMERA_MODE_LOOK_AT || mode == CAMERA_MODE_SELFIE) { // The avatar is rotated PI about the yAxis, so we have to correct for it // to get the skeleton offset contribution in the world-frame. const glm::quat FLIP = glm::angleAxis(PI, glm::vec3(0.0f, 1.0f, 0.0f)); @@ -3133,7 +3144,6 @@ void MyAvatar::initAnimGraph() { } emit animGraphUrlChanged(graphUrl); - _skeletonModel->getRig().initAnimGraph(graphUrl); _currentAnimGraphUrl.set(graphUrl); connect(&(_skeletonModel->getRig()), SIGNAL(onLoadComplete()), this, SLOT(animGraphLoaded())); @@ -3416,11 +3426,19 @@ void MyAvatar::setRotationThreshold(float angleRadians) { } void MyAvatar::updateOrientation(float deltaTime) { - // Smoothly rotate body with arrow keys float targetSpeed = getDriveKey(YAW) * _yawSpeed; + CameraMode mode = qApp->getCamera().getMode(); + bool computeLookAt = (mode == CAMERA_MODE_LOOK_AT || mode == CAMERA_MODE_SELFIE) && isReadyForPhysics() && !qApp->isHMDMode(); + if (computeLookAt) { + // For "Look At" and "Selfie" camera modes we also smooth the yaw rotation from right-click mouse movement. + float speedFromDeltaYaw = deltaTime > FLT_EPSILON ? getDriveKey(DELTA_YAW) / deltaTime : 0.0f; + speedFromDeltaYaw *= _yawSpeed / YAW_SPEED_DEFAULT; + targetSpeed += speedFromDeltaYaw; + } + if (targetSpeed != 0.0f) { - const float ROTATION_RAMP_TIMESCALE = 0.1f; + const float ROTATION_RAMP_TIMESCALE = 0.5f; float blend = deltaTime / ROTATION_RAMP_TIMESCALE; if (blend > 1.0f) { blend = 1.0f; @@ -3441,10 +3459,10 @@ void MyAvatar::updateOrientation(float deltaTime) { } } float totalBodyYaw = _bodyYawDelta * deltaTime; - - // Rotate directly proportional to delta yaw and delta pitch from right-click mouse movement. - totalBodyYaw += getDriveKey(DELTA_YAW) * _yawSpeed / YAW_SPEED_DEFAULT; - + if (!computeLookAt) { + // Rotate directly proportional to delta yaw and delta pitch from right-click mouse movement. + totalBodyYaw += getDriveKey(DELTA_YAW) * _yawSpeed / YAW_SPEED_DEFAULT; + } // Comfort Mode: If you press any of the left/right rotation drive keys or input, you'll // get an instantaneous 15 degree turn. If you keep holding the key down you'll get another // snap turn every half second. @@ -3453,7 +3471,6 @@ void MyAvatar::updateOrientation(float deltaTime) { totalBodyYaw += getDriveKey(STEP_YAW); snapTurn = true; } - // Use head/HMD roll to turn while flying, but not when standing still. if (qApp->isHMDMode() && getCharacterController()->getState() == CharacterController::State::Hover && _hmdRollControlEnabled && hasDriveInput()) { @@ -3488,7 +3505,60 @@ void MyAvatar::updateOrientation(float deltaTime) { // update body orientation by movement inputs glm::quat initialOrientation = getOrientationOutbound(); - setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, totalBodyYaw, 0.0f)))); + glm::vec3 eyesPosition = getDefaultEyePosition(); + const float FPS = 60.0f; + float timeScale = deltaTime * FPS; + + bool faceForward = false; + if (!computeLookAt) { + setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, totalBodyYaw, 0.0f)))); + _lookAtCameraTarget = eyesPosition + getWorldOrientation() * Vectors::FRONT; + _lookAtYaw = getWorldOrientation(); + _lookAtPitch = Quaternions::IDENTITY; + } else { + // Compute new look at vectors + if (totalBodyYaw != 0.0f) { + _lookAtYaw = _lookAtYaw * glm::quat(glm::radians(glm::vec3(0.0f, totalBodyYaw, 0.0f))); + } + float pitchIncrement = getDriveKey(PITCH) * _pitchSpeed * deltaTime + + getDriveKey(DELTA_PITCH) * _pitchSpeed / PITCH_SPEED_DEFAULT; + if (pitchIncrement != 0.0f) { + glm::quat _previousLookAtPitch = _lookAtPitch; + _lookAtPitch = _lookAtPitch * glm::quat(glm::radians(glm::vec3(pitchIncrement, 0.0f, 0.0f))); + // Limit the camera horizontal pitch + float MAX_LOOK_AT_PITCH_DEGREES = 80.0f; + float pitchFromHorizont = glm::degrees(angleBetween(getLookAtRotation() * Vectors::FRONT, _lookAtYaw * Vectors::FRONT)); + if (pitchFromHorizont > MAX_LOOK_AT_PITCH_DEGREES) { + _lookAtPitch = _previousLookAtPitch; + } + } + bool isMovingFwdBwd = getDriveKey(TRANSLATE_Z) != 0.0f; + bool isMovingSideways = getDriveKey(TRANSLATE_X) != 0.0f; + bool isRotatingWhileSeated = isMovingSideways && _characterController.getSeated(); + faceForward = isMovingFwdBwd || (isMovingSideways && !isRotatingWhileSeated); + // Blend the avatar orientation with the camera look at if moving forward. + if (faceForward || _shouldTurnToFaceCamera) { + const float REORIENT_FORWARD_BLEND = 0.25f; + const float REORIENT_TURN_BLEND = 0.03f; + const float DIAGONAL_TURN_BLEND = 0.02f; + float blend = (_shouldTurnToFaceCamera ? REORIENT_TURN_BLEND : REORIENT_FORWARD_BLEND) * timeScale; + if (blend > 1.0f) { + blend = 1.0f; + } + glm::quat faceRotation = _lookAtYaw; + if (isMovingFwdBwd && isMovingSideways) { + // Reorient avatar to face camera diagonal + blend = DIAGONAL_TURN_BLEND; + float turnSign = getDriveKey(TRANSLATE_Z) < 0.0f ? -1.0f : 1.0f; + turnSign = getDriveKey(TRANSLATE_X) > 0.0f ? -turnSign : turnSign; + faceRotation = _lookAtYaw * glm::angleAxis(turnSign * 0.25f * PI, Vectors::UP); + } + setWorldOrientation(glm::slerp(getWorldOrientation(), faceRotation, blend)); + } else if (isRotatingWhileSeated) { + float rotatingWhileSeatedYaw = -getDriveKey(TRANSLATE_X) * _yawSpeed * deltaTime; + setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, rotatingWhileSeatedYaw, 0.0f)))); + } + } if (snapTurn) { // Whether or not there is an existing smoothing going on, just reset the smoothing timer and set the starting position as the avatar's current position, then smooth to the new position. @@ -3509,9 +3579,74 @@ void MyAvatar::updateOrientation(float deltaTime) { head->setBaseYaw(YAW(euler)); head->setBasePitch(PITCH(euler)); head->setBaseRoll(ROLL(euler)); + } else if (computeLookAt) { + // Reset head orientation before applying the blending offset + head->setBaseYaw(0.0f); + head->setBasePitch(0.0f); + head->setBaseRoll(0.0f); + + glm::vec3 cameraVector = (faceForward ? _lookAtPitch * getWorldOrientation() : getLookAtRotation()) * Vectors::FRONT; + glm::vec3 cameraYawVector = _lookAtYaw * Vectors::FRONT; + + // Cap and attenuate head's lookat pitch angle + const float START_LOOKING_UP_DEGREES = 5.0f; + const float START_LOOKING_DOWN_DEGREES = 15.0f; + const float MAX_UP_DOWN_DEGREES = 90.0f; + + glm::vec3 avatarVectorUp = getWorldOrientation() * Vectors::UP; + float upDownDot = glm::dot(cameraVector, avatarVectorUp); + float upDownDegrees = MAX_UP_DOWN_DEGREES - glm::degrees(acosf(abs(upDownDot))); + + float lookAttenuation = 0.0f; + if (upDownDot <= 0.0f) { + if (upDownDegrees > START_LOOKING_DOWN_DEGREES) { + lookAttenuation = (upDownDegrees - START_LOOKING_DOWN_DEGREES) / (MAX_UP_DOWN_DEGREES - START_LOOKING_DOWN_DEGREES); + } + } else { + if (upDownDegrees > START_LOOKING_UP_DEGREES) { + lookAttenuation = (upDownDegrees - START_LOOKING_UP_DEGREES) / (MAX_UP_DOWN_DEGREES - START_LOOKING_UP_DEGREES); + } + } + glm::vec3 avatarVectorFront = getWorldOrientation() * Vectors::FRONT; + float frontBackDot = glm::dot(cameraYawVector, avatarVectorFront); + + glm::vec3 avatarVectorRight = getWorldOrientation() * Vectors::RIGHT; + float leftRightDot = glm::dot(cameraYawVector, avatarVectorRight); + + const float REORIENT_ANGLE = 65.0f; + const float TRIGGER_REORIENT_ANGLE = 45.0f; + glm::vec3 ajustedYawVector = cameraYawVector; + if (frontBackDot < 0.0f) { + ajustedYawVector = (leftRightDot < 0.0f ? -avatarVectorRight : avatarVectorRight); + cameraVector = (ajustedYawVector * _lookAtPitch) * Vectors::FRONT; + if (frontBackDot < -glm::sin(glm::radians(TRIGGER_REORIENT_ANGLE))) { + _shouldTurnToFaceCamera = true; + } + } else if (frontBackDot > glm::sin(glm::radians(REORIENT_ANGLE))) { + _shouldTurnToFaceCamera = false; + } + + cameraVector = glm::mix(cameraVector, ajustedYawVector, 1.0f - lookAttenuation); + // Calculate the camera target point. + + glm::vec3 targetPoint = eyesPosition + glm::normalize(cameraVector); + + const float LOOKAT_MIX_ALPHA = 0.25f; + + if (getDriveKey(TRANSLATE_Y) == 0.0f) { + // Approximate the head's look at vector to the camera look at vector with some delay. + float mixAlpha = LOOKAT_MIX_ALPHA * timeScale; + if (mixAlpha > 1.0f) { + mixAlpha = 1.0f; + } + _lookAtCameraTarget = glm::mix(_lookAtCameraTarget, targetPoint, mixAlpha); + } else { + _lookAtCameraTarget = targetPoint; + } + _headLookAtActive = true; } else { head->setBaseYaw(0.0f); - head->setBasePitch(getHead()->getBasePitch() + getDriveKey(PITCH) * _pitchSpeed * deltaTime + head->setBasePitch(getHead()->getBasePitch() + getDriveKey(PITCH) * _pitchSpeed * deltaTime + getDriveKey(DELTA_PITCH) * _pitchSpeed / PITCH_SPEED_DEFAULT); head->setBaseRoll(0.0f); } @@ -3543,7 +3678,7 @@ float MyAvatar::calculateGearedSpeed(const float driveKey) { glm::vec3 MyAvatar::scaleMotorSpeed(const glm::vec3 forward, const glm::vec3 right) { float stickFullOn = 0.85f; auto zSpeed = getDriveKey(TRANSLATE_Z); - auto xSpeed = getDriveKey(TRANSLATE_X); + auto xSpeed = !_characterController.getSeated() ? getDriveKey(TRANSLATE_X) : 0.0f; glm::vec3 direction; if (!useAdvancedMovementControls() && qApp->isHMDMode()) { // Walking disabled in settings. @@ -3581,6 +3716,10 @@ glm::vec3 MyAvatar::scaleMotorSpeed(const glm::vec3 forward, const glm::vec3 rig } else { // Desktop mode. direction = (zSpeed * forward) + (xSpeed * right); + if (qApp->getCamera().getMode() == CAMERA_MODE_LOOK_AT && zSpeed != 0.0f && xSpeed != 0.0f){ + direction = (zSpeed * forward); + } + auto length = glm::length(direction); if (length > EPSILON) { direction /= length; @@ -5236,9 +5375,13 @@ glm::quat MyAvatar::getOrientationForAudio() { glm::quat result; switch (_audioListenerMode) { - case AudioListenerMode::FROM_HEAD: - result = getHead()->getFinalOrientationInWorldFrame(); + case AudioListenerMode::FROM_HEAD: { + // Using the camera's orientation instead, when the current mode is controlling the avatar's head. + CameraMode mode = qApp->getCamera().getMode(); + bool headFollowsCamera = mode == CAMERA_MODE_LOOK_AT || mode == CAMERA_MODE_SELFIE; + result = headFollowsCamera ? qApp->getCamera().getOrientation() : getHead()->getFinalOrientationInWorldFrame(); break; + } case AudioListenerMode::FROM_CAMERA: result = qApp->getCamera().getOrientation(); break; @@ -6334,7 +6477,6 @@ void MyAvatar::sendPacket(const QUuid& entityID) const { void MyAvatar::setSitDriveKeysStatus(bool enabled) { const std::vector DISABLED_DRIVE_KEYS_DURING_SIT = { - DriveKeys::TRANSLATE_X, DriveKeys::TRANSLATE_Y, DriveKeys::TRANSLATE_Z, DriveKeys::STEP_TRANSLATE_X, @@ -6512,3 +6654,70 @@ void MyAvatar::updateLookAtPosition(FaceTracker* faceTracker, Camera& myCamera) getHead()->setLookAtPosition(lookAtSpot); } + +void MyAvatar::resetHeadLookAt() { + if (_skeletonModelLoaded) { + _skeletonModel->getRig().setDirectionalBlending(HEAD_BLENDING_NAME, glm::vec3(), + HEAD_ALPHA_NAME, HEAD_ALPHA_BLENDING); + } +} + +void MyAvatar::updateHeadLookAt(float deltaTime) { + if (_skeletonModelLoaded) { + glm::vec3 lookAtTarget = _scriptControlsHeadLookAt ? _lookAtScriptTarget : _lookAtCameraTarget; + glm::vec3 avatarXVector = glm::normalize(getWorldOrientation() * Vectors::UNIT_X); + glm::vec3 avatarYVector = glm::normalize(getWorldOrientation() * Vectors::UNIT_Y); + glm::vec3 avatarZVector = glm::normalize(getWorldOrientation() * Vectors::UNIT_Z); + glm::vec3 headToTargetVector = lookAtTarget - getDefaultEyePosition(); + if (glm::length(headToTargetVector) > EPSILON) { + headToTargetVector = glm::normalize(headToTargetVector); + } else { + // The target point is the avatar head + return; + } + + float xDot = glm::dot(avatarXVector, headToTargetVector); + float yDot = glm::dot(avatarYVector, headToTargetVector); + float zDot = glm::dot(avatarZVector, headToTargetVector); + // Force the head to look at one of the sides when the look at point is behind the avatar + if (zDot > 0.0f && xDot != 0.0f) { + //xDot /= fabsf(xDot); + } + + // Make sure dot products are in range to avoid acosf returning NaN + xDot = glm::min(glm::max(xDot, -1.0f), 1.0f); + yDot = glm::min(glm::max(yDot, -1.0f), 1.0f); + + float xAngle = acosf(xDot); + float yAngle = acosf(yDot); + + // xBlend and yBlend are the values from -1.0 to 1.0 that set the directional blending. + // We compute them using the angles (0 to PI/2) => (1.0 to 0.0) and (PI/2 to PI) => (0.0 to -1.0) + float xBlend = -(xAngle - 0.5f * PI) / (0.5f * PI); + float yBlend = -(yAngle - 0.5f * PI) / (0.5f * PI); + glm::vec3 lookAtBlend = glm::vec3(xBlend, yBlend, 0.0f); + _skeletonModel->getRig().setDirectionalBlending(HEAD_BLENDING_NAME, lookAtBlend, + HEAD_ALPHA_NAME, HEAD_ALPHA_BLENDING); + + if (_scriptControlsHeadLookAt) { + _scriptHeadControlTimer += deltaTime; + if (_scriptHeadControlTimer > MAX_LOOK_AT_TIME_SCRIPT_CONTROL) { + _scriptHeadControlTimer = 0.0f; + _scriptControlsHeadLookAt = false; + _lookAtCameraTarget = _lookAtScriptTarget; + } + } + } +} + +void MyAvatar::setHeadLookAt(const glm::vec3& lookAtTarget) { + if (QThread::currentThread() != thread()) { + BLOCKING_INVOKE_METHOD(this, "setHeadLookAt", + Q_ARG(const glm::vec3&, lookAtTarget)); + return; + } + _headLookAtActive = true; + _scriptControlsHeadLookAt = true; + _scriptHeadControlTimer = 0.0f; + _lookAtScriptTarget = lookAtTarget; +} diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index be0d1960ad..a6c53c1c0b 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -1749,6 +1749,24 @@ public: glm::vec3 getNextPosition() { return _goToPending ? _goToPosition : getWorldPosition(); } void prepareAvatarEntityDataForReload(); + /**jsdoc + * Turn the avatar's head until it faces the target point within the 90/-90 degree range. + * Once this method is called, API calls will have full control of the head for a limited time. + * If this method is not called for two seconds, the engine will regain control of the head. + * @function MyAvatar.setHeadLookAt + * @param {Vec3} lookAtTarget - The target point in world coordinates. + */ + Q_INVOKABLE void setHeadLookAt(const glm::vec3& lookAtTarget); + + /**jsdoc + * Returns the current head look at target point in world coordinates. + * @function MyAvatar.getHeadLookAt + * @returns {Vec3} Default position between your avatar's eyes in world coordinates. + */ + Q_INVOKABLE glm::vec3 getHeadLookAt() { return _lookAtCameraTarget; } + + glm::quat getLookAtRotation() { return _lookAtYaw * _lookAtPitch; } + /**jsdoc * Creates a new grab that grabs an entity. * @function MyAvatar.grab @@ -2626,6 +2644,21 @@ private: glm::vec3 _trackedHeadPosition; + const float MAX_LOOK_AT_TIME_SCRIPT_CONTROL = 2.0f; + glm::quat _lookAtPitch; + glm::quat _lookAtYaw; + glm::vec3 _lookAtCameraTarget; + glm::vec3 _lookAtScriptTarget; + bool _headLookAtActive { false }; + bool _shouldTurnToFaceCamera { false }; + bool _scriptControlsHeadLookAt { false }; + float _scriptHeadControlTimer { 0.0f }; + + // LookAt camera data + float _selfieTriggerAngle { 55.0f }; + float _frontLookAtSpeed { 0.15f }; + float _backLookAtSpeed { 0.25f }; + Setting::Handle _realWorldFieldOfView; Setting::Handle _useAdvancedMovementControls; Setting::Handle _showPlayArea; @@ -2650,6 +2683,8 @@ private: void initHeadBones(); void initAnimGraph(); void initFlowFromFST(); + void updateHeadLookAt(float deltaTime); + void resetHeadLookAt(); // Avatar Preferences QUrl _fullAvatarURLFromPreferences; diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 19e3878d84..d63c2d6a9b 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1658,7 +1658,7 @@ void Rig::updateHead(bool headEnabled, bool hipsEnabled, const AnimPose& headPos _animVars.set("splineIKEnabled", false); _animVars.unset("headPosition"); _animVars.set("headRotation", headPose.rot()); - _animVars.set("headType", (int)IKTarget::Type::RotationOnly); + _animVars.set("headType", (int)IKTarget::Type::Unknown); } } } @@ -2645,3 +2645,8 @@ float Rig::getUnscaledEyeHeight() const { return DEFAULT_AVATAR_EYE_HEIGHT; } } + +void Rig::setDirectionalBlending(const QString& targetName, const glm::vec3& blendingTarget, const QString& alphaName, float alpha) { + _animVars.set(targetName, blendingTarget); + _animVars.set(alphaName, alpha); +} diff --git a/libraries/animation/src/Rig.h b/libraries/animation/src/Rig.h index a70659b0ae..51ff537d51 100644 --- a/libraries/animation/src/Rig.h +++ b/libraries/animation/src/Rig.h @@ -254,6 +254,7 @@ public: int getOverrideJointCount() const; bool getFlowActive() const; bool getNetworkGraphActive() const; + void setDirectionalBlending(const QString& targetName, const glm::vec3& blendingTarget, const QString& alphaName, float alpha); signals: void onLoadComplete(); diff --git a/libraries/audio/src/AudioInjector.cpp b/libraries/audio/src/AudioInjector.cpp index c09dba6190..2df766377f 100644 --- a/libraries/audio/src/AudioInjector.cpp +++ b/libraries/audio/src/AudioInjector.cpp @@ -210,7 +210,6 @@ qint64 writeStringToStream(const QString& string, QDataStream& stream) { int64_t AudioInjector::injectNextFrame() { if (stateHas(AudioInjectorState::NetworkInjectionFinished)) { - qCDebug(audio) << "AudioInjector::injectNextFrame called but AudioInjector has finished and was not restarted. Returning."; return NEXT_FRAME_DELTA_ERROR_OR_FINISHED; } diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index 87f15896f2..7cfdc8a68d 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -481,11 +481,15 @@ QUuid EntityScriptingInterface::addEntityInternal(const EntityItemProperties& pr _activityTracking.addedEntityCount++; auto nodeList = DependencyManager::get(); - const auto sessionID = nodeList->getSessionUUID(); + auto sessionID = nodeList->getSessionUUID(); EntityItemProperties propertiesWithSimID = properties; propertiesWithSimID.setEntityHostType(entityHostType); if (entityHostType == entity::HostType::AVATAR) { + if (sessionID.isNull()) { + // null sessionID is unacceptable in this case + sessionID = AVATAR_SELF_ID; + } propertiesWithSimID.setOwningAvatarID(sessionID); } else if (entityHostType == entity::HostType::LOCAL) { // For now, local entities are always collisionless @@ -801,7 +805,7 @@ QUuid EntityScriptingInterface::editEntity(const QUuid& id, const EntityItemProp return; } - if (entity->isAvatarEntity() && entity->getOwningAvatarID() != sessionID) { + if (entity->isAvatarEntity() && entity->getOwningAvatarID() != sessionID && entity->getOwningAvatarID() != AVATAR_SELF_ID) { // don't edit other avatar's avatarEntities properties = EntityItemProperties(); return; diff --git a/libraries/shared/src/LogHandler.cpp b/libraries/shared/src/LogHandler.cpp index c51d9bf611..aff4de6e3a 100644 --- a/libraries/shared/src/LogHandler.cpp +++ b/libraries/shared/src/LogHandler.cpp @@ -32,14 +32,6 @@ LogHandler& LogHandler::getInstance() { return staticInstance; } -LogHandler::LogHandler() { - // make sure we setup the repeated message flusher, but do it on the LogHandler thread - QMetaObject::invokeMethod(this, "setupRepeatedMessageFlusher"); -} - -LogHandler::~LogHandler() { -} - const char* stringForLogType(LogMsgType msgType) { switch (msgType) { case LogInfo: diff --git a/libraries/shared/src/LogHandler.h b/libraries/shared/src/LogHandler.h index 56450768ff..8f84899b78 100644 --- a/libraries/shared/src/LogHandler.h +++ b/libraries/shared/src/LogHandler.h @@ -54,12 +54,11 @@ public: int newRepeatedMessageID(); void printRepeatedMessage(int messageID, LogMsgType type, const QMessageLogContext& context, const QString &message); -private slots: void setupRepeatedMessageFlusher(); private: - LogHandler(); - ~LogHandler(); + LogHandler() = default; + ~LogHandler() = default; void flushRepeatedMessages(); diff --git a/libraries/shared/src/shared/Camera.cpp b/libraries/shared/src/shared/Camera.cpp index 787b7bfb1a..b39b8b9169 100644 --- a/libraries/shared/src/shared/Camera.cpp +++ b/libraries/shared/src/shared/Camera.cpp @@ -35,6 +35,18 @@ * your avatar. * * + * Look At + * "look at" + * The camera is positioned behind your avatar. The camera moves and rotates independently from your avatar. + * The avatar's head always faces the camera look at point. + * + * + * Selfie + * "selfie" + * The camera is positioned in front of your avatar. The camera moves and rotates independently from your avatar. + * Your avatar's head is always facing the camera. + * + * * Mirror * "mirror" * The camera is positioned such that you are looking directly at your avatar. The camera moves and rotates with your @@ -67,6 +79,10 @@ CameraMode stringToMode(const QString& mode) { return CAMERA_MODE_INDEPENDENT; } else if (mode == "entity") { return CAMERA_MODE_ENTITY; + } else if (mode == "look at") { + return CAMERA_MODE_LOOK_AT; + } else if (mode == "selfie") { + return CAMERA_MODE_SELFIE; } return CAMERA_MODE_NULL; } @@ -82,6 +98,10 @@ QString modeToString(CameraMode mode) { return "independent"; } else if (mode == CAMERA_MODE_ENTITY) { return "entity"; + } else if (mode == CAMERA_MODE_LOOK_AT) { + return "look at"; + } else if (mode == CAMERA_MODE_SELFIE) { + return "selfie"; } return "unknown"; } diff --git a/libraries/shared/src/shared/Camera.h b/libraries/shared/src/shared/Camera.h index 0df83cfb9a..eecad34838 100644 --- a/libraries/shared/src/shared/Camera.h +++ b/libraries/shared/src/shared/Camera.h @@ -23,6 +23,8 @@ enum CameraMode CAMERA_MODE_MIRROR, CAMERA_MODE_INDEPENDENT, CAMERA_MODE_ENTITY, + CAMERA_MODE_LOOK_AT, + CAMERA_MODE_SELFIE, NUM_CAMERA_MODES }; @@ -182,7 +184,7 @@ private: void recompose(); void decompose(); - CameraMode _mode{ CAMERA_MODE_THIRD_PERSON }; + CameraMode _mode{ CAMERA_MODE_LOOK_AT }; glm::mat4 _transform; glm::mat4 _projection; diff --git a/libraries/ui/src/ui/TabletScriptingInterface.cpp b/libraries/ui/src/ui/TabletScriptingInterface.cpp index 3465138e00..75b08ba44f 100644 --- a/libraries/ui/src/ui/TabletScriptingInterface.cpp +++ b/libraries/ui/src/ui/TabletScriptingInterface.cpp @@ -592,12 +592,51 @@ void TabletProxy::gotoMenuScreen(const QString& submenu) { } } -void TabletProxy::loadQMLOnTop(const QVariant& path) { - if (QThread::currentThread() != thread()) { - QMetaObject::invokeMethod(this, "loadQMLOnTop", Q_ARG(QVariant, path)); +void TabletProxy::loadQMLOnTopImpl(const QVariant& path, bool localSafeContext) { + if (QThread::currentThread() != thread()) { + qCWarning(uiLogging) << __FUNCTION__ << "may not be called directly by scripts"; return; } + QObject* root = nullptr; + if (!_toolbarMode && _qmlTabletRoot) { + root = _qmlTabletRoot; + } else if (_toolbarMode && _desktopWindow) { + root = _desktopWindow->asQuickItem(); + } + + if (root) { + if (localSafeContext) { + hifi::scripting::setLocalAccessSafeThread(true); + } + QMetaObject::invokeMethod(root, "loadQMLOnTop", Q_ARG(const QVariant&, path)); + QMetaObject::invokeMethod(root, "setShown", Q_ARG(const QVariant&, QVariant(true))); + if (_toolbarMode && _desktopWindow) { + QMetaObject::invokeMethod(root, "setResizable", Q_ARG(const QVariant&, QVariant(false))); + } + hifi::scripting::setLocalAccessSafeThread(false); + } else { + qCDebug(uiLogging) << "tablet cannot load QML because _qmlTabletRoot is null"; + } +} + +void TabletProxy::loadQMLOnTop(const QVariant& path) { + bool localSafeContext = hifi::scripting::isLocalAccessSafeThread(); + if (QThread::currentThread() != thread()) { + QMetaObject::invokeMethod(this, "loadQMLOnTopImpl", Q_ARG(QVariant, path), Q_ARG(bool, localSafeContext)); + return; + } + + loadQMLOnTopImpl(path, localSafeContext); +} + +void TabletProxy::returnToPreviousAppImpl(bool localSafeContext) { + if (QThread::currentThread() != thread()) { + qCWarning(uiLogging) << __FUNCTION__ << "may not be called directly by scripts"; + return; + + } + QObject* root = nullptr; if (!_toolbarMode && _qmlTabletRoot) { root = _qmlTabletRoot; @@ -606,35 +645,26 @@ void TabletProxy::loadQMLOnTop(const QVariant& path) { } if (root) { - QMetaObject::invokeMethod(root, "loadQMLOnTop", Q_ARG(const QVariant&, path)); - QMetaObject::invokeMethod(root, "setShown", Q_ARG(const QVariant&, QVariant(true))); - if (_toolbarMode && _desktopWindow) { - QMetaObject::invokeMethod(root, "setResizable", Q_ARG(const QVariant&, QVariant(false))); + if (localSafeContext) { + hifi::scripting::setLocalAccessSafeThread(true); } + QMetaObject::invokeMethod(root, "returnToPreviousApp"); + QMetaObject::invokeMethod(root, "setShown", Q_ARG(const QVariant&, QVariant(true))); + hifi::scripting::setLocalAccessSafeThread(false); } else { qCDebug(uiLogging) << "tablet cannot load QML because _qmlTabletRoot is null"; } } void TabletProxy::returnToPreviousApp() { + bool localSafeContext = hifi::scripting::isLocalAccessSafeThread(); + qDebug() << "TabletProxy::returnToPreviousApp -> localSafeContext: " << localSafeContext; if (QThread::currentThread() != thread()) { - QMetaObject::invokeMethod(this, "returnToPreviousApp"); + QMetaObject::invokeMethod(this, "returnToPreviousAppImpl", Q_ARG(bool, localSafeContext)); return; } - QObject* root = nullptr; - if (!_toolbarMode && _qmlTabletRoot) { - root = _qmlTabletRoot; - } else if (_toolbarMode && _desktopWindow) { - root = _desktopWindow->asQuickItem(); - } - - if (root) { - QMetaObject::invokeMethod(root, "returnToPreviousApp"); - QMetaObject::invokeMethod(root, "setShown", Q_ARG(const QVariant&, QVariant(true))); - } else { - qCDebug(uiLogging) << "tablet cannot load QML because _qmlTabletRoot is null"; - } + returnToPreviousAppImpl(localSafeContext); } void TabletProxy::loadQMLSource(const QVariant& path, bool resizable) { @@ -940,8 +970,6 @@ void TabletProxy::sendToQml(const QVariant& msg) { } } - - OffscreenQmlSurface* TabletProxy::getTabletSurface() { if (QThread::currentThread() != thread()) { OffscreenQmlSurface* result = nullptr; diff --git a/libraries/ui/src/ui/TabletScriptingInterface.h b/libraries/ui/src/ui/TabletScriptingInterface.h index 9a5ff9efac..bae5eda29e 100644 --- a/libraries/ui/src/ui/TabletScriptingInterface.h +++ b/libraries/ui/src/ui/TabletScriptingInterface.h @@ -298,10 +298,26 @@ public: */ Q_INVOKABLE void loadQMLSourceImpl(const QVariant& path, bool resizable, bool localSafeContext); + /**jsdoc + * Internal function, do not call from scripts + * @function TabletProxy#loadHTMLSourceImpl + */ Q_INVOKABLE void loadHTMLSourceImpl(const QVariant& url, const QString& injectJavaScriptUrl, bool localSafeContext); + /**jsdoc + * Internal function, do not call from scripts + * @function TabletProxy#loadHTMLSourceImpl + */ Q_INVOKABLE void loadHTMLSourceImpl(const QString& url, const QString& injectedJavaScriptUrl, bool loadOtherBase, bool localSafeContext); + /**jsdoc + * Internal function, do not call from scripts + * @function TabletProxy#returnToPreviousAppImpl + */ + Q_INVOKABLE void returnToPreviousAppImpl(bool localSafeContext); + + Q_INVOKABLE void loadQMLOnTopImpl(const QVariant& path, bool localSafeContext); + // FIXME: This currently relies on a script initializing the tablet (hence the bool denoting success); // it should be initialized internally so it cannot fail diff --git a/libraries/workload/src/workload/ViewTask.cpp b/libraries/workload/src/workload/ViewTask.cpp index 1c8e4d34b1..97d1e3a46e 100644 --- a/libraries/workload/src/workload/ViewTask.cpp +++ b/libraries/workload/src/workload/ViewTask.cpp @@ -10,6 +10,8 @@ // #include "ViewTask.h" +#include + using namespace workload; @@ -181,8 +183,11 @@ void ControlViews::regulateViews(workload::Views& outViews, const workload::Timi auto loopDuration = timings[5]; regionBackFronts[workload::Region::R1] = regionRegulators[workload::Region::R1].run(loopDuration, timings[2] + timings[3], regionBackFronts[workload::Region::R1]); + PROFILE_COUNTER(workload, "R1Front", { { "R1", regionBackFronts[workload::Region::R1].y} } ); regionBackFronts[workload::Region::R2] = regionRegulators[workload::Region::R2].run(loopDuration, timings[2] + timings[3], regionBackFronts[workload::Region::R2]); + PROFILE_COUNTER(workload, "R2Front", { { "R2", regionBackFronts[workload::Region::R2].y } } ); regionBackFronts[workload::Region::R3] = regionRegulators[workload::Region::R3].run(loopDuration, timings[4], regionBackFronts[workload::Region::R3]); + PROFILE_COUNTER(workload, "R3Front", { { "R3", regionBackFronts[workload::Region::R3].y } } ); enforceRegionContainment(); for (auto& outView : outViews) { diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index 946de6df0f..a37fb13bd9 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -65,6 +65,7 @@ function onMessage(message) { // 2. Although we currently use a single image, we would like to take snapshot, a selfie, a 360 etc. all at the // same time, show the user all of them, and have the user deselect any that they do not want to share. // So we'll ultimately be receiving a set of objects, perhaps with different post processing for each. + if (message.type !== "snapshot") { return; } @@ -85,7 +86,7 @@ function onMessage(message) { image_data: imageData, canShare: canShare }); - }); + }); } else { ui.sendMessage({ type: "snapshot", @@ -274,6 +275,14 @@ var POLAROID_MODEL_URL = 'http://hifi-content.s3.amazonaws.com/alan/dev/Test/sna var POLAROID_RATE_LIMIT_MS = 1000; var polaroidPrintingIsRateLimited = false; +// force call the gotoPreviousApp on script thead to load snapshot html page. +var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); +tablet.fromQml.connect(function(message) { + if (message === 'returnToPreviousApp') { + tablet.returnToPreviousApp(); + } +}); + function printToPolaroid(image_url) { // Rate-limit printing if (polaroidPrintingIsRateLimited) {