From 71cc36fdd8771ccd17d874e691a4734518378d2b Mon Sep 17 00:00:00 2001 From: samcake Date: Mon, 16 Nov 2015 18:31:24 -0800 Subject: [PATCH 1/4] removing ms to seconds conversion in MyAvatar --- interface/src/scripting/RecordingScriptingInterface.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/src/scripting/RecordingScriptingInterface.cpp b/interface/src/scripting/RecordingScriptingInterface.cpp index bf585f5481..32bd6fde97 100644 --- a/interface/src/scripting/RecordingScriptingInterface.cpp +++ b/interface/src/scripting/RecordingScriptingInterface.cpp @@ -56,11 +56,11 @@ bool RecordingScriptingInterface::isPaused() { } float RecordingScriptingInterface::playerElapsed() { - return (float)_player->position() / MSECS_PER_SECOND; + return _player->position(); } float RecordingScriptingInterface::playerLength() { - return _player->length() / MSECS_PER_SECOND; + return _player->length(); } void RecordingScriptingInterface::loadRecording(const QString& filename) { @@ -103,7 +103,7 @@ void RecordingScriptingInterface::setPlayerAudioOffset(float audioOffset) { } void RecordingScriptingInterface::setPlayerTime(float time) { - _player->seek(time * MSECS_PER_SECOND); + _player->seek(time); } void RecordingScriptingInterface::setPlayFromCurrentLocation(bool playFromCurrentLocation) { From 8553033d59273b2385687c4afe35d8c01b17ef2f Mon Sep 17 00:00:00 2001 From: samcake Date: Mon, 16 Nov 2015 19:27:28 -0800 Subject: [PATCH 2/4] Refactoring the mess for the Agent --- assignment-client/src/Agent.cpp | 2 ++ examples/acScripts/ControlACs.js | 2 +- interface/src/scripting/RecordingScriptingInterface.cpp | 6 ++++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index 063bf24de8..3cefbbe246 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -28,6 +28,7 @@ #include // TODO: consider moving to scriptengine.h #include "avatars/ScriptableAvatar.h" +#include "RecordingScriptingInterface.h" #include "Agent.h" @@ -45,6 +46,7 @@ Agent::Agent(NLPacket& packet) : DependencyManager::set(); DependencyManager::set(); + DependencyManager::set(); auto& packetReceiver = DependencyManager::get()->getPacketReceiver(); diff --git a/examples/acScripts/ControlACs.js b/examples/acScripts/ControlACs.js index ba066d9750..e3d63cc26e 100644 --- a/examples/acScripts/ControlACs.js +++ b/examples/acScripts/ControlACs.js @@ -156,7 +156,7 @@ function sendCommand(id, action) { position: controlEntityPosition, dimensions: { x: controlEntitySize, y: controlEntitySize, z: controlEntitySize }, visible: false, - lifetime: 10, + lifetime: 10000, userData: JSON.stringify({ idKey: { uD_id: id diff --git a/interface/src/scripting/RecordingScriptingInterface.cpp b/interface/src/scripting/RecordingScriptingInterface.cpp index 32bd6fde97..1cb29feae4 100644 --- a/interface/src/scripting/RecordingScriptingInterface.cpp +++ b/interface/src/scripting/RecordingScriptingInterface.cpp @@ -8,6 +8,8 @@ #include "RecordingScriptingInterface.h" +#include + #include #include #include @@ -16,8 +18,8 @@ #include #include -#include "avatar/AvatarManager.h" -#include "Application.h" +//#include "avatar/AvatarManager.h" +//#include "Application.h" #include "InterfaceLogging.h" typedef int16_t AudioSample; From 5b92929833a4a16a714ee686923f6147a1901cc1 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Tue, 17 Nov 2015 09:32:22 -0800 Subject: [PATCH 3/4] Moving the REcordingScriptingInterface into the script-engine and wiiring up in the assignment-client --- assignment-client/src/Agent.cpp | 8 ++++- interface/src/Application.cpp | 7 ++-- .../src}/RecordingScriptingInterface.cpp | 36 ++++++++++++------- .../src}/RecordingScriptingInterface.h | 3 ++ libraries/script-engine/src/ScriptEngine.cpp | 4 +++ 5 files changed, 42 insertions(+), 16 deletions(-) rename {interface/src/scripting => libraries/script-engine/src}/RecordingScriptingInterface.cpp (85%) rename {interface/src/scripting => libraries/script-engine/src}/RecordingScriptingInterface.h (96%) diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index 3cefbbe246..2c4d190f73 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -24,6 +24,9 @@ #include #include +#include +#include + #include #include // TODO: consider moving to scriptengine.h @@ -46,6 +49,8 @@ Agent::Agent(NLPacket& packet) : DependencyManager::set(); DependencyManager::set(); + DependencyManager::set(); + DependencyManager::set(); DependencyManager::set(); auto& packetReceiver = DependencyManager::get()->getPacketReceiver(); @@ -168,7 +173,7 @@ void Agent::run() { // give this AvatarData object to the script engine setAvatarData(&scriptedAvatar, "Avatar"); - + auto avatarHashMap = DependencyManager::set(); _scriptEngine->registerGlobalObject("AvatarList", avatarHashMap.data()); @@ -245,6 +250,7 @@ void Agent::setIsAvatar(bool isAvatar) { void Agent::setAvatarData(AvatarData* avatarData, const QString& objectName) { _avatarData = avatarData; _scriptEngine->registerGlobalObject(objectName, avatarData); + DependencyManager::get()->setControlledAvatar(avatarData); } void Agent::sendAvatarIdentityPacket() { diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 96b8ab74a8..ee25d6a06a 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -86,6 +86,7 @@ #include #include #include +#include #include #include #include @@ -126,7 +127,6 @@ #include "scripting/LocationScriptingInterface.h" #include "scripting/MenuScriptingInterface.h" #include "scripting/SettingsScriptingInterface.h" -#include "scripting/RecordingScriptingInterface.h" #include "scripting/WebWindowClass.h" #include "scripting/WindowScriptingInterface.h" #include "scripting/ControllerScriptingInterface.h" @@ -733,6 +733,10 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer) : connect(applicationUpdater.data(), &AutoUpdater::newVersionIsAvailable, dialogsManager.data(), &DialogsManager::showUpdateDialog); applicationUpdater->checkForUpdate(); + // Assign MyAvatar to th eRecording Singleton + DependencyManager::get()->setControlledAvatar(getMyAvatar()); + + // Now that menu is initalized we can sync myAvatar with it's state. getMyAvatar()->updateMotionBehaviorFromMenu(); @@ -3979,7 +3983,6 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEngine* scri RayToOverlayIntersectionResultFromScriptValue); scriptEngine->registerGlobalObject("Desktop", DependencyManager::get().data()); - scriptEngine->registerGlobalObject("Recording", DependencyManager::get().data()); scriptEngine->registerGlobalObject("Window", DependencyManager::get().data()); scriptEngine->registerGetterSetter("location", LocationScriptingInterface::locationGetter, diff --git a/interface/src/scripting/RecordingScriptingInterface.cpp b/libraries/script-engine/src/RecordingScriptingInterface.cpp similarity index 85% rename from interface/src/scripting/RecordingScriptingInterface.cpp rename to libraries/script-engine/src/RecordingScriptingInterface.cpp index 1cb29feae4..0973f6870f 100644 --- a/interface/src/scripting/RecordingScriptingInterface.cpp +++ b/libraries/script-engine/src/RecordingScriptingInterface.cpp @@ -15,12 +15,12 @@ #include #include #include -#include +//#include #include - +#include //#include "avatar/AvatarManager.h" //#include "Application.h" -#include "InterfaceLogging.h" +#include "ScriptEngineLogging.h" typedef int16_t AudioSample; @@ -45,8 +45,12 @@ RecordingScriptingInterface::RecordingScriptingInterface() { _player = DependencyManager::get(); _recorder = DependencyManager::get(); - auto audioClient = DependencyManager::get(); - connect(audioClient.data(), &AudioClient::inputReceived, this, &RecordingScriptingInterface::processAudioInput); +// auto audioClient = DependencyManager::get(); + // connect(audioClient.data(), &AudioClient::inputReceived, this, &RecordingScriptingInterface::processAudioInput); +} + +void RecordingScriptingInterface::setControlledAvatar(AvatarData* avatar) { + _controlledAvatar = avatar; } bool RecordingScriptingInterface::isPlaying() { @@ -86,7 +90,8 @@ void RecordingScriptingInterface::startPlaying() { QMetaObject::invokeMethod(this, "startPlaying", Qt::BlockingQueuedConnection); return; } - auto myAvatar = DependencyManager::get()->getMyAvatar(); + //auto myAvatar = DependencyManager::get()->getMyAvatar(); + auto myAvatar = _controlledAvatar; // Playback from the current position if (_playFromCurrentLocation) { _dummyAvatar.setRecordingBasis(std::make_shared(myAvatar->getTransform())); @@ -154,7 +159,7 @@ float RecordingScriptingInterface::recorderElapsed() { void RecordingScriptingInterface::startRecording() { if (_recorder->isRecording()) { - qCWarning(interfaceapp) << "Recorder is already running"; + qCWarning(scriptengine) << "Recorder is already running"; return; } @@ -165,7 +170,9 @@ void RecordingScriptingInterface::startRecording() { _recordingEpoch = Frame::epochForFrameTime(0); - auto myAvatar = DependencyManager::get()->getMyAvatar(); + //auto myAvatar = DependencyManager::get()->getMyAvatar(); + //auto myAvatar = DependencyManager::get()->getMyAvatar(); + auto myAvatar = _controlledAvatar; myAvatar->setRecordingBasis(); _recorder->start(); } @@ -182,7 +189,9 @@ void RecordingScriptingInterface::stopRecording() { } _lastClip->seek(0); - auto myAvatar = DependencyManager::get()->getMyAvatar(); + //auto myAvatar = DependencyManager::get()->getMyAvatar(); + //auto myAvatar = DependencyManager::get()->getMyAvatar(); + auto myAvatar = _controlledAvatar; myAvatar->clearRecordingBasis(); } @@ -208,7 +217,7 @@ void RecordingScriptingInterface::loadLastRecording() { } if (!_lastClip) { - qCDebug(interfaceapp) << "There is no recording to load"; + qCDebug(scriptengine) << "There is no recording to load"; return; } @@ -221,7 +230,8 @@ void RecordingScriptingInterface::processAvatarFrame(const Frame::ConstPointer& AvatarData::fromFrame(frame->data, _dummyAvatar); - auto myAvatar = DependencyManager::get()->getMyAvatar(); + //auto myAvatar = DependencyManager::get()->getMyAvatar(); + auto myAvatar = _controlledAvatar; if (_useHeadModel && _dummyAvatar.getFaceModelURL().isValid() && (_dummyAvatar.getFaceModelURL() != myAvatar->getFaceModelURL())) { // FIXME @@ -255,6 +265,6 @@ void RecordingScriptingInterface::processAudioInput(const QByteArray& audio) { } void RecordingScriptingInterface::processAudioFrame(const recording::FrameConstPointer& frame) { - auto audioClient = DependencyManager::get(); - audioClient->handleRecordedAudioInput(frame->data); + // auto audioClient = DependencyManager::get(); + // audioClient->handleRecordedAudioInput(frame->data); } diff --git a/interface/src/scripting/RecordingScriptingInterface.h b/libraries/script-engine/src/RecordingScriptingInterface.h similarity index 96% rename from interface/src/scripting/RecordingScriptingInterface.h rename to libraries/script-engine/src/RecordingScriptingInterface.h index 510a4b6898..db3a6b1240 100644 --- a/interface/src/scripting/RecordingScriptingInterface.h +++ b/libraries/script-engine/src/RecordingScriptingInterface.h @@ -24,6 +24,8 @@ class RecordingScriptingInterface : public QObject, public Dependency { public: RecordingScriptingInterface(); + void setControlledAvatar(AvatarData* avatar); + public slots: bool isPlaying(); bool isPaused(); @@ -74,6 +76,7 @@ private: Flag _useSkeletonModel { false }; recording::ClipPointer _lastClip; AvatarData _dummyAvatar; + AvatarData* _controlledAvatar; }; #endif // hifi_RecordingScriptingInterface_h diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 0f62bf8cd5..f30a5d4234 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -46,6 +46,7 @@ #include "WebSocketClass.h" #include "SceneScriptingInterface.h" +#include "RecordingScriptingInterface.h" #include "MIDIEvent.h" @@ -375,6 +376,9 @@ void ScriptEngine::init() { auto scriptingInterface = DependencyManager::get(); registerGlobalObject("Controller", scriptingInterface.data()); UserInputMapper::registerControllerTypes(this); + + auto recordingInterface = DependencyManager::get(); + registerGlobalObject("Recording", recordingInterface.data()); } void ScriptEngine::registerValue(const QString& valueName, QScriptValue value) { From c1675bba2168b610e389fc7dc01409a01ba12001 Mon Sep 17 00:00:00 2001 From: samcake Date: Tue, 17 Nov 2015 19:01:29 -0800 Subject: [PATCH 4/4] Fix typo introduced by debug --- examples/acScripts/ControlACs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/acScripts/ControlACs.js b/examples/acScripts/ControlACs.js index e3d63cc26e..ba066d9750 100644 --- a/examples/acScripts/ControlACs.js +++ b/examples/acScripts/ControlACs.js @@ -156,7 +156,7 @@ function sendCommand(id, action) { position: controlEntityPosition, dimensions: { x: controlEntitySize, y: controlEntitySize, z: controlEntitySize }, visible: false, - lifetime: 10000, + lifetime: 10, userData: JSON.stringify({ idKey: { uD_id: id