From 02ca44eea58b3311f5879309c1e310e893a41b1e Mon Sep 17 00:00:00 2001 From: Kyler Eastridge Date: Sat, 7 Oct 2023 16:54:30 -0400 Subject: [BUG-234493] Add "Until key release" to the gesture "Wait" --- indra/llcharacter/llmultigesture.cpp | 2 ++ indra/llcharacter/llmultigesture.h | 10 ++++++++++ 2 files changed, 12 insertions(+) (limited to 'indra/llcharacter') diff --git a/indra/llcharacter/llmultigesture.cpp b/indra/llcharacter/llmultigesture.cpp index 7ed242f90a..511d931569 100644 --- a/indra/llcharacter/llmultigesture.cpp +++ b/indra/llcharacter/llmultigesture.cpp @@ -68,6 +68,8 @@ void LLMultiGesture::reset() mCurrentStep = 0; mWaitTimer.reset(); mWaitingTimer = FALSE; + mTriggeredByKey = FALSE; + mKeyReleased = FALSE; mWaitingAnimations = FALSE; mWaitingAtEnd = FALSE; mRequestedAnimIDs.clear(); diff --git a/indra/llcharacter/llmultigesture.h b/indra/llcharacter/llmultigesture.h index 92820159d4..1865ec089c 100644 --- a/indra/llcharacter/llmultigesture.h +++ b/indra/llcharacter/llmultigesture.h @@ -83,9 +83,18 @@ public: // We're waiting for triggered animations to stop playing BOOL mWaitingAnimations; + // We're waiting for key release + BOOL mWaitingKeyRelease; + // We're waiting a fixed amount of time BOOL mWaitingTimer; + // We're waiting for triggered animations to stop playing + BOOL mTriggeredByKey; + + // Has the key been released? + BOOL mKeyReleased; + // Waiting after the last step played for all animations to complete BOOL mWaitingAtEnd; @@ -210,6 +219,7 @@ public: const U32 WAIT_FLAG_TIME = 0x01; const U32 WAIT_FLAG_ALL_ANIM = 0x02; +const U32 WAIT_FLAG_KEY_RELEASE = 0x04; class LLGestureStepWait : public LLGestureStep { -- cgit v1.2.3 From 110eb2c989b6655796c15a657d0898375027f3f2 Mon Sep 17 00:00:00 2001 From: Alexander Gavriliuk Date: Thu, 23 Nov 2023 22:04:49 +0100 Subject: SL-20442 Add an 'Until shortcut key released' option to gestures so we can do properly user-mappable keys --- indra/llcharacter/llmultigesture.cpp | 13 ++----------- indra/llcharacter/llmultigesture.h | 26 +++++++++++++------------- 2 files changed, 15 insertions(+), 24 deletions(-) (limited to 'indra/llcharacter') diff --git a/indra/llcharacter/llmultigesture.cpp b/indra/llcharacter/llmultigesture.cpp index 511d931569..15cad4ea16 100644 --- a/indra/llcharacter/llmultigesture.cpp +++ b/indra/llcharacter/llmultigesture.cpp @@ -42,16 +42,6 @@ const S32 GESTURE_VERSION = 2; // LLMultiGesture //--------------------------------------------------------------------------- LLMultiGesture::LLMultiGesture() -: mKey(), - mMask(), - mName(), - mTrigger(), - mReplaceText(), - mSteps(), - mPlaying(FALSE), - mCurrentStep(0), - mDoneCallback(NULL), - mCallbackData(NULL) { reset(); } @@ -67,10 +57,11 @@ void LLMultiGesture::reset() mPlaying = FALSE; mCurrentStep = 0; mWaitTimer.reset(); + mWaitingAnimations = FALSE; + mWaitingKeyRelease = FALSE; mWaitingTimer = FALSE; mTriggeredByKey = FALSE; mKeyReleased = FALSE; - mWaitingAnimations = FALSE; mWaitingAtEnd = FALSE; mRequestedAnimIDs.clear(); mPlayingAnimIDs.clear(); diff --git a/indra/llcharacter/llmultigesture.h b/indra/llcharacter/llmultigesture.h index 1865ec089c..a664b45a97 100644 --- a/indra/llcharacter/llmultigesture.h +++ b/indra/llcharacter/llmultigesture.h @@ -59,11 +59,11 @@ protected: const LLMultiGesture& operator=(const LLMultiGesture& rhs); public: - KEY mKey; - MASK mMask; + KEY mKey { 0 }; + MASK mMask { 0 }; // This name can be empty if the inventory item is not around and - // the gesture manager has not yet set the name + // the gesture manager has not yet set the name std::string mName; // String, like "/foo" or "hello" that makes it play @@ -75,34 +75,34 @@ public: std::vector mSteps; // Is the gesture currently playing? - BOOL mPlaying; + BOOL mPlaying { FALSE }; // "instruction pointer" for steps - S32 mCurrentStep; + S32 mCurrentStep { 0 }; // We're waiting for triggered animations to stop playing - BOOL mWaitingAnimations; + BOOL mWaitingAnimations { FALSE }; // We're waiting for key release - BOOL mWaitingKeyRelease; + BOOL mWaitingKeyRelease { FALSE }; // We're waiting a fixed amount of time - BOOL mWaitingTimer; + BOOL mWaitingTimer { FALSE }; // We're waiting for triggered animations to stop playing - BOOL mTriggeredByKey; + BOOL mTriggeredByKey { FALSE }; // Has the key been released? - BOOL mKeyReleased; + BOOL mKeyReleased { FALSE }; // Waiting after the last step played for all animations to complete - BOOL mWaitingAtEnd; + BOOL mWaitingAtEnd { FALSE }; // Timer for waiting LLFrameTimer mWaitTimer; - void (*mDoneCallback)(LLMultiGesture* gesture, void* data); - void* mCallbackData; + void (*mDoneCallback)(LLMultiGesture* gesture, void* data) { NULL }; + void* mCallbackData { NULL }; // Animations that we requested to start std::set mRequestedAnimIDs; -- cgit v1.2.3