initial
This commit is contained in:
223
tools/pet/pettool.h
Normal file
223
tools/pet/pettool.h
Normal file
@@ -0,0 +1,223 @@
|
||||
//====== Copyright <20> 1996-2005, Valve Corporation, All rights reserved. =======
|
||||
//
|
||||
// Purpose: P.E.T. (Particle Editing Tool); main UI smarts class
|
||||
//
|
||||
//=============================================================================
|
||||
|
||||
#ifndef PETTOOL_H
|
||||
#define PETTOOL_H
|
||||
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "tier0/platform.h"
|
||||
#include "toolutils/basetoolsystem.h"
|
||||
#include "toolutils/recentfilelist.h"
|
||||
#include "toolutils/toolmenubar.h"
|
||||
#include "toolutils/toolswitchmenubutton.h"
|
||||
#include "toolutils/tooleditmenubutton.h"
|
||||
#include "toolutils/toolfilemenubutton.h"
|
||||
#include "toolutils/toolmenubutton.h"
|
||||
#include "datamodel/dmelement.h"
|
||||
#include "datamodel/dmehandle.h"
|
||||
#include "toolframework/ienginetool.h"
|
||||
#include "toolutils/enginetools_int.h"
|
||||
#include "toolutils/savewindowpositions.h"
|
||||
#include "toolutils/toolwindowfactory.h"
|
||||
#include "movieobjects/dmeparticlesystemdefinition.h"
|
||||
#include "particles/particles.h"
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Forward declarations
|
||||
//-----------------------------------------------------------------------------
|
||||
class CDmElement;
|
||||
class CPetDoc;
|
||||
class CParticleSystemPropertiesContainer;
|
||||
class CParticleSystemDefinitionBrowser;
|
||||
class CParticleSystemPreviewPanel;
|
||||
class CSheetEditorPanel;
|
||||
class CDmeParticleSystemDefinition;
|
||||
enum ParticleFunctionType_t;
|
||||
|
||||
namespace vgui
|
||||
{
|
||||
class Panel;
|
||||
}
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
NOTIFY_FLAG_PARTICLESYS_ADDED_OR_REMOVED = (1<<NOTIFY_FLAG_FIRST_APPLICATION_BIT)
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Allows the doc to call back into the CommEdit editor tool
|
||||
//-----------------------------------------------------------------------------
|
||||
abstract_class IPetDocCallback
|
||||
{
|
||||
public:
|
||||
// Called by the doc when the data changes
|
||||
virtual void OnDocChanged( const char *pReason, int nNotifySource, int nNotifyFlags ) = 0;
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Global methods of the commedit tool
|
||||
//-----------------------------------------------------------------------------
|
||||
abstract_class IPetTool
|
||||
{
|
||||
public:
|
||||
// Gets at the rool panel (for modal dialogs)
|
||||
virtual vgui::Panel *GetRootPanel() = 0;
|
||||
|
||||
// Gets the registry name (for saving settings)
|
||||
virtual const char *GetRegistryName() = 0;
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Implementation of the CommEdit tool
|
||||
//-----------------------------------------------------------------------------
|
||||
class CPetTool : public CBaseToolSystem, public IFileMenuCallbacks, public IPetDocCallback, public IPetTool
|
||||
{
|
||||
DECLARE_CLASS_SIMPLE( CPetTool, CBaseToolSystem );
|
||||
|
||||
public:
|
||||
CPetTool();
|
||||
|
||||
// Inherited from IToolSystem
|
||||
virtual const char *GetToolName() { return "Particle Editor"; }
|
||||
virtual bool Init( );
|
||||
virtual void Shutdown();
|
||||
virtual bool CanQuit( const char *pExitMsg );
|
||||
virtual void OnToolActivate();
|
||||
virtual void OnToolDeactivate();
|
||||
virtual void Think( bool finalTick );
|
||||
|
||||
// Inherited from IFileMenuCallbacks
|
||||
virtual int GetFileMenuItemsEnabled( );
|
||||
virtual void AddRecentFilesToMenu( vgui::Menu *menu );
|
||||
virtual bool GetPerforceFileName( char *pFileName, int nMaxLen );
|
||||
|
||||
// Inherited from IPetDocCallback
|
||||
virtual void OnDocChanged( const char *pReason, int nNotifySource, int nNotifyFlags );
|
||||
virtual vgui::Panel *GetRootPanel() { return this; }
|
||||
|
||||
// Inherited from CBaseToolSystem
|
||||
virtual vgui::HScheme GetToolScheme();
|
||||
virtual vgui::Menu *CreateActionMenu( vgui::Panel *pParent );
|
||||
virtual void OnCommand( const char *cmd );
|
||||
virtual const char *GetRegistryName() { return "PetTool"; }
|
||||
virtual const char *GetBindingsContextFile() { return "cfg/Pet.kb"; }
|
||||
virtual vgui::MenuBar *CreateMenuBar( CBaseToolSystem *pParent );
|
||||
|
||||
MESSAGE_FUNC( Save, "OnSave" );
|
||||
void SaveAndTest();
|
||||
|
||||
void PreOperatorsPaste();
|
||||
|
||||
public:
|
||||
MESSAGE_FUNC( OnRestartLevel, "RestartLevel" );
|
||||
MESSAGE_FUNC( OnNew, "OnNew" );
|
||||
MESSAGE_FUNC( OnOpen, "OnOpen" );
|
||||
MESSAGE_FUNC( OnSaveAs, "OnSaveAs" );
|
||||
MESSAGE_FUNC( OnClose, "OnClose" );
|
||||
MESSAGE_FUNC( OnCloseNoSave, "OnCloseNoSave" );
|
||||
MESSAGE_FUNC( OnMarkNotDirty, "OnMarkNotDirty" );
|
||||
MESSAGE_FUNC( OnExit, "OnExit" );
|
||||
MESSAGE_FUNC( OnCopySystems, "OnCopySystems" );
|
||||
MESSAGE_FUNC( OnCopyFunctions, "OnCopyFunctions" );
|
||||
MESSAGE_FUNC( OnPaste, "OnPaste" );
|
||||
MESSAGE_FUNC( OnRequestPaste, "RequestPaste" );
|
||||
|
||||
// Commands related to the edit menu
|
||||
void OnDescribeUndo();
|
||||
|
||||
// Methods related to the view menu
|
||||
MESSAGE_FUNC( OnToggleProperties, "OnToggleProperties" );
|
||||
MESSAGE_FUNC( OnToggleParticleSystemBrowser, "OnToggleParticleSystemBrowser" );
|
||||
MESSAGE_FUNC( OnToggleParticlePreview, "OnToggleParticlePreview" );
|
||||
// MESSAGE_FUNC( OnToggleSheetEditor, "OnToggleSheetEditor" );
|
||||
MESSAGE_FUNC( OnDefaultLayout, "OnDefaultLayout" );
|
||||
|
||||
// Keybindings
|
||||
KEYBINDING_FUNC( undo, KEY_Z, vgui::MODIFIER_CONTROL, OnUndo, "#undo_help", 0 );
|
||||
KEYBINDING_FUNC( redo, KEY_Z, vgui::MODIFIER_CONTROL | vgui::MODIFIER_SHIFT, OnRedo, "#redo_help", 0 );
|
||||
KEYBINDING_FUNC_NODECLARE( edit_paste, KEY_V, vgui::MODIFIER_CONTROL, OnPaste, "#edit_paste_help", 0 );
|
||||
|
||||
void PerformNew();
|
||||
void OpenFileFromHistory( int slot );
|
||||
void OpenSpecificFile( const char *pFileName );
|
||||
virtual void SetupFileOpenDialog( vgui::FileOpenDialog *pDialog, bool bOpenFile, const char *pFileFormat, KeyValues *pContextKeyValues );
|
||||
virtual bool OnReadFileFromDisk( const char *pFileName, const char *pFileFormat, KeyValues *pContextKeyValues );
|
||||
virtual bool OnWriteFileToDisk( const char *pFileName, const char *pFileFormat, KeyValues *pContextKeyValues );
|
||||
virtual void OnFileOperationCompleted( const char *pFileType, bool bWroteFile, vgui::FileOpenStateMachine::CompletionState_t state, KeyValues *pContextKeyValues );
|
||||
|
||||
// returns the document
|
||||
CPetDoc *GetDocument();
|
||||
|
||||
// Gets at tool windows
|
||||
CParticleSystemPropertiesContainer *GetProperties();
|
||||
CParticleSystemDefinitionBrowser *GetParticleSystemDefinitionBrowser();
|
||||
CParticleSystemPreviewPanel *GetParticlePreview();
|
||||
// CSheetEditorPanel *GetSheetEditor();
|
||||
|
||||
void SetCurrentParticleSystem( CDmeParticleSystemDefinition *pParticleSystem, bool bForceBrowserSelection = true );
|
||||
CDmeParticleSystemDefinition* GetCurrentParticleSystem( void );
|
||||
|
||||
private:
|
||||
// Creates a new document
|
||||
void NewDocument( );
|
||||
|
||||
// Loads up a new document
|
||||
bool LoadDocument( const char *pDocName );
|
||||
|
||||
// Updates the menu bar based on the current file
|
||||
void UpdateMenuBar( );
|
||||
|
||||
virtual const char *GetLogoTextureName();
|
||||
|
||||
// Creates, destroys tools
|
||||
void CreateTools( CPetDoc *doc );
|
||||
void DestroyTools();
|
||||
|
||||
// Initializes the tools
|
||||
void InitTools();
|
||||
|
||||
// Shows, toggles tool windows
|
||||
void ToggleToolWindow( Panel *tool, char const *toolName );
|
||||
void ShowToolWindow( Panel *tool, char const *toolName, bool visible );
|
||||
|
||||
// Kills all tool windows
|
||||
void DestroyToolContainers();
|
||||
|
||||
private:
|
||||
// Document
|
||||
CPetDoc *m_pDoc;
|
||||
|
||||
// The menu bar
|
||||
CToolFileMenuBar *m_pMenuBar;
|
||||
|
||||
// Element properties for editing material
|
||||
vgui::DHANDLE< CParticleSystemPropertiesContainer > m_hProperties;
|
||||
|
||||
// The entity report
|
||||
vgui::DHANDLE< CParticleSystemDefinitionBrowser > m_hParticleSystemDefinitionBrowser;
|
||||
|
||||
// Particle preview window
|
||||
vgui::DHANDLE< CParticleSystemPreviewPanel > m_hParticlePreview;
|
||||
|
||||
// Sheet editor
|
||||
// vgui::DHANDLE< CSheetEditorPanel > m_hSheetEditorPanel;
|
||||
|
||||
// The currently viewed entity
|
||||
CDmeHandle< CDmeParticleSystemDefinition > m_hCurrentParticleSystem;
|
||||
|
||||
// Separate undo context for the act busy tool
|
||||
CToolWindowFactory< ToolWindow > m_ToolWindowFactory;
|
||||
};
|
||||
|
||||
extern CPetTool *g_pPetTool;
|
||||
|
||||
#endif // PETTOOL_H
|
||||
Reference in New Issue
Block a user