diff options
| author | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:31:46 -0800 |
|---|---|---|
| committer | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:46:31 -0800 |
| commit | f56bb35301836e56582a575a75864392a0177875 (patch) | |
| tree | de61ddd39de3e7df52759711950b4c288592f0dc /mp/src/public/vgui_controls/AnimationController.h | |
| parent | Mark some more files as text. (diff) | |
| download | source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip | |
Fix line endings. WHAMMY.
Diffstat (limited to 'mp/src/public/vgui_controls/AnimationController.h')
| -rw-r--r-- | mp/src/public/vgui_controls/AnimationController.h | 540 |
1 files changed, 270 insertions, 270 deletions
diff --git a/mp/src/public/vgui_controls/AnimationController.h b/mp/src/public/vgui_controls/AnimationController.h index 101debf4..e418f329 100644 --- a/mp/src/public/vgui_controls/AnimationController.h +++ b/mp/src/public/vgui_controls/AnimationController.h @@ -1,270 +1,270 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-//=============================================================================//
-
-#ifndef ANIMATIONCONTROLLER_H
-#define ANIMATIONCONTROLLER_H
-#ifdef _WIN32
-#pragma once
-#endif
-
-#include <vgui_controls/Panel.h>
-#include <vgui_controls/PHandle.h>
-
-#include "tier1/utlsymbol.h"
-#include "tier1/utlvector.h"
-
-namespace vgui
-{
-
-//-----------------------------------------------------------------------------
-// Purpose: Handles controlling panel animation
-// It is never visible, but needs to be a panel so that can receive messages
-//-----------------------------------------------------------------------------
-class AnimationController : public Panel
-{
- DECLARE_CLASS_SIMPLE( AnimationController, Panel );
-
-public:
- AnimationController(Panel *parent);
- ~AnimationController();
-
- // sets which script file to use
- bool SetScriptFile( VPANEL sizingPanel, const char *fileName, bool wipeAll = false );
-
- // reloads the currently set script file
- void ReloadScriptFile();
-
- // runs a frame of animation (time is passed in so slow motion, etc. works)
- void UpdateAnimations( float curtime );
-
- int GetNumActiveAnimations( void ) { return m_ActiveAnimations.Count(); }
-
- // plays all animations to completion instantly
- void RunAllAnimationsToCompletion();
-
- // stops all animations
- void CancelAllAnimations();
-
- // starts an animation sequence script
- bool StartAnimationSequence(const char *sequenceName);
- bool StartAnimationSequence(Panel *pWithinParent, const char *sequenceName);
-
- // gets the length of an animation sequence, in seconds
- float GetAnimationSequenceLength(const char *sequenceName);
-
- // sets that the script file should be reloaded each time a script is ran
- // used for development
- void SetAutoReloadScript(bool state);
-
- enum Interpolators_e
- {
- INTERPOLATOR_LINEAR,
- INTERPOLATOR_ACCEL,
- INTERPOLATOR_DEACCEL,
- INTERPOLATOR_PULSE,
- INTERPOLATOR_FLICKER,
- INTERPOLATOR_SIMPLESPLINE, // ease in / out
- INTERPOLATOR_BOUNCE, // gravitational bounce
- };
-
- // runs the specific animation command (doesn't use script file at all)
- void RunAnimationCommand(vgui::Panel *panel, const char *variable, float targetValue, float startDelaySeconds, float durationSeconds, Interpolators_e interpolator, float animParameter = 0 );
- void RunAnimationCommand(vgui::Panel *panel, const char *variable, Color targetValue, float startDelaySeconds, float durationSeconds, Interpolators_e interpolator, float animParameter = 0 );
-
-private:
- bool UpdateScreenSize();
-
- bool LoadScriptFile(const char *fileName);
- bool ParseScriptFile(char *pMem, int length);
-
- void UpdatePostedMessages(bool bRunToCompletion);
- void UpdateActiveAnimations(bool bRunToCompletion);
-
- bool m_bAutoReloadScript;
- float m_flCurrentTime;
-
- enum AnimCommandType_e
- {
- CMD_ANIMATE,
- CMD_RUNEVENT,
- CMD_STOPEVENT,
- CMD_STOPANIMATION,
- CMD_STOPPANELANIMATIONS,
- CMD_SETFONT,
- CMD_SETTEXTURE,
- CMD_SETSTRING,
- };
-
- enum RelativeAlignment
- {
- a_northwest = 0,
- a_north,
- a_northeast,
- a_west,
- a_center,
- a_east,
- a_southwest,
- a_south,
- a_southeast,
- };
-
- struct RelativeAlignmentLookup
- {
- RelativeAlignment align;
- char const *name;
- };
-
- // a single animatable value
- // some var types use 1, 2, 3 or all 4 of the values
- struct Value_t
- {
- float a, b, c, d;
- };
-
- struct AnimAlign_t
- {
- // For Position, Xpos, YPos
- bool relativePosition;
- UtlSymId_t alignPanel;
- RelativeAlignment alignment;
- };
-
- // info for the animate command
- struct AnimCmdAnimate_t
- {
- UtlSymId_t panel;
- UtlSymId_t variable;
- Value_t target;
- int interpolationFunction;
- float interpolationParameter;
- float startTime;
- float duration;
-
- AnimAlign_t align;
-
- };
-
- // info for the run event command
- struct AnimCmdEvent_t
- {
- UtlSymId_t event;
- UtlSymId_t variable;
- UtlSymId_t variable2;
- float timeDelay;
- };
-
- // holds a single command from an animation sequence
- struct AnimCommand_t
- {
- AnimCommandType_e commandType;
- union
- {
- AnimCmdAnimate_t animate;
- AnimCmdEvent_t runEvent;
- } cmdData;
- };
-
- // holds a full sequence
- struct AnimSequence_t
- {
- UtlSymId_t name;
- float duration;
- CUtlVector<AnimCommand_t> cmdList;
- };
-
- // holds the list of sequences
- CUtlVector<AnimSequence_t> m_Sequences;
-
- // list of active animations
- struct ActiveAnimation_t
- {
- PHandle panel;
- UtlSymId_t seqName; // the sequence this belongs to
- UtlSymId_t variable;
- bool started;
- Value_t startValue;
- Value_t endValue;
- int interpolator;
- float interpolatorParam;
- float startTime;
- float endTime;
-
- AnimAlign_t align;
- };
- CUtlVector<ActiveAnimation_t> m_ActiveAnimations;
-
- // posted messages
- struct PostedMessage_t
- {
- AnimCommandType_e commandType;
- UtlSymId_t seqName;
- UtlSymId_t event;
- UtlSymId_t variable;
- UtlSymId_t variable2;
- float startTime;
- PHandle parent;
- };
- CUtlVector<PostedMessage_t> m_PostedMessages;
-
- struct RanEvent_t
- {
- UtlSymId_t event;
- Panel *pParent;
-
- bool operator==( const RanEvent_t &other ) const
- {
- return ( event == other.event && pParent == other.pParent );
- }
- };
-
- // variable names
- UtlSymId_t m_sPosition, m_sSize, m_sFgColor, m_sBgColor;
- UtlSymId_t m_sXPos, m_sYPos, m_sWide, m_sTall;
-
- // file name
- CUtlVector<UtlSymId_t> m_ScriptFileNames;
-
- // runs a single line of the script
- void ExecAnimationCommand(UtlSymId_t seqName, AnimCommand_t &animCommand, Panel *pWithinParent);
- // removes all commands belonging to a script
- void RemoveQueuedAnimationCommands(UtlSymId_t seqName, vgui::Panel *panel = NULL);
- // removes an existing instance of a command
- void RemoveQueuedAnimationByType(vgui::Panel *panel, UtlSymId_t variable, UtlSymId_t sequenceToIgnore);
-
- // handlers
- void StartCmd_Animate(UtlSymId_t seqName, AnimCmdAnimate_t &cmd, Panel *pWithinParent);
- void StartCmd_Animate(Panel *panel, UtlSymId_t seqName, AnimCmdAnimate_t &cmd);
- void RunCmd_RunEvent(PostedMessage_t &msg);
- void RunCmd_StopEvent(PostedMessage_t &msg);
- void RunCmd_StopPanelAnimations(PostedMessage_t &msg);
- void RunCmd_StopAnimation(PostedMessage_t &msg);
- void RunCmd_SetFont(PostedMessage_t &msg);
- void RunCmd_SetTexture(PostedMessage_t &msg);
- void RunCmd_SetString(PostedMessage_t &msg);
-
- // value access
- Value_t GetValue(ActiveAnimation_t& anim, Panel *panel, UtlSymId_t var);
- void SetValue(ActiveAnimation_t& anim, Panel *panel, UtlSymId_t var, Value_t &value);
-
- // interpolation
- Value_t GetInterpolatedValue(int interpolator, float interpolatorParam, float currentTime, float startTime, float endTime, Value_t &startValue, Value_t &endValue);
-
- void SetupPosition( AnimCmdAnimate_t& cmd, float *output, char const *psz, int screendimension );
- static RelativeAlignment LookupAlignment( char const *token );
- static RelativeAlignmentLookup g_AlignmentLookup[];
-
- int GetRelativeOffset( AnimAlign_t& cmd, bool xcoord );
-
- VPANEL m_hSizePanel;
- int m_nScreenBounds[ 4 ];
-};
-
-// singleton accessor for use only by other vgui_controls
-extern AnimationController *GetAnimationController();
-
-} // namespace vgui
-
-#endif // ANIMATIONCONTROLLER_H
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#ifndef ANIMATIONCONTROLLER_H +#define ANIMATIONCONTROLLER_H +#ifdef _WIN32 +#pragma once +#endif + +#include <vgui_controls/Panel.h> +#include <vgui_controls/PHandle.h> + +#include "tier1/utlsymbol.h" +#include "tier1/utlvector.h" + +namespace vgui +{ + +//----------------------------------------------------------------------------- +// Purpose: Handles controlling panel animation +// It is never visible, but needs to be a panel so that can receive messages +//----------------------------------------------------------------------------- +class AnimationController : public Panel +{ + DECLARE_CLASS_SIMPLE( AnimationController, Panel ); + +public: + AnimationController(Panel *parent); + ~AnimationController(); + + // sets which script file to use + bool SetScriptFile( VPANEL sizingPanel, const char *fileName, bool wipeAll = false ); + + // reloads the currently set script file + void ReloadScriptFile(); + + // runs a frame of animation (time is passed in so slow motion, etc. works) + void UpdateAnimations( float curtime ); + + int GetNumActiveAnimations( void ) { return m_ActiveAnimations.Count(); } + + // plays all animations to completion instantly + void RunAllAnimationsToCompletion(); + + // stops all animations + void CancelAllAnimations(); + + // starts an animation sequence script + bool StartAnimationSequence(const char *sequenceName); + bool StartAnimationSequence(Panel *pWithinParent, const char *sequenceName); + + // gets the length of an animation sequence, in seconds + float GetAnimationSequenceLength(const char *sequenceName); + + // sets that the script file should be reloaded each time a script is ran + // used for development + void SetAutoReloadScript(bool state); + + enum Interpolators_e + { + INTERPOLATOR_LINEAR, + INTERPOLATOR_ACCEL, + INTERPOLATOR_DEACCEL, + INTERPOLATOR_PULSE, + INTERPOLATOR_FLICKER, + INTERPOLATOR_SIMPLESPLINE, // ease in / out + INTERPOLATOR_BOUNCE, // gravitational bounce + }; + + // runs the specific animation command (doesn't use script file at all) + void RunAnimationCommand(vgui::Panel *panel, const char *variable, float targetValue, float startDelaySeconds, float durationSeconds, Interpolators_e interpolator, float animParameter = 0 ); + void RunAnimationCommand(vgui::Panel *panel, const char *variable, Color targetValue, float startDelaySeconds, float durationSeconds, Interpolators_e interpolator, float animParameter = 0 ); + +private: + bool UpdateScreenSize(); + + bool LoadScriptFile(const char *fileName); + bool ParseScriptFile(char *pMem, int length); + + void UpdatePostedMessages(bool bRunToCompletion); + void UpdateActiveAnimations(bool bRunToCompletion); + + bool m_bAutoReloadScript; + float m_flCurrentTime; + + enum AnimCommandType_e + { + CMD_ANIMATE, + CMD_RUNEVENT, + CMD_STOPEVENT, + CMD_STOPANIMATION, + CMD_STOPPANELANIMATIONS, + CMD_SETFONT, + CMD_SETTEXTURE, + CMD_SETSTRING, + }; + + enum RelativeAlignment + { + a_northwest = 0, + a_north, + a_northeast, + a_west, + a_center, + a_east, + a_southwest, + a_south, + a_southeast, + }; + + struct RelativeAlignmentLookup + { + RelativeAlignment align; + char const *name; + }; + + // a single animatable value + // some var types use 1, 2, 3 or all 4 of the values + struct Value_t + { + float a, b, c, d; + }; + + struct AnimAlign_t + { + // For Position, Xpos, YPos + bool relativePosition; + UtlSymId_t alignPanel; + RelativeAlignment alignment; + }; + + // info for the animate command + struct AnimCmdAnimate_t + { + UtlSymId_t panel; + UtlSymId_t variable; + Value_t target; + int interpolationFunction; + float interpolationParameter; + float startTime; + float duration; + + AnimAlign_t align; + + }; + + // info for the run event command + struct AnimCmdEvent_t + { + UtlSymId_t event; + UtlSymId_t variable; + UtlSymId_t variable2; + float timeDelay; + }; + + // holds a single command from an animation sequence + struct AnimCommand_t + { + AnimCommandType_e commandType; + union + { + AnimCmdAnimate_t animate; + AnimCmdEvent_t runEvent; + } cmdData; + }; + + // holds a full sequence + struct AnimSequence_t + { + UtlSymId_t name; + float duration; + CUtlVector<AnimCommand_t> cmdList; + }; + + // holds the list of sequences + CUtlVector<AnimSequence_t> m_Sequences; + + // list of active animations + struct ActiveAnimation_t + { + PHandle panel; + UtlSymId_t seqName; // the sequence this belongs to + UtlSymId_t variable; + bool started; + Value_t startValue; + Value_t endValue; + int interpolator; + float interpolatorParam; + float startTime; + float endTime; + + AnimAlign_t align; + }; + CUtlVector<ActiveAnimation_t> m_ActiveAnimations; + + // posted messages + struct PostedMessage_t + { + AnimCommandType_e commandType; + UtlSymId_t seqName; + UtlSymId_t event; + UtlSymId_t variable; + UtlSymId_t variable2; + float startTime; + PHandle parent; + }; + CUtlVector<PostedMessage_t> m_PostedMessages; + + struct RanEvent_t + { + UtlSymId_t event; + Panel *pParent; + + bool operator==( const RanEvent_t &other ) const + { + return ( event == other.event && pParent == other.pParent ); + } + }; + + // variable names + UtlSymId_t m_sPosition, m_sSize, m_sFgColor, m_sBgColor; + UtlSymId_t m_sXPos, m_sYPos, m_sWide, m_sTall; + + // file name + CUtlVector<UtlSymId_t> m_ScriptFileNames; + + // runs a single line of the script + void ExecAnimationCommand(UtlSymId_t seqName, AnimCommand_t &animCommand, Panel *pWithinParent); + // removes all commands belonging to a script + void RemoveQueuedAnimationCommands(UtlSymId_t seqName, vgui::Panel *panel = NULL); + // removes an existing instance of a command + void RemoveQueuedAnimationByType(vgui::Panel *panel, UtlSymId_t variable, UtlSymId_t sequenceToIgnore); + + // handlers + void StartCmd_Animate(UtlSymId_t seqName, AnimCmdAnimate_t &cmd, Panel *pWithinParent); + void StartCmd_Animate(Panel *panel, UtlSymId_t seqName, AnimCmdAnimate_t &cmd); + void RunCmd_RunEvent(PostedMessage_t &msg); + void RunCmd_StopEvent(PostedMessage_t &msg); + void RunCmd_StopPanelAnimations(PostedMessage_t &msg); + void RunCmd_StopAnimation(PostedMessage_t &msg); + void RunCmd_SetFont(PostedMessage_t &msg); + void RunCmd_SetTexture(PostedMessage_t &msg); + void RunCmd_SetString(PostedMessage_t &msg); + + // value access + Value_t GetValue(ActiveAnimation_t& anim, Panel *panel, UtlSymId_t var); + void SetValue(ActiveAnimation_t& anim, Panel *panel, UtlSymId_t var, Value_t &value); + + // interpolation + Value_t GetInterpolatedValue(int interpolator, float interpolatorParam, float currentTime, float startTime, float endTime, Value_t &startValue, Value_t &endValue); + + void SetupPosition( AnimCmdAnimate_t& cmd, float *output, char const *psz, int screendimension ); + static RelativeAlignment LookupAlignment( char const *token ); + static RelativeAlignmentLookup g_AlignmentLookup[]; + + int GetRelativeOffset( AnimAlign_t& cmd, bool xcoord ); + + VPANEL m_hSizePanel; + int m_nScreenBounds[ 4 ]; +}; + +// singleton accessor for use only by other vgui_controls +extern AnimationController *GetAnimationController(); + +} // namespace vgui + +#endif // ANIMATIONCONTROLLER_H |