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.
156 lines
3.7 KiB
156 lines
3.7 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
//=============================================================================
|
||
|
|
||
|
#ifndef QCGENERATOR_H
|
||
|
#define QCGENERATOR_H
|
||
|
#ifdef _WIN32
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#include "vgui_controls/EditablePanel.h"
|
||
|
#include "vgui_controls/Frame.h"
|
||
|
#include "vgui_controls/Button.h"
|
||
|
#include "tier1/utlstring.h"
|
||
|
#include "vgui_controls/TextEntry.h"
|
||
|
|
||
|
class CQCGenerator;
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Forward declarations
|
||
|
//-----------------------------------------------------------------------------
|
||
|
namespace vgui
|
||
|
{
|
||
|
class Panel;
|
||
|
}
|
||
|
|
||
|
class CBrowseButton : public vgui::Button
|
||
|
{
|
||
|
DECLARE_CLASS_SIMPLE( CBrowseButton, vgui::Button );
|
||
|
|
||
|
public:
|
||
|
CBrowseButton( vgui::Panel *pParent );
|
||
|
~CBrowseButton();
|
||
|
void InitBrowseInfo( int x, int y, const char *pszName, const char *pszDir, const char *pszFilter, const char *pszField );
|
||
|
|
||
|
private:
|
||
|
char *pszStartingDirectory;
|
||
|
char *pszFileFilter;
|
||
|
char *pszTargetField;
|
||
|
|
||
|
char **GetStartingDirectory(){ return &pszStartingDirectory; }
|
||
|
char **GetFileFilter(){ return &pszFileFilter; }
|
||
|
char **GetTargetField(){ return &pszTargetField; }
|
||
|
void SetCharVar( char **pVar, const char *pszNewText );
|
||
|
void SetActionMessage();
|
||
|
};
|
||
|
|
||
|
struct LODInfo
|
||
|
{
|
||
|
char pszFilename[MAX_PATH];
|
||
|
int iLOD;
|
||
|
};
|
||
|
|
||
|
struct QCInfo
|
||
|
{
|
||
|
CQCGenerator *pQCGenerator;
|
||
|
|
||
|
char pszSMDPath[MAX_PATH];
|
||
|
char pszCollisionPath[MAX_PATH];
|
||
|
char pszSurfaceProperty[MAX_PATH];
|
||
|
char pszMaterialPath[MAX_PATH];
|
||
|
char pszSceneName[MAX_PATH];
|
||
|
|
||
|
bool bStaticProp;
|
||
|
bool bMostlyOpaque;
|
||
|
bool bDisableCollision;
|
||
|
bool bReferenceAsPhys;
|
||
|
bool bConcave;
|
||
|
bool bAutomass;
|
||
|
bool bNoAnimation;
|
||
|
|
||
|
CUtlVector<LODInfo> LODs;
|
||
|
|
||
|
float fScale;
|
||
|
float fMass;
|
||
|
void Init( CQCGenerator *pPanel )
|
||
|
{
|
||
|
pQCGenerator = pPanel;
|
||
|
|
||
|
V_strcpy_safe( pszSMDPath, "" );
|
||
|
V_strcpy_safe( pszCollisionPath, "" );
|
||
|
V_strcpy_safe( pszSurfaceProperty, "default" );
|
||
|
bStaticProp = false;
|
||
|
bMostlyOpaque = false;
|
||
|
bDisableCollision = false;
|
||
|
bReferenceAsPhys = false;
|
||
|
bConcave = false;
|
||
|
bAutomass = false;
|
||
|
bNoAnimation = true;
|
||
|
|
||
|
fScale = 1.0;
|
||
|
fMass = 10.0;
|
||
|
}
|
||
|
void SyncToControls();
|
||
|
void SyncFromControls();
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Base class for generating QC files
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class CQCGenerator : public vgui::EditablePanel
|
||
|
{
|
||
|
DECLARE_CLASS_SIMPLE( CQCGenerator, vgui::EditablePanel );
|
||
|
|
||
|
public:
|
||
|
CQCGenerator( vgui::Panel *pParent, const char *pszPath, const char *pszScene );
|
||
|
~CQCGenerator();
|
||
|
|
||
|
// overridden frame functions
|
||
|
// virtual void Activate();
|
||
|
|
||
|
virtual void OnCommand( const char *command );
|
||
|
|
||
|
// Purpose:
|
||
|
// virtual void OnKeyCodeTyped( vgui::KeyCode code );
|
||
|
|
||
|
MESSAGE_FUNC( OnNewLODText, "TextNewLine" );
|
||
|
MESSAGE_FUNC_PARAMS( OnBrowse, "browse", data );
|
||
|
MESSAGE_FUNC_PARAMS( OnFileSelected, "FileSelected", data );
|
||
|
MESSAGE_FUNC_PARAMS( OnDirectorySelected, "DirectorySelected", data );
|
||
|
|
||
|
bool GenerateQCFile();
|
||
|
// void BrowseDirectory( KeyValues *data );
|
||
|
void BrowseFile( KeyValues *data );
|
||
|
|
||
|
void DeleteLOD( );
|
||
|
void EditLOD();
|
||
|
virtual void OnKeyCodeTyped( vgui::KeyCode code);
|
||
|
void InitializeSMDPaths( const char *pszPath, const char *pszScene );
|
||
|
|
||
|
protected:
|
||
|
// Creates standard controls. Allows the derived class to
|
||
|
// add these controls to various splitter windows
|
||
|
void CreateStandardControls( vgui::Panel *pParent );
|
||
|
|
||
|
private:
|
||
|
|
||
|
CBrowseButton *m_pCollisionBrowseButton;
|
||
|
char m_szTargetField[MAX_PATH];
|
||
|
vgui::ListPanel *m_pLODPanel;
|
||
|
|
||
|
vgui::TextEntry *m_pLODEdit;
|
||
|
|
||
|
int m_nSelectedSequence;
|
||
|
int m_nSelectedColumn;
|
||
|
|
||
|
QCInfo m_QCInfo_t;
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#endif // QCGENERATOR_H
|