From 16aae5993ab64c430e6fdd9763b55d5472da2df8 Mon Sep 17 00:00:00 2001 From: Eric Johnston Date: Tue, 6 Aug 2013 07:33:18 -0700 Subject: [PATCH] Rave glove fixes: removed double-stored glove mode members Uncommented glove mode switch, which now calls a non-crashing method. Fixed overlapping method names for very different methods (setRaveGloveMode becomes activateNewRaveGloveMode). --- interface/src/avatar/Hand.cpp | 10 +++++----- interface/src/avatar/Hand.h | 4 +--- libraries/avatars/src/HandData.cpp | 13 ++++++++++--- libraries/avatars/src/HandData.h | 7 ++++--- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/interface/src/avatar/Hand.cpp b/interface/src/avatar/Hand.cpp index 4043f1e42f..e445f89472 100755 --- a/interface/src/avatar/Hand.cpp +++ b/interface/src/avatar/Hand.cpp @@ -55,7 +55,7 @@ void Hand::simulate(float deltaTime, bool isMine) { if (_isRaveGloveActive) { if (_raveGloveEffectsModeChanged) { - setRaveGloveMode(_raveGloveEffectsMode); + activateNewRaveGloveMode(); _raveGloveEffectsModeChanged = false; } @@ -352,6 +352,7 @@ void Hand::updateRaveGloveParticles(float deltaTime) { } setRaveGloveMode(RAVE_GLOVE_EFFECTS_MODE_FIRE); + activateNewRaveGloveMode(); _raveGloveParticleSystem.setUpDirection(glm::vec3(0.0f, 1.0f, 0.0f)); _raveGloveInitialized = true; } else { @@ -359,11 +360,10 @@ void Hand::updateRaveGloveParticles(float deltaTime) { } } +// The rave glove mode has changed, so activate the effects. +void Hand::activateNewRaveGloveMode() { -void Hand::setRaveGloveMode(int mode) { - - _raveGloveMode = mode; - + int mode = _raveGloveEffectsMode; _raveGloveParticleSystem.killAllParticles(); for ( int f = 0; f< NUM_FINGERS; f ++ ) { diff --git a/interface/src/avatar/Hand.h b/interface/src/avatar/Hand.h index 6df97ea106..d2a36b97b1 100755 --- a/interface/src/avatar/Hand.h +++ b/interface/src/avatar/Hand.h @@ -60,8 +60,6 @@ private: float _raveGloveClock; bool _raveGloveInitialized; int _raveGloveEmitter[NUM_FINGERS]; - int _raveGloveEffectsMode; - bool _raveGloveEffectsModeChanged; Avatar* _owningAvatar; float _renderAlpha; @@ -74,7 +72,7 @@ private: void setLeapHands(const std::vector& handPositions, const std::vector& handNormals); - virtual void setRaveGloveMode(int mode); + void activateNewRaveGloveMode(); void renderRaveGloveStage(); void renderLeapHandSpheres(); diff --git a/libraries/avatars/src/HandData.cpp b/libraries/avatars/src/HandData.cpp index 644a0764b7..e8e623decd 100644 --- a/libraries/avatars/src/HandData.cpp +++ b/libraries/avatars/src/HandData.cpp @@ -20,7 +20,8 @@ HandData::HandData(AvatarData* owningAvatar) : _baseOrientation(0.0f, 0.0f, 0.0f, 1.0f), _owningAvatarData(owningAvatar), _isRaveGloveActive(false), - _raveGloveMode(RAVE_GLOVE_EFFECTS_MODE_THROBBING_COLOR) + _raveGloveEffectsMode(RAVE_GLOVE_EFFECTS_MODE_THROBBING_COLOR), + _raveGloveEffectsModeChanged(false) { // Start with two palms addNewPalm(); @@ -160,8 +161,7 @@ int HandData::decodeRemoteData(unsigned char* sourceBuffer) { } setRaveGloveActive((gloveFlags & GLOVE_FLAG_RAVE) != 0); -// This is disabled for crash tracing. -// setRaveGloveMode(effectsMode); + setRaveGloveMode(effectsMode); // One byte for error checking safety. unsigned char requiredLength = (unsigned char)(sourceBuffer - startPosition); @@ -171,6 +171,13 @@ int HandData::decodeRemoteData(unsigned char* sourceBuffer) { return sourceBuffer - startPosition; } +void HandData::setRaveGloveMode(int effectsMode) +{ + if (effectsMode != _raveGloveEffectsMode) + _raveGloveEffectsModeChanged = true; + _raveGloveEffectsMode = effectsMode; +} + void HandData::setFingerTrailLength(unsigned int length) { for (size_t i = 0; i < getNumPalms(); ++i) { PalmData& palm = getPalms()[i]; diff --git a/libraries/avatars/src/HandData.h b/libraries/avatars/src/HandData.h index fd820bccc0..c871c568bb 100755 --- a/libraries/avatars/src/HandData.h +++ b/libraries/avatars/src/HandData.h @@ -70,9 +70,9 @@ public: int decodeRemoteData(unsigned char* sourceBuffer); void setRaveGloveActive(bool active) { _isRaveGloveActive = active; } - virtual void setRaveGloveMode(int effectsMode) { _raveGloveMode = effectsMode; } + void setRaveGloveMode(int effectsMode); bool isRaveGloveActive() const { return _isRaveGloveActive; } - int getRaveGloveMode() { return _raveGloveMode; } + int getRaveGloveMode() { return _raveGloveEffectsMode; } friend class AvatarData; protected: @@ -81,7 +81,8 @@ protected: AvatarData* _owningAvatarData; std::vector _palms; bool _isRaveGloveActive; - int _raveGloveMode; + int _raveGloveEffectsMode; + bool _raveGloveEffectsModeChanged; private: // privatize copy ctor and assignment operator so copies of this object cannot be made HandData(const HandData&);