|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#if !defined( ANIMATIONBROWSER_H )
#define ANIMATIONBROWSER_H
#ifdef _WIN32
#pragma once
#endif
#define IDC_AB_TRAYSCROLL 1001
#define IDC_AB_THUMBNAIL_INCREASE 1002
#define IDC_AB_THUMBNAIL_DECREASE 1003
#define IDC_AB_CONTEXT_CREATEBITMAP 1004
#define IDC_AB_CONTEXT_CREATEALLBITMAPS 1005
#define IDC_AB_FILTERTAB 1006
#define IDC_AB_CREATE_CUSTOM 1007
#define IDC_AB_ADDTOGROUPSTART 1100
#define IDC_AB_ADDTOGROUPEND 1199
#define IDC_AB_REMOVEFROMGROUPSTART 1200
#define IDC_AB_REMOVEFROMGROUPEND 1299
#define IDC_AB_DELETEGROUPSTART 1300
#define IDC_AB_DELETEGROUPEND 1399
#define IDC_AB_RENAMEGROUPSTART 1400
#define IDC_AB_RENAMEGROUPEND 1499
#define COLOR_TRAYBACKGROUND RGB( 240, 240, 220 )
#include "faceposertoolwindow.h"
#include "StudioModel.h"
class CAnimBrowserTab;
class CCustomAnim { public: CCustomAnim( const FileNameHandle_t &h ) : m_bDirty( false ), m_ShortName( UTL_INVAL_SYMBOL ) { m_Handle = h; }
void LoadFromFile(); void SaveToFile();
bool HasAnimation( char const *search );
bool m_bDirty; CUtlSymbol m_ShortName; FileNameHandle_t m_Handle; CUtlVector< CUtlSymbol > m_Animations; };
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
class AnimationBrowser : public mxWindow, public IFacePoserToolWindow { public: enum { FILTER_NONE = 0, FILTER_GESTURES, FILTER_POSTURES, FILTER_STRING, FILTER_FIRST_CUSTOM };
AnimationBrowser( mxWindow *parent, int id = 0 ); virtual ~AnimationBrowser ( void );
virtual void Shutdown();
virtual void redraw (); virtual bool PaintBackground( void );
virtual int handleEvent (mxEvent *event);
virtual void Think( float dt ); void ThumbnailIncrease( void ); void ThumbnailDecrease( void ); void RestoreThumbnailSize( void );
void Select( int sequence ); void Deselect( void );
void SetCellSize( int cellsize );
void ReloadBitmaps( void ); virtual void OnModelChanged();
void OnAddCustomAnimationFilter();
private: // Methods
void OnFilter(); bool SequencePassesFilter( StudioModel *model, int sequence, mstudioseqdesc_t &seqdesc );
int GetSequenceCount(); mstudioseqdesc_t *GetSeqDesc( int index ); int TranslateSequenceNumber( int index );
int GetCellUnderPosition( int x, int y );
bool ComputeRect( int cell, int& rcx, int& rcy, int& rcw, int& rch ); int ComputePixelsNeeded( void );
void RepositionSlider(); void SetClickedCell( int cell ); void ShowRightClickMenu( int mx, int my );
void DrawThumbNail( int sequence, CChoreoWidgetDrawHelper& helper, int rcx, int rcy, int rcw, int rch );
void DrawSequenceFocusRect( CChoreoWidgetDrawHelper& helper, int x, int y, int w, int h, COLORREF clr ); void DrawSequenceDescription( CChoreoWidgetDrawHelper& helper, int x, int y, int w, int h, int sequence, mstudioseqdesc_t &seqdesc );
void DrawFocusRect( void );
// Custom group tab stuff
void FindCustomFiles( char const *subdir, CUtlVector< FileNameHandle_t >& files ); void AddCustomFile( const FileNameHandle_t& handle ); void RenameCustomFile( int index ); void DeleteCustomFile( int index ); void PurgeCustom(); void BuildCustomFromFiles( CUtlVector< FileNameHandle_t >& files ); void UpdateCustomTabs(); int FindCustomFile( char const *shortName ); void AddAnimationToCustomFile( int index, char const *animationName ); void RemoveAnimationFromCustomFile( int index, char const *animationName ); void RemoveAllAnimationsFromCustomFile( int index );
private: // Data
mxScrollbar *slScrollbar; CAnimBrowserTab *m_pFilterTab; mxLineEdit *m_pSearchEntry;
int m_nTopOffset;
int m_nLastNumAnimations;
int m_nGranularity;
int m_nCurCell; int m_nClickedCell;
// Formatting
int m_nButtonSquare;
int m_nGap; int m_nDescriptionHeight; int m_nSnapshotWidth; int m_nSnapshotHeight;
bool m_bDragging; RECT m_rcFocus; RECT m_rcOrig; int m_nDragCell; int m_nXStart; int m_nYStart;
mxButton *m_pThumbnailIncreaseButton; mxButton *m_pThumbnailDecreaseButton;
CUtlVector< int > m_Filtered; int m_nCurFilter; char m_szSearchString[ 256 ];
float m_flDragTime;
CUtlVector< CCustomAnim * > m_CustomAnimationTabs; };
extern AnimationBrowser *g_pAnimationBrowserTool;
#endif // ANIMATIONBROWSER_H
|