//========= Copyright (c) 1996-2005, Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ // //=============================================================================// // // Half-Life Model Viewer (c) 1999 by Mete Ciragan // // file: ControlPanel.h // last modified: May 29 programs and associated files contained in this // distribution were developed by Mete Ciragan. The programs // are not in the public domain, but they are freely // distributable without licensing fees. These programs are // provided without guarantee or warrantee expressed or // implied. // // version: 1.2 // // email: mete@swissquake.ch // web: http://www.swissquake.ch/chumbalum-soft/ // #ifndef INCLUDED_CONTROLPANEL #define INCLUDED_CONTROLPANEL #ifndef INCLUDED_MXWINDOW #include #endif #define IDC_TAB 1901 #define IDC_RENDERMODE 2001 #define IDC_GROUND 2003 #define IDC_MOVEMENT 2004 #define IDC_BACKGROUND 2005 #define IDC_HITBOXES 2006 #define IDC_BONES 2007 #define IDC_ATTACHMENTS 2008 #define IDC_PHYSICSMODEL 2009 #define IDC_PHYSICSHIGHLIGHT 2010 #define IDC_LODCHOICE 2011 #define IDC_AUTOLOD 2012 #define IDC_LODSWITCH 2013 #define IDC_SOFTWARESKIN 2014 #define IDC_OVERBRIGHT2 2015 #define IDC_RENDER_FOV 2016 #define IDC_SEQUENCEBOXES 2017 #define IDC_RUNIK 2018 #define IDC_HEADTURN 2019 #define IDC_NORMALS 2020 #define IDC_TANGENTFRAME 2021 #define IDC_NORMALMAP 2022 #define IDC_SPECULAR 2023 #define IDC_SHADOW 2024 #define IDC_ILLUMPOSITION 2025 #define IDC_OVERLAY_WIREFRAME 2026 #define IDC_PLAYSOUNDS 2027 #define IDC_MESSAGES 2028 #define IDC_SHADERS 2029 #define IDC_SHOWORIGINAXIS 2030 #define IDC_ORIGINAXISLENGTH 2031 #define IDC_DISPLACEMENTMAP 2032 #define IDC_EYELOOK 2033 #define IDC_INCLUDEDMODELS 2034 #define IDC_DRAWHITBOXSET 2035 #define IDC_DRAWHITBOXNUMBER 2036 #define IDC_MATERIALVARMATS 2037 #define IDC_MATERIALVARPARAMS 2038 #define IDC_ROLL_BODYGROUPS 2039 #define IDC_EXPLORE_TO_VMT 2040 #define IDC_BONEWEIGHTINDEX 2041 #define IDC_MATVARSLIDERMATRIX 2050 #define IDC_MATVAREDIT 2051 #define IDC_MATVARCOLORPICKER 2052 #define IDC_MATVARSLIDERFLOAT 2053 #ifdef MATERIAL_SCRIPT_SAVE_FEATURE #define IDC_MATVARSAVE 2054 #endif #define IDC_MATVARLOAD 2055 #define IDC_MATVARCOPYTOCLIPBOARD 2056 #define MAX_SEQUENCES 5 #define IDC_SEQUENCE0 3000 #define IDC_SEQUENCE1 3001 #define IDC_SEQUENCE2 3002 #define IDC_SEQUENCE3 3003 #define IDC_SEQUENCE4 3004 #define IDC_SEQUENCESCALE0 3005 #define IDC_SEQUENCESCALE1 3006 #define IDC_SEQUENCESCALE2 3007 #define IDC_SEQUENCESCALE3 3008 #define IDC_SEQUENCESCALE4 3009 #define IDC_FRAMESELECTION0 3010 #define IDC_FRAMESELECTION1 3011 #define IDC_FRAMESELECTION2 3012 #define IDC_FRAMESELECTION3 3013 #define IDC_FRAMESELECTION4 3014 #define IDC_SEQUENCEFILTER0 3020 #define IDC_SEQUENCEFILTER1 3021 #define IDC_SEQUENCEFILTER2 3022 #define IDC_SEQUENCEFILTER3 3023 #define IDC_SEQUENCEFILTER4 3024 #define NUM_POSEPARAMETERS 8 #define IDC_POSEPARAMETER_SCALE 3100 #define IDC_POSEPARAMETER 3120 #define IDC_POSEPARAMETER_VALUE 3140 #define IDC_SPEEDSCALE 3201 #define IDC_FORCEFRAME 3202 #define IDC_BLENDSEQUENCECHANGES 3203 #define IDC_BLENDNOW 3204 #define IDC_BLENDTIME 3205 #define IDC_ACTIVITY_MODIFIERS 3206 #define IDC_ANIMATEWEAPONS 3207 #define IDC_BODYPART 4001 #define IDC_SUBMODEL 4002 #define IDC_CONTROLLER 4003 #define IDC_CONTROLLERVALUE 4004 #define IDC_SKINS 4005 #define IDC_MATERIALS 4006 #define IDC_BODYGROUPPRESET 4007 #define IDC_BONE_NAMES 4999 #define IDC_BONE_BONELIST 5000 #define IDC_BONE_GENERATEQC 5001 #define IDC_BONE_HIGHLIGHT_BONE 5002 #define IDC_BONE_HITBOXLIST 5003 #define IDC_BONE_SURFACEPROP 5004 #define IDC_BONE_HIGHLIGHT_HITBOX 5005 #define IDC_BONE_ADD_HITBOX 5006 #define IDC_BONE_DELETE_HITBOX 5007 #define IDC_BONE_APPLY_TO_CHILDREN 5008 #define IDC_BONE_SHOW_DEFAULT_POSE 5009 #define IDC_BONE_HITBOX_ORIGINX 5010 #define IDC_BONE_HITBOX_ORIGINY 5011 #define IDC_BONE_HITBOX_ORIGINZ 5012 #define IDC_BONE_HITBOX_SIZEX 5013 #define IDC_BONE_HITBOX_SIZEY 5014 #define IDC_BONE_HITBOX_SIZEZ 5015 #define IDC_BONE_HITBOX_GROUP 5016 #define IDC_BONE_UPDATE_HITBOX 5017 #define IDC_BONE_USE_AUTOGENERATED_HITBOXES 5018 #define IDC_BONE_HITBOXSET 5019 #define IDC_BONE_HITBOXADDSET 5020 #define IDC_BONE_HITBOXDELETESET 5021 #define IDC_BONE_HITBOXSETNAME 5022 #define IDC_BONE_HITBOXSETNAME_EDIT 5023 #define IDC_BONE_HITBOX_EDITMODE 5024 // This range is reserved for the attachment window. #define IDC_ATTACHMENT_WINDOW_FIRST 5024 #define IDC_ATTACHMENT_WINDOW_LAST 5100 #define IDC_BONE_HITBOX_NAME 5101 #define IDC_BONE_SAVE_HITBOXES 5102 #define IDC_BONE_LOAD_HITBOXES 5103 #define IDC_FLEX 7001 #define IDC_FLEXDEFAULTS 7002 #define IDC_FLEXRANDOM 7003 #define IDC_FLEXZERO 7004 #define IDC_FLEXONE 7005 #define IDC_FLEXSCALE 7101 #define NUM_FLEX_SLIDERS 48 #define IDC_PHYS_FIRST 7501 #define IDC_PHYS_BONE 7501 #define IDC_PHYS_CON_LINK_LIMITS 7502 #define IDC_PHYS_MATERIAL 7503 #define IDC_PHYS_CON_MIN 7504 #define IDC_PHYS_CON_MAX 7505 #define IDC_PHYS_CON_TEST 7506 #define IDC_PHYS_P_MASSBIAS 7507 #define IDC_PHYS_CON_FRICTION 7508 //#define IDC_PHYS_P_ELASTICITY 7509 #define IDC_PHYS_P_INERTIA 7510 #define IDC_PHYS_P_DAMPING 7511 #define IDC_PHYS_P_ROT_DAMPING 7512 #define IDC_PHYS_MASS 7513 #define IDC_PHYS_QCFILE 7514 #define IDC_PHYS_CON_AXIS_X 7515 #define IDC_PHYS_CON_AXIS_Y 7516 #define IDC_PHYS_CON_AXIS_Z 7517 #define IDC_PHYS_CON_TYPE_FREE 7518 #define IDC_PHYS_CON_TYPE_FIXED 7519 #define IDC_PHYS_CON_TYPE_LIMIT 7520 #define IDC_PHYS_LAST 7599 #define IDC_SOFT_FIRST 7600 #define IDC_SOFT_MASS 7600 #define IDC_SOFT_BONE 7601 #define IDC_SOFT_CON_AXIS_X 7603 #define IDC_SOFT_CON_AXIS_Y 7604 #define IDC_SOFT_CON_AXIS_Z 7605 #define IDC_SOFT_SIMULATE 7606 #define IDC_SOFT_SHOW_POLYGONS 7610 #define IDC_SOFT_SHOW_EDGES 7611 #define IDC_SOFT_SHOW_BASES 7612 #define IDC_SOFT_SHOW_WIND 7613 #define IDC_SOFT_SHOW_INDICES 7614 #define IDC_SOFT_ITERATIONS 7615 #define IDC_SOFT_WIND_YAW 7616 #define IDC_SOFT_WIND_STRENGTH 7617 #define IDC_SOFT_SURFACE_STRETCH 7618 #define IDC_SOFT_THREAD_STRETCH 7619 #define IDC_SOFT_SIMD 7620 #define IDC_SOFT_GRAVITY 7621 #define IDC_SOFT_VELOCITY_DAMPING 7622 #define IDC_SOFT_SHOW_COLLISION 7623 #define IDC_SOFT_LAST 7699 #define MAX_ANIMS 4 #define IDC_ANIMX 8020 // through 8023 ( MAX_ANIMS ) #define IDC_ANIMY 8030 // through 8033 ( MAX_ANIMS ) #define IDC_IKRULE_CHAIN 9000 #define IDC_IKRULE_CHOICE 9001 #define IDC_IKRULE_TOUCH 9002 #define IDC_IKRULE_ATTACHMENT 9003 #define IDC_IKRULE_RANGE_TOGGLE 9004 #define IDC_IKRULE_RANGE_START 9005 #define IDC_IKRULE_RANGE_PEAK 9006 #define IDC_IKRULE_RANGE_TAIL 9007 #define IDC_IKRULE_RANGE_END 9008 #define IDC_IKRULE_RANGE_START_NOW 9009 #define IDC_IKRULE_RANGE_PEAK_NOW 9010 #define IDC_IKRULE_RANGE_TAIL_NOW 9011 #define IDC_IKRULE_RANGE_END_NOW 9012 #define IDC_IKRULE_CONTACT_TOGGLE 9013 #define IDC_IKRULE_CONTACT_FRAME_NOW 9014 #define IDC_IKRULE_CONTACT_FRAME 9015 #define IDC_IKRULE_USING 9016 #define IDC_IKRULE_QC_STRING 9017 #define IDC_SUBMODEL_LOADMERGEDMODEL 9018 #define IDC_SUBMODEL_UNLOADMERGEDMODEL 9019 #define IDC_SUBMODEL_UNLOADALLMERGEDMODELS 9020 #define IDC_SUBMODEL_LOADMERGEDMODEL_STEAM 9021 #define IDC_SUBMODEL_UPDATE_SELECTION 9022 #define IDC_SUBMODEL_UPDATE_BONESELECTION 9023 #define IDC_COMPILE_UPDATE_QCPATHSELECTION 9024 #define IDC_COMPILE_REMOVEFROMLIST 9025 #define IDC_COMPILE_CALLSTUDIOMDL 9026 #define IDC_COMPILE_OPENLOGFILE 9027 #define IDC_COMPILE_EXPLORETOQC 9028 #define IDC_COMPILE_LOADMODELFILE 9029 #define IDC_COMPILE_SELECTEDTOGGLE 9030 #define IDC_EVENT_SOUND_FRAME_NOW 6000 #define IDC_EVENT_SOUND_FRAME 6001 #define IDC_EVENT_SOUND_NAME 6002 #define IDC_EVENT_QC_STRING 6003 class mxTab; class mxChoice; class mxCheckBox; class mxSlider; class mxLineEdit; class mxLineEdit2; class mxLabel; class mxListBox; class mxButton; class mxRadioButton; class MatSysWindow; class TextureWindow; class CBoneControlWindow; class CAttachmentsWindow; class CStudioHdr; // Return codes from loadModel. enum LoadModelResult_t { LoadModel_Success = 0, LoadModel_LoadFail, LoadModel_NoModel, LoadModel_PostLoadFail, }; class ControlPanel : public mxWindow { mxWindow *wRender; mxTab *tab; mxChoice *cRenderMode; mxChoice *cHighlightBone; mxChoice *cDrawHitBoxSet; mxChoice *cDrawHitBoxNumber; mxCheckBox *cbGround; mxCheckBox *cbHitBoxes; mxCheckBox *cbSequenceBoxes; mxCheckBox *cbShadow; mxCheckBox *cbMovement; mxCheckBox *cbBackground; mxCheckBox *cbSoftwareSkin; mxCheckBox *cbOverbright2; mxCheckBox *cbAttachments; mxCheckBox *cbBones; mxCheckBox *cbNormals; mxCheckBox *cbNormalMap; mxCheckBox *cbDisplacementMap; // mxCheckBox *cbParallaxMap; mxCheckBox *cbTangentFrame; mxCheckBox *cbOverlayWireframe; mxCheckBox *cbSpecular; mxCheckBox *cbRunIK; mxCheckBox *cbEnableHead; mxCheckBox *cbIllumPosition; mxCheckBox *cbPlaySounds; mxCheckBox *cbShowOriginAxis; mxSlider *leOriginAxisLength; mxChoice *cIncludedModels; mxChoice *cbBoneWeightInspectIndex; mxLabel *lblBoneWeightInspectValues; mxChoice *cLODChoice; mxCheckBox *cbAutoLOD; mxLineEdit *leLODSwitch; mxLabel *lLODMetric; mxChoice *cSequence[MAX_SEQUENCES]; mxLabel *laFilters; mxLineEdit *leSequenceFilter[MAX_SEQUENCES]; mxSlider *slSequence[MAX_SEQUENCES]; int m_iLastSequenceCount; int *iSelectionToSequence[MAX_SEQUENCES]; // selection to sequence int *iSequenceToSelection[MAX_SEQUENCES]; // sequence to selection mxLabel *laGroundSpeed; mxSlider *slSpeedScale; mxLabel *laFPS; mxLabel *laBlendAmount; mxChoice *cPoseParameter[NUM_POSEPARAMETERS]; mxSlider *slPoseParameter[NUM_POSEPARAMETERS]; mxLineEdit *lePoseParameter[NUM_POSEPARAMETERS]; mxLineEdit *leFOV; mxSlider *slBlendTime; mxLabel *laBlendTime; mxChoice *cActivityModifiers; mxSlider *slForceFrame; mxLabel *lForcedFrame; mxRadioButton *rbFrameSelection[MAX_SEQUENCES]; mxChoice *cBodypart, *cController, *cSubmodel, *cBodyGroupPreset; mxSlider *slController; mxChoice *cSkin; mxChoice *cMaterials; mxLabel *lModelInfo1, *lModelInfo2, *lModelInfo3, *lModelInfo4; //mxChoice *cTextures; //mxCheckBox *cbChrome; //mxLabel *lTexSize; //mxLineEdit *leWidth, *leHeight; mxLineEdit *leMeshScale, *leBoneScale; MatSysWindow *d_MatSysWindow; TextureWindow *d_textureWindow; mxChoice *cFlex[NUM_FLEX_SLIDERS]; mxSlider *slFlexScale[NUM_FLEX_SLIDERS]; mxChoice *cPhysicsBone; mxChoice *cSoftbodyCtrl; mxCheckBox *cbSoftbodyPolygons; mxCheckBox *cbSoftbodyWind; mxCheckBox *cbSoftbodyIndices; mxCheckBox *cbSoftbodyCollision; mxCheckBox *cbSoftbodyEdges; mxCheckBox *cbSoftbodyBases; mxCheckBox *cbSoftbodyEnableSimd; mxCheckBox *cbSoftbodySimulate; mxRadioButton *rbConstraintAxis[ 3 ]; mxRadioButton *rbSoftbodyAxis[ 3 ]; mxSlider *slPhysicsFriction; mxLabel *lPhysicsFriction; mxLabel *leSoftbodyIterations; mxSlider *slSoftbodyIterations; mxSlider *slSoftbodyWindYaw; mxSlider *slSoftbodyWindStrength; mxSlider *slSoftbodyGravity; mxSlider *slSoftbodyVelocityDamping; mxSlider *slSoftbodySurfaceStretch; mxSlider *slSoftbodyThreadStretch; mxSlider *slPhysicsConMin; mxLabel *lPhysicsConMin; mxCheckBox *cbLinked; // links min/max sliders mxSlider *slPhysicsConMax; mxLabel *lPhysicsConMax; mxSlider *slPhysicsConTest; mxLineEdit *leMass; mxSlider *slPhysicsParamMassBias; mxLabel *lPhysicsParamMassBias; mxSlider *slPhysicsParamFriction; mxLabel *lPhysicsParamFriction; mxSlider *slPhysicsParamElasticity; mxLabel *lPhysicsParamElasticity; mxSlider *slPhysicsParamInertia; mxLabel *lPhysicsParamInertia; mxSlider *slPhysicsParamDamping; mxLabel *lPhysicsParamDamping; mxSlider *slPhysicsParamRotDamping; mxLabel *lPhysicsParamRotDamping; mxLabel *lPhysicsMaterial; mxChoice *cIKChain; mxChoice *cIKType; mxLabel *lIKTouch; mxChoice *cIKTouch; mxLabel *lIKAttachment; mxLineEdit *leIKAttachment; mxCheckBox *cbIKRangeToggle; mxLineEdit2 *leIKRangeStart; mxLineEdit2 *leIKRangePeak; mxLineEdit2 *leIKRangeTail; mxLineEdit2 *leIKRangeEnd; mxCheckBox *cbIKContactToggle; mxLineEdit2 *leIKContactFrame; mxChoice *cIKUsing; mxLineEdit2 *leIKQCString; mxLineEdit2 *leEventSoundFrame; mxListBox *lbEventSoundName; mxLineEdit2 *leEventQCString; mxListBox *lbEventHistory; mxLabel *lEventSequence; float m_lastEventCycle; CBoneControlWindow* m_pBoneWindow; CAttachmentsWindow* m_pAttachmentsWindow; mxListBox *cMessageList; mxListBox *cShaderUsed; mxButton *m_bRandomizeWeaponModuleSlots; mxButton *m_bExploreToMaterial; int m_iSavedSequences[MAX_SEQUENCES]; float m_flSavedWeights[MAX_SEQUENCES]; mxListBox *cMaterialList; mxListBox *cMaterialParamList; mxLineEdit2 *leMaterialParamText; mxButton *bMaterialParamColor; mxCheckBox *cbMaterialParamMultiEdit; #ifdef MATERIAL_SCRIPT_SAVE_FEATURE mxButton *bMaterialParamSave; mxLineEdit2 *leMaterialParamSavePath; mxCheckBox *cbMaterialParamSaveRun; mxLineEdit2 *leMaterialParamSaveRun; #endif mxButton *bMaterialParamLoad; mxButton *bMaterialParamCopyToClipboard; mxSlider *slMaterialParamMatrixSliderScaleX; mxSlider *slMaterialParamMatrixSliderScaleY; mxSlider *slMaterialParamMatrixSliderRotation; mxSlider *slMaterialParamMatrixSliderTranslateX; mxSlider *slMaterialParamMatrixSliderTranslateY; mxSlider *slMaterialParamFloat; mxLabel *lblMatrixScaleX; mxLabel *lblMatrixScaleY; mxLabel *lblMatrixRotation; mxLabel *lblMatrixTranslateX; mxLabel *lblMatrixTranslateY; mxListBox *cSubmodelList; mxButton *bSubmodelAdd; mxButton *bSubmodelAddSteam; mxButton *bSubmodelRemoveAll; mxButton *bSubmodelRemoveSelected; mxChoice *cSubmodelAttachTo; mxChoice *cSubmodelLocalAttachOrigin; mxListBox *cCompileRecentQCpaths; mxLabel *lblFullQCPath; mxButton *bCompileQCRemoveFromList; mxButton *bCompileQCCompile; mxButton *bCompileQCLoadModel; mxButton *bCompileQCShowCompileOutput; mxButton *bCompileQCBrowseToQC; mxButton *bCompileQCWhenSelected; bool bCompileSelectedToggle; mxLabel *lblCompileWarningOrError; mxListBox *cCompileQCOutput; int nCompileLastUpdateTick; public: // CREATORS ControlPanel( mxWindow *parent ); virtual ~ControlPanel (); virtual void OnDelete(); // MANIPULATORS int handleEvent( mxEvent *event ); int handlePhysicsEvent( mxEvent *event ); int handleSoftbodyEvent( mxEvent *event ); void UpdateConstraintSliders( int clamp ); void setupPhysics( void ); void setupPhysicsBone( int boneIndex ); void setupPhysicsAxis( int boneIndex, int axis ); int getPhysicsAxis( void ); void setPhysicsAxis( int axisIndex ); int getSoftbodyAxis( void ); void setSoftbodyAxis( int axisIndex ); void writePhysicsData( void ); void handlePhysicsKey( mxEvent *event ); // void readPhysicsMaterials( mxChoice *pList ); void dumpModelInfo (); LoadModelResult_t loadModel( const char *filename ); LoadModelResult_t loadModel( const char *filename, int slot ); void OnLoadModel( void ); void resetControlPanel( void ); void setRenderMode( int mode ); void setShowGround( bool b ); void setShowMovement( bool b ); void setShowBackground( bool b ); void setShowNormals( bool b ); void setShowTangentFrame( bool b ); void setOverlayWireframe( bool b ); void setDisplacementMapping( bool b ); void setShowShadow( bool b ); void setShowHitBoxes( bool b ); void setShowBones( bool b ); void setShowAttachments( bool b ); void setHighlightBone( int index ); void setLOD( int index, bool setLODchoice, bool force ); void setAutoLOD( bool b ); void setSoftwareSkin( bool b ); void setOverbright( bool b ); void setLODMetric( float metric ); void setPolycount( int polycount ); void setTransparent( bool isTransparent ); void updatePoseParameters( void ); void setFOV( float fov ); void setPlaySounds( bool b ); void setShowOriginAxis( bool b ); void setOriginAxisLength( float originAxisLength ); void updateSequenceSizes( int tabWidth ); void initSequenceChoices( int iOnlyInitSlot = -1 ); void setSequence( int nSequence ); void showActivityModifiers( int sequence ); void GetSequenceFilter( int sequenceSlot, char *pszFilterBuf, int iBufSize ); void updateGroundSpeed( void ); void setOverlaySequence( int num, int nSequence, float weight ); void updateTransitionAmount(); void startBlending( void ); void setSpeedScale ( float scale ); void updateSpeedScale( void ); void setBlend( int index, float value ); int getFrameSelection( void ); void setFrame( float frame ); void updateFrameSelection( void ); void updateFrameSlider( void ); void UpdateEventHistory( void ); void initBodypartChoices(); void setBodypart( int index ); void setSubmodel( int index ); void initBoneControllers(); void setBoneController( int index ); void setBoneControllerValue (int index, float value); void initSkinChoices(); void initMaterialChoices(); void setModelInfo(); void initPhysicsBones(); void initIncludedModels(); void initLODs(); void centerView(); void UpdateMaterialList (); void centerVerts(); void viewmodelView(); void cs_gunsidemodelView(); void dotaView(); void fullscreen(); void setMatSysWindow( MatSysWindow *window ) { d_MatSysWindow = window; } void ConvertFlexData(); void MapExtraFlexes( int nSlot ); void initFlexes(); int GetCurrentHitboxSet( void ); void BuildIKRuleQCString(); void UpdateIKRuleWindow(); void BuildEventQCString(); void CreateSortedSequenceList( CStudioHdr* hdr, int *pSequence ); void SetFrameSlider( float flFrame ); int GetSequenceForSelection( int sequenceSlot, int selection ); int SetSequenceForSelection( int sequenceSlot, int selection, int sequence ); int GetSelectionForSequence( int sequenceSlot, int sequence ); int SetSelectionForSequence( int sequenceSlot, int sequence, int selection ); void SaveSelectedSequences( void ); void RestoreSelectedSequences( void ); void UpdateMaterialVars( void ); void setCameraOrigin( float flX, float flY, float flZ ); void setCameraAngles( float flX, float flY, float flZ ); void setLightAngles( float flX, float flY, float flZ ); void setMaterialVar( const char *p_szMatParameterName, const char *p_szMatParameterValue ); void UpdateSubmodelWindow( void ); void UpdateSubmodelSelection( void ); void redrawMatSysWin( void ); public: // Sets up the main tabs void SetupRenderWindow( mxTab* pTab ); void SetupSequenceWindow( mxTab* pTab ); void SetupBoneControlWindow( mxTab* pTab ); void SetupBodyWindow( mxTab* pTab ); void SetupFlexWindow( mxTab* pTab ); void SetupPhysicsWindow( mxTab* pTab ); void SetupSoftbodyWindow( mxTab* pTab ); void SetupAttachmentsWindow( mxTab *pTab ); void SetupIKRuleWindow( mxTab *pTab ); void SetupEventWindow( mxTab *pTab ); void SetupMatVarWindow( mxTab *pTab ); void SetupSubmodelWindow( mxTab *pTab ); void SetupCompileWindow( mxTab *pTab ); bool m_bVMTInfoLoaded; void AddQCRecordPath( const char* szPath, bool bCompileWhenLoaded = false ); void UpdateQCPathPanel( bool bUpdateList = true, int nForceSelection = -1 ); void CompileTimerUpdate( void ); void CompileSelectedIndex( void ); void UpdateBoneWeightInspect( void ); }; extern ControlPanel *g_ControlPanel; #endif // INCLUDED_CONTROLPANEL