summaryrefslogtreecommitdiff
path: root/hammer/dispmanager.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /hammer/dispmanager.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'hammer/dispmanager.h')
-rw-r--r--hammer/dispmanager.h101
1 files changed, 101 insertions, 0 deletions
diff --git a/hammer/dispmanager.h b/hammer/dispmanager.h
new file mode 100644
index 0000000..07c997b
--- /dev/null
+++ b/hammer/dispmanager.h
@@ -0,0 +1,101 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $Workfile: $
+// $Date: $
+//
+//-----------------------------------------------------------------------------
+// $Log: $
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef DISPMANAGER_H
+#define DISPMANAGER_H
+#pragma once
+
+class CMapDisp;
+
+//=============================================================================
+//
+// Global Displacement Manager
+//
+typedef unsigned short EditDispHandle_t;
+enum
+{
+ EDITDISPHANDLE_INVALID = ( EditDispHandle_t )~0
+};
+
+class IEditDispMgr
+{
+public:
+
+ // creation/destruction
+ virtual EditDispHandle_t Create( void ) = 0;
+ virtual void Destroy( EditDispHandle_t handle ) = 0;
+
+ virtual CMapDisp *GetDisp( EditDispHandle_t handle ) = 0;
+};
+
+IEditDispMgr *EditDispMgr( void );
+
+
+//=============================================================================
+//
+// World Displacement Manager(s)
+//
+class IWorldEditDispMgr
+{
+public:
+
+ virtual ~IWorldEditDispMgr() {}
+
+ //
+ // World List
+ //
+ virtual int WorldCount( void ) = 0;
+ virtual CMapDisp *GetFromWorld( int iWorldList ) = 0;
+ virtual CMapDisp *GetFromWorld( EditDispHandle_t handle ) = 0;
+
+ virtual void AddToWorld( EditDispHandle_t handle ) = 0;
+ virtual void RemoveFromWorld( EditDispHandle_t handle ) = 0;
+
+ virtual void FindWorldNeighbors( EditDispHandle_t handle ) = 0;
+
+ //
+ // Selection List
+ //
+ virtual int SelectCount( void ) = 0;
+ virtual void SelectClear( void ) = 0;
+ virtual CMapDisp *GetFromSelect( int iSelectList ) = 0;
+
+ virtual void AddToSelect( EditDispHandle_t handle ) = 0;
+ virtual void RemoveFromSelect( EditDispHandle_t handle ) = 0;
+ virtual bool IsInSelect( EditDispHandle_t handle ) = 0;
+
+ virtual void CatmullClarkSubdivide( void ) = 0;
+
+ //
+ // Undo
+ //
+ virtual void PreUndo( const char *pszMarkName ) = 0;
+ virtual void Undo( EditDispHandle_t handle, bool bAddNeighbors ) = 0;
+ virtual void PostUndo( void ) = 0;
+
+ //
+ // Helpers.
+ //
+
+ // Return the # of points that these disps share (1=corner neighbors, 2=edge neighbors).
+ virtual int NumSharedPoints( CMapDisp *pDisp, CMapDisp *pNeighborDisp, int *edge1, int *edge2 ) = 0;
+};
+
+//
+// Global functions.
+//
+IWorldEditDispMgr *CreateWorldEditDispMgr( void );
+void DestroyWorldEditDispMgr( IWorldEditDispMgr **pDispMgr );
+
+
+#endif // DISPMANAGER_H