//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// // // Purpose: // //=============================================================================// #ifndef FLEXPANEL_H #define FLEXPANEL_H #ifdef _WIN32 #pragma once #endif #ifndef INCLUDED_MXWINDOW #include #endif #define IDC_FLEX 7001 #define IDC_FLEXSCROLL 7101 #define IDC_EXPRESSIONRESET 7102 // NOTE THIS THIS TAKES UP 4 * 96 entries (384) // #define NEXT_AVAIL 7457 ...etc. #define IDC_FLEXSCALE 7200 #define IDC_FLEXSCALE_LAST 7584 #define IDC_FP_UNCHECK_ALL 7800 #define IDC_FP_CHECK_ALL 7801 #define IDC_FP_INVERT 7802 #define IDC_FP_MENU 7803 #include "studio.h" class mxTab; class mxChoice; class mxCheckBox; class mxSlider; class mxScrollbar; class mxLineEdit; class mxLabel; class mxButton; class MatSysWindow; class TextureWindow; class mxExpressionSlider; #include "expressions.h" #include "faceposertoolwindow.h" /* int nameindex; int numkeys; int keyindex; { char key, char weight } */ class ControlPanel; class FlexPanel : public mxWindow, public IFacePoserToolWindow { typedef mxWindow BaseClass; mxExpressionSlider *slFlexScale[ GLOBAL_STUDIO_FLEX_CONTROL_COUNT ]; mxScrollbar *slScrollbar; mxButton *btnResetSliders; mxButton *btnCopyToSliders; mxButton *btnCopyFromSliders; mxButton *btnMenu; public: // CREATORS FlexPanel (mxWindow *parent); virtual ~FlexPanel (); virtual void redraw(); virtual bool PaintBackground( void ); void SetEvent( CChoreoEvent *event ); virtual void OnModelChanged(); // MANIPULATORS int handleEvent (mxEvent *event); void initFlexes (); bool IsValidSlider( int iFlexController ) const; float GetSlider( int iFlexController ); float GetSliderRawValue( int iFlexController ); void GetSliderRange( int iFlexController, float& minvalue, float& maxvalue ); void SetSlider( int iFlexController, float value ); float GetInfluence( int iFlexController ); void SetInfluence( int iFlexController, float value ); void SetEdited( int iFlexController, bool isEdited ); bool IsEdited( int iFlexController ); int LookupFlex( int iSlider, int barnum ); int LookupPairedFlex( int iFlexController ); // maps global flex_controller index to UI slider int nFlexSliderIndex[ GLOBAL_STUDIO_FLEX_CONTROL_COUNT ]; int nFlexSliderBarnum[ GLOBAL_STUDIO_FLEX_CONTROL_COUNT ]; void PositionSliders( int sboffset ); void PositionControls( int width, int height ); void EditExpression( void ); void NewExpression( void ); void setExpression( int index ); void DeleteExpression( int index ); void SaveExpression( int index ); void RevertExpression( int index ); void CopyControllerSettings( void ); void PasteControllerSettings( void ); void ResetSliders( bool preserveundo, bool bDirtyClass ); void CopyControllerSettingsToStructure( CExpression *exp ); private: enum { FP_STATE_UNCHECK = 0, FP_STATE_CHECK, FP_STATE_INVERT }; void OnSetAll( int state ); void OnMenu(); bool m_bNewExpressionMode; // Since we combine left/right into one, this will be less than hdr->numflexcontrollers int m_nViewableFlexControllerCount; }; extern FlexPanel *g_pFlexPanel; #endif // FLEXPANEL_H