You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
3.2 KiB
144 lines
3.2 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//=============================================================================// |
|
|
|
#ifndef FLEXPANEL_H |
|
#define FLEXPANEL_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#ifndef INCLUDED_MXWINDOW |
|
#include <mxtk/mxWindow.h> |
|
#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
|
|
|