mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-14 04:31:05 +00:00
1
This commit is contained in:
@@ -0,0 +1,480 @@
|
||||
//========= Copyright 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 <mxtk/mxWindow.h>
|
||||
#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_PARALLAXMAP 2030
|
||||
#define IDC_SHOWORIGINAXIS 2029
|
||||
#define IDC_ORIGINAXISLENGTH 2030
|
||||
|
||||
#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 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_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
|
||||
|
||||
// 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 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_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;
|
||||
|
||||
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 *cbParallaxMap;
|
||||
mxCheckBox *cbTangentFrame;
|
||||
mxCheckBox *cbOverlayWireframe;
|
||||
mxCheckBox *cbSpecular;
|
||||
mxCheckBox *cbRunIK;
|
||||
mxCheckBox *cbEnableHead;
|
||||
mxCheckBox *cbIllumPosition;
|
||||
mxCheckBox *cbPlaySounds;
|
||||
mxCheckBox *cbShowOriginAxis;
|
||||
mxSlider *leOriginAxisLength;
|
||||
|
||||
mxChoice *cLODChoice;
|
||||
mxCheckBox *cbAutoLOD;
|
||||
mxLineEdit *leLODSwitch;
|
||||
mxLabel *lLODMetric;
|
||||
mxChoice *cSequence[MAX_SEQUENCES];
|
||||
mxSlider *slSequence[MAX_SEQUENCES];
|
||||
int *iSelectionToSequence; // selection to sequence
|
||||
int *iSequenceToSelection; // 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;
|
||||
mxSlider *slController;
|
||||
mxChoice *cSkin;
|
||||
mxChoice *cMaterials;
|
||||
mxLabel *lModelInfo1, *lModelInfo2, *lModelInfo3, *lModelInfo4, *lModelInfo5;
|
||||
//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;
|
||||
mxRadioButton *rbConstraintAxis[3];
|
||||
mxSlider *slPhysicsFriction;
|
||||
mxLabel *lPhysicsFriction;
|
||||
|
||||
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;
|
||||
|
||||
CBoneControlWindow* m_pBoneWindow;
|
||||
CAttachmentsWindow* m_pAttachmentsWindow;
|
||||
mxListBox *cMessageList;
|
||||
mxListBox *cShaderUsed;
|
||||
|
||||
public:
|
||||
// CREATORS
|
||||
ControlPanel (mxWindow *parent);
|
||||
virtual ~ControlPanel ();
|
||||
|
||||
virtual void OnDelete();
|
||||
|
||||
// MANIPULATORS
|
||||
int handleEvent (mxEvent *event);
|
||||
|
||||
int handlePhysicsEvent( 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 );
|
||||
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 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 setModelInfo( int nVertCount, int nIndexCount, int nTriCount );
|
||||
void setTransparent( bool isTransparent );
|
||||
void updatePoseParameters( void );
|
||||
void setFOV( float fov );
|
||||
void setPlaySounds( bool b );
|
||||
void setShowOriginAxis( bool b );
|
||||
void setOriginAxisLength( float originAxisLength );
|
||||
|
||||
void initSequenceChoices();
|
||||
void setSequence( int index );
|
||||
void showActivityModifiers( int sequence );
|
||||
void updateGroundSpeed( void );
|
||||
void setOverlaySequence(int num, int index, 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 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 initLODs();
|
||||
|
||||
void centerView ();
|
||||
void UpdateMaterialList ();
|
||||
void viewmodelView();
|
||||
|
||||
void fullscreen ();
|
||||
|
||||
void setMatSysWindow (MatSysWindow *window) { d_MatSysWindow = window; }
|
||||
|
||||
void ConvertFlexData();
|
||||
void initFlexes ();
|
||||
void connectFlexes( CStudioHdr* hdr );
|
||||
|
||||
int GetCurrentHitboxSet( void );
|
||||
|
||||
void BuildIKRuleQCString();
|
||||
void UpdateIKRuleWindow();
|
||||
|
||||
void BuildEventQCString();
|
||||
|
||||
void CreateSortedSequenceList( CStudioHdr* hdr, int *pSequence );
|
||||
void SetFrameSlider( float flFrame );
|
||||
|
||||
void UnloadAllMergedModels();
|
||||
|
||||
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 SetupAttachmentsWindow( mxTab *pTab );
|
||||
void SetupIKRuleWindow( mxTab *pTab );
|
||||
void SetupEventWindow( mxTab *pTab );
|
||||
bool m_bVMTInfoLoaded;
|
||||
};
|
||||
|
||||
|
||||
extern ControlPanel *g_ControlPanel;
|
||||
|
||||
|
||||
|
||||
#endif // INCLUDED_CONTROLPANEL
|
||||
Reference in New Issue
Block a user