|
|
//========= Copyright � 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//
//=============================================================================//
//
// Half-Life Model Viewer (c) 1999 by Mete Ciragan
//
// file: ViewerSettings.h
// last modified: May 29 1999, Mete Ciragan
// copyright: The 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: [email protected]
// web: http://www.swissquake.ch/chumbalum-soft/
//
#ifndef INCLUDED_VIEWERSETTINGS
#define INCLUDED_VIEWERSETTINGS
#include "mathlib/vector.h"
#include "rubikon/param_types.h"
#include "utlvector.h"
enum // render modes
{ RM_WIREFRAME = 0, // RM_FLATSHADED,
RM_SMOOTHSHADED, RM_TEXTURED, RM_BONEWEIGHTS, RM_SHOWBADVERTEXDATA, RM_TEXCOORDS, RM_SHOWCOLOCATED, };
enum //draw model pass modes. Useful for rendering hitboxes on top of submodels, for example
{ PASS_DEFAULT = 0, // draw geometry, hitboxes, bones, etc. Any selected options
PASS_MODELONLY, // draw only geometry, skip rendering hitboxes and so on
PASS_EXTRASONLY // draw only extras
};
#define HLMV_MAX_MERGED_MODELS 12
enum HitboxEditMode { HITBOX_EDIT_ROTATION = 0, HITBOX_EDIT_BBMIN, HITBOX_EDIT_BBMAX, };
enum qccompilestatus { QCSTATUS_UNKNOWN = 0, QCSTATUS_NOLOGFILE, QCSTATUS_COMPILING, QCSTATUS_ERROR, QCSTATUS_COMPLETE_WITH_WARNING, QCSTATUS_COMPLETE };
struct qcpathrecord_t { char szAbsPath[1024]; char szPrettyPath[1024]; char szLogFilePath[1024]; char szCWDPath[1024]; char szMostRecentWarningOrError[1024]; char szModelPath[1024]; qccompilestatus status;
void InitFromAbsPath( const char* szInputAbsPath ) { V_strcpy_safe( szAbsPath, szInputAbsPath ); V_FileBase( szInputAbsPath, szPrettyPath, sizeof(szPrettyPath) );
V_strcpy_safe( szLogFilePath, szInputAbsPath ); V_SetExtension( szLogFilePath, ".log", sizeof(szLogFilePath) );
V_strcpy_safe( szCWDPath, szInputAbsPath ); V_StripFilename( szCWDPath ); }
bool DoesAbsPathMatch( const char* szOther ) { return ( !V_strcmp( szAbsPath, szOther ) ); }
qcpathrecord_t() { szAbsPath[0] = '\0'; szPrettyPath[0] = '\0'; szLogFilePath[0] = '\0'; szCWDPath[0] = '\0'; szMostRecentWarningOrError[0] = '\0'; szModelPath[0] = '\0'; status = QCSTATUS_UNKNOWN; } };
#define MAX_NUM_QCPATH_RECORDS 64
extern CUtlVector< qcpathrecord_t > g_QCPathRecords;
struct ViewerSettings { char registrysubkey[ 64 ]; int application_mode; // 0 expression, 1 choreo
bool showHitBoxes; int showHitBoxSet; int showHitBoxNumber; bool showBones; bool showAttachments; bool showPhysicsModel; bool showPhysicsPreview; bool showSequenceBoxes; bool enableIK; bool enableTargetIK; bool showNormals; bool showTangentFrame; bool overlayWireframe; bool enableNormalMapping; bool enableDisplacementMapping; bool enableParallaxMapping; bool enableSpecular; bool showIllumPosition; bool playSounds;
// Current attachment we're editing. -1 if none.
int m_iEditAttachment; bool showLightingCenter; int highlightPhysicsBone; int highlightHitbox; int highlightBone; QAngle lightrot; // light rotation
float lColor[4]; // directional color
float aColor[4]; // ambient color
// external
// model
float fov; // horizontal field of view
// render
int renderMode; bool showBackground; bool showGround; bool showTexture; bool showMovement; bool showShadow; bool showOrbitCircle; bool allowOrbitYaw; int texture; int skin; int materialIndex; bool showOriginAxis; float originAxisLength;
// animation
float speedScale; bool blendSequenceChanges; bool animateWeapons;
// softbodies
bool simulateSoftbodies;
// bodyparts and bonecontrollers
//int submodels[32];
//float controllers[8];
// fullscreen
int xpos, ypos; int width, height; bool cds;
// colors
float bgColor[4]; // background color
float gColor[4];
// misc
bool pause; bool rotating; bool mousedown;
HitboxEditMode hitboxEditMode;
bool showBoneNames;
// only used for fullscreen mode
// char modelFile[256];
//char backgroundTexFile[256];
//char groundTexFile[256];
int lod; bool autoLOD; bool softwareSkin; bool overbright;
int thumbnailsize; int thumbnailsizeanim;
int speechapiindex; int cclanguageid; // Close captioning language id (see sentence.h enum)
bool showHidden; bool showActivities; bool showSequenceIndices; bool sortSequences;
bool dotaMode;
bool faceposerToolsDriveMouth;
char mergeModelFile[HLMV_MAX_MERGED_MODELS][256];
bool secondaryLights;
RnDebugDrawOptions_t softbodyDrawOptions;
ViewerSettings();
};
extern ViewerSettings g_viewerSettings; class StudioModel;
void InitViewerSettings ( const char *subkey ); bool LoadViewerSettings (const char *filename, StudioModel *pModel ); bool SaveViewerSettings (const char *filename, StudioModel *pModel ); bool LoadViewerRootSettings( void ); bool SaveViewerRootSettings( void );
bool SaveCompileQCPathSettings( void ); bool LoadCompileQCPathSettings( void );
// For saving/loading "global" settings
bool LoadViewerSettingsInt( char const *keyname, int *value ); bool SaveViewerSettingsInt ( const char *keyname, int value );
struct debug_vert_weight_t { int index; float flweight; }; extern int g_BoneWeightInspectVert; extern debug_vert_weight_t g_BoneWeightInspectResults[3];
#endif // INCLUDED_VIEWERSETTINGS
|