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) {