148 lines
3.9 KiB
C++
148 lines
3.9 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
//=============================================================================
|
|
|
|
#ifndef QCGENERATOR_H
|
|
#define QCGENERATOR_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "tier1/utlstring.h"
|
|
#include "vgui_controls/Button.h"
|
|
#include "vgui_controls/EditablePanel.h"
|
|
#include "vgui_controls/Frame.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
|