From dae7bf8674af2c08494c76863431d2531274792a Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 20 May 2013 11:48:50 -0700 Subject: [PATCH 1/7] use AgentList defaults when AIM has no socket or address set --- interface/src/Application.cpp | 6 ++++-- libraries/audio/src/AudioInjectionManager.cpp | 19 +++++++++++++++++++ libraries/audio/src/AudioInjectionManager.h | 3 ++- libraries/shared/src/AgentList.cpp | 1 + 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 1f34ed3c09..ed9d4a3235 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -150,8 +150,8 @@ Application::Application(int& argc, char** argv) : _packetCount(0), _packetsPerSecond(0), _bytesPerSecond(0), - _bytesCount(0) { - + _bytesCount(0) +{ gettimeofday(&_applicationStartupTime, NULL); printLog("Interface Startup:\n"); @@ -167,7 +167,9 @@ Application::Application(int& argc, char** argv) : if (portStr) { listenPort = atoi(portStr); } + AgentList::createInstance(AGENT_TYPE_AVATAR, listenPort); + _enableNetworkThread = !cmdOptionExists(argc, constArgv, "--nonblocking"); if (!_enableNetworkThread) { AgentList::getInstance()->getAgentSocket()->setBlocking(false); diff --git a/libraries/audio/src/AudioInjectionManager.cpp b/libraries/audio/src/AudioInjectionManager.cpp index ce252afd23..275161730e 100644 --- a/libraries/audio/src/AudioInjectionManager.cpp +++ b/libraries/audio/src/AudioInjectionManager.cpp @@ -9,12 +9,16 @@ #include #include "SharedUtil.h" +#include "AgentList.h" +#include "AgentTypes.h" +#include "Agent.h" #include "PacketHeaders.h" #include "AudioInjectionManager.h" UDPSocket* AudioInjectionManager::_injectorSocket = NULL; sockaddr AudioInjectionManager::_destinationSocket; +bool AudioInjectionManager::_isDestinationSocketExplicit = false; AudioInjector* AudioInjectionManager::_injectors[50] = {}; AudioInjector* AudioInjectionManager::injectorWithSamplesFromFile(const char* filename) { @@ -39,9 +43,24 @@ AudioInjector* AudioInjectionManager::injectorWithCapacity(int capacity) { return NULL; } +void AudioInjectionManager::setDestinationSocket(sockaddr& destinationSocket) { + _destinationSocket = destinationSocket; + _isDestinationSocketExplicit = true; +} + void* AudioInjectionManager::injectAudioViaThread(void* args) { AudioInjector* injector = (AudioInjector*) args; + // if we don't have an injectorSocket then grab the one from the agent list + if (!_injectorSocket) { + _injectorSocket = AgentList::getInstance()->getAgentSocket(); + } + + // if we don't have an explicit destination socket then pull active socket for current audio mixer from agent list + if (!_isDestinationSocketExplicit) { + _destinationSocket = *AgentList::getInstance()->soloAgentOfType(AGENT_TYPE_AUDIO_MIXER)->getActiveSocket(); + } + injector->injectAudio(_injectorSocket, &_destinationSocket); // if this an injector inside the injection manager's array we're responsible for deletion diff --git a/libraries/audio/src/AudioInjectionManager.h b/libraries/audio/src/AudioInjectionManager.h index 3297305475..8cb9614811 100644 --- a/libraries/audio/src/AudioInjectionManager.h +++ b/libraries/audio/src/AudioInjectionManager.h @@ -24,12 +24,13 @@ public: static void threadInjector(AudioInjector* injector); static void setInjectorSocket(UDPSocket* injectorSocket) { _injectorSocket = injectorSocket;} - static void setDestinationSocket(sockaddr& destinationSocket) { _destinationSocket = destinationSocket; } + static void setDestinationSocket(sockaddr& destinationSocket); private: static void* injectAudioViaThread(void* args); static UDPSocket* _injectorSocket; static sockaddr _destinationSocket; + static bool _isDestinationSocketExplicit; static AudioInjector* _injectors[MAX_CONCURRENT_INJECTORS]; }; diff --git a/libraries/shared/src/AgentList.cpp b/libraries/shared/src/AgentList.cpp index c667f733a4..3da956a04a 100644 --- a/libraries/shared/src/AgentList.cpp +++ b/libraries/shared/src/AgentList.cpp @@ -10,6 +10,7 @@ #include #include #include + #include "AgentList.h" #include "AgentTypes.h" #include "PacketHeaders.h" From fe1f02beffe2a5a49c40e1bc6fcfe1654ee3191d Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Mon, 20 May 2013 12:16:55 -0700 Subject: [PATCH 2/7] moved constructor --- libraries/avatars/src/AvatarData.cpp | 27 +++++++++++++++++++++++++++ libraries/avatars/src/AvatarData.h | 28 +--------------------------- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index ab60088cf8..2bd53532dd 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -34,6 +34,33 @@ int unpackFloatAngleFromTwoByte(uint16_t* byteAnglePointer, float* destinationPo return sizeof(uint16_t); } +AvatarData::AvatarData() : + _handPosition(0,0,0), + _bodyYaw(-90.0), + _bodyPitch(0.0), + _bodyRoll(0.0), + _headYaw(0), + _headPitch(0), + _headRoll(0), + _headLeanSideways(0), + _headLeanForward(0), + _audioLoudness(0), + _handState(0), + _cameraPosition(0,0,0), + _cameraDirection(0,0,0), + _cameraUp(0,0,0), + _cameraRight(0,0,0), + _cameraFov(0.0f), + _cameraAspectRatio(0.0f), + _cameraNearClip(0.0f), + _cameraFarClip(0.0f), + _keyState(NO_KEY_DOWN), + _wantResIn(false), + _wantColor(true), + _wantDelta(false) +{ +}; + AvatarData::~AvatarData() { } diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index a11c2da260..33d2b5205e 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -28,33 +28,7 @@ enum KeyState class AvatarData : public AgentData { public: - AvatarData() : - _handPosition(0,0,0), - _bodyYaw(-90.0), - _bodyPitch(0.0), - _bodyRoll(0.0), - _headYaw(0), - _headPitch(0), - _headRoll(0), - _headLeanSideways(0), - _headLeanForward(0), - _audioLoudness(0), - _handState(0), - _cameraPosition(0,0,0), - _cameraDirection(0,0,0), - _cameraUp(0,0,0), - _cameraRight(0,0,0), - _cameraFov(0.0f), - _cameraAspectRatio(0.0f), - _cameraNearClip(0.0f), - _cameraFarClip(0.0f), - _keyState(NO_KEY_DOWN), - _wantResIn(false), - _wantColor(true), - _wantDelta(false) - { }; - - + AvatarData(); ~AvatarData(); AvatarData* clone() const; From d6ceca4f4bffbaa88fa4d641be5adf292c31a831 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 20 May 2013 12:16:56 -0700 Subject: [PATCH 3/7] move constructor for AvatarData to implemenation file --- libraries/avatars/src/AvatarData.cpp | 29 ++++++++++++++++++++++++++++ libraries/avatars/src/AvatarData.h | 26 +------------------------ 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 2e11e8aa84..d644be8c7c 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -19,6 +19,35 @@ using namespace std; using avatars_lib::printLog; +AvatarData::AvatarData() : + _handPosition(0,0,0), + _bodyYaw(-90.0), + _bodyPitch(0.0), + _bodyRoll(0.0), + _headYaw(0), + _headPitch(0), + _headRoll(0), + _headLeanSideways(0), + _headLeanForward(0), + _audioLoudness(0), + _handState(0), + _cameraPosition(0,0,0), + _cameraDirection(0,0,0), + _cameraUp(0,0,0), + _cameraRight(0,0,0), + _cameraFov(0.0f), + _cameraAspectRatio(0.0f), + _cameraNearClip(0.0f), + _cameraFarClip(0.0f), + _keyState(NO_KEY_DOWN), + _wantResIn(false), + _wantColor(true), + _wantDelta(false) +{ + +} + + int packFloatAngleToTwoByte(unsigned char* buffer, float angle) { const float ANGLE_CONVERSION_RATIO = (std::numeric_limits::max() / 360.0); diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 89fa8c70a3..eeb2e1eb7e 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -28,31 +28,7 @@ enum KeyState class AvatarData : public AgentData { public: - AvatarData() : - _handPosition(0,0,0), - _bodyYaw(-90.0), - _bodyPitch(0.0), - _bodyRoll(0.0), - _headYaw(0), - _headPitch(0), - _headRoll(0), - _headLeanSideways(0), - _headLeanForward(0), - _audioLoudness(0), - _handState(0), - _cameraPosition(0,0,0), - _cameraDirection(0,0,0), - _cameraUp(0,0,0), - _cameraRight(0,0,0), - _cameraFov(0.0f), - _cameraAspectRatio(0.0f), - _cameraNearClip(0.0f), - _cameraFarClip(0.0f), - _keyState(NO_KEY_DOWN), - _wantResIn(false), - _wantColor(true), - _wantDelta(false) - { }; + AvatarData(); const glm::vec3& getPosition() const { return _position; } void setPosition(const glm::vec3 position) { _position = position; } From 17c961f1b0d04e764308ac6e2267f87fffb78bd9 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Mon, 20 May 2013 12:34:15 -0700 Subject: [PATCH 4/7] merge --- libraries/avatars/src/AvatarData.h | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 33d2b5205e..a2b210078b 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -29,24 +29,22 @@ enum KeyState class AvatarData : public AgentData { public: AvatarData(); - ~AvatarData(); - AvatarData* clone() const; - const glm::vec3& getPosition() const; - void setPosition(glm::vec3 position); - void setHandPosition(glm::vec3 handPosition); + const glm::vec3& getPosition() const { return _position; } + void setPosition(const glm::vec3 position) { _position = position; } + void setHandPosition(const glm::vec3 handPosition) { _handPosition = handPosition; } int getBroadcastData(unsigned char* destinationBuffer); int parseData(unsigned char* sourceBuffer, int numBytes); // Body Rotation - float getBodyYaw(); - float getBodyPitch(); - float getBodyRoll(); - void setBodyYaw(float bodyYaw); - void setBodyPitch(float bodyPitch); - void setBodyRoll(float bodyRoll); + float getBodyYaw() const { return _bodyYaw; } + void setBodyYaw(float bodyYaw) { _bodyYaw = bodyYaw; } + float getBodyPitch() const { return _bodyPitch; } + void setBodyPitch(float bodyPitch) { _bodyPitch = bodyPitch; } + float getBodyRoll() const {return _bodyRoll; } + void setBodyRoll(float bodyRoll) { _bodyRoll = bodyRoll; } // Head Rotation void setHeadPitch(float p); @@ -110,6 +108,10 @@ public: void setWantDelta(bool wantDelta) { _wantDelta = wantDelta; } protected: + // privatize the copy constructor and assignment operator so they cannot be called + AvatarData(const AvatarData&); + AvatarData& operator= (const AvatarData&); + glm::vec3 _position; glm::vec3 _handPosition; From 24b34b19b15217bf2d3e1daff7b630dc5f8f9cb2 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Mon, 20 May 2013 12:35:18 -0700 Subject: [PATCH 5/7] merge --- libraries/avatars/src/AvatarData.cpp | 50 +--------------------------- 1 file changed, 1 insertion(+), 49 deletions(-) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 2bd53532dd..73157911b4 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -61,14 +61,6 @@ AvatarData::AvatarData() : { }; -AvatarData::~AvatarData() { - -} - -AvatarData* AvatarData::clone() const { - return new AvatarData(*this); -} - int AvatarData::getBroadcastData(unsigned char* destinationBuffer) { unsigned char* bufferStart = destinationBuffer; @@ -227,49 +219,9 @@ int AvatarData::parseData(unsigned char* sourceBuffer, int numBytes) { return sourceBuffer - startPosition; } -const glm::vec3& AvatarData::getPosition() const { - return _position; -} - -void AvatarData::setPosition(glm::vec3 position) { - _position = position; -} - -void AvatarData::setHandPosition(glm::vec3 handPosition) { - _handPosition = handPosition; -} - -float AvatarData::getBodyYaw() { - return _bodyYaw; -} - -void AvatarData::setBodyYaw(float bodyYaw) { - _bodyYaw = bodyYaw; -} - -float AvatarData::getBodyPitch() { - return _bodyPitch; -} - -void AvatarData::setBodyPitch(float bodyPitch) { - _bodyPitch = bodyPitch; -} - -float AvatarData::getBodyRoll() { - return _bodyRoll; -} - -void AvatarData::setBodyRoll(float bodyRoll) { - _bodyRoll = bodyRoll; -} - void AvatarData::setHeadPitch(float p) { // Set head pitch and apply limits const float MAX_PITCH = 60; const float MIN_PITCH = -60; _headPitch = glm::clamp(p, MIN_PITCH, MAX_PITCH); -} - - - - +} \ No newline at end of file From cf065a413c5a9ea9b3eb8c6c1ec613da669cd6d0 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Mon, 20 May 2013 12:36:16 -0700 Subject: [PATCH 6/7] merge --- libraries/avatars/src/AvatarData.h | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index a2b210078b..5bb93b02b5 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -29,7 +29,6 @@ enum KeyState class AvatarData : public AgentData { public: AvatarData(); - AvatarData* clone() const; const glm::vec3& getPosition() const { return _position; } void setPosition(const glm::vec3 position) { _position = position; } From 6aafcc752dcf8dfd25a5e539ece794ddd09f6267 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 20 May 2013 12:51:21 -0700 Subject: [PATCH 7/7] re-arrange member variable constructors for compiler warning --- interface/src/Oscilloscope.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/interface/src/Oscilloscope.cpp b/interface/src/Oscilloscope.cpp index 088ef6ac14..baa173e512 100644 --- a/interface/src/Oscilloscope.cpp +++ b/interface/src/Oscilloscope.cpp @@ -32,11 +32,15 @@ namespace { // everything in here only exists while compiling this .cpp file } -Oscilloscope::Oscilloscope(int w, int h, bool isEnabled) : - _valWidth(w), _valHeight(h), - _arrSamples(0l), _arrVertices(0l), - _valLowpass(0.4f), _valDownsample(3), - enabled(isEnabled), inputPaused(false) { +Oscilloscope::Oscilloscope(int w, int h, bool isEnabled) : + enabled(isEnabled), + inputPaused(false), + _valWidth(w), + _valHeight(h), + _arrSamples(0l), + _arrVertices(0l), + _valLowpass(0.4f), + _valDownsample(3) { // allocate enough space for the sample data and to turn it into // vertices and since they're all 'short', do so in one shot