summaryrefslogtreecommitdiff
path: root/tools/vcdblock/dmevmfentity.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 /tools/vcdblock/dmevmfentity.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'tools/vcdblock/dmevmfentity.h')
-rw-r--r--tools/vcdblock/dmevmfentity.h131
1 files changed, 131 insertions, 0 deletions
diff --git a/tools/vcdblock/dmevmfentity.h b/tools/vcdblock/dmevmfentity.h
new file mode 100644
index 0000000..5400610
--- /dev/null
+++ b/tools/vcdblock/dmevmfentity.h
@@ -0,0 +1,131 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: Represents an entity in a VMF
+//
+//=============================================================================
+
+#ifndef DMEVMFENTITY_H
+#define DMEVMFENTITY_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "toolutils/dmemdlrenderable.h"
+#include "datamodel/dmelement.h"
+#include "toolframework/itoolentity.h"
+#include "materialsystem/MaterialSystemUtil.h"
+
+
+//-----------------------------------------------------------------------------
+// Represents an editable entity; draws its helpers
+//-----------------------------------------------------------------------------
+class CDmeVMFEntity : public CDmeMdlRenderable<CDmElement>
+{
+ DEFINE_ELEMENT( CDmeVMFEntity, CDmeMdlRenderable<CDmElement> );
+
+public:
+ // Inherited from CDmElement
+ virtual void OnAttributeChanged( CDmAttribute *pAttribute );
+
+public:
+ // Inherited from DmeRenderable
+ virtual const Vector &GetRenderOrigin( void );
+ virtual const QAngle &GetRenderAngles( void );
+ virtual int DrawModel( int flags );
+ virtual bool IsTransparent( void );
+ virtual void GetRenderBounds( Vector& mins, Vector& maxs );
+
+public:
+ int GetEntityId() const;
+
+ // Returns the next available entity id
+ static int GetNextEntityId();
+ static void SetNextEntityId( int nEntityId );
+
+ const char *GetClassName() const;
+ const char *GetTargetName() const;
+
+ bool IsPlaceholder() const;
+
+ // Entity Key iteration
+ CDmAttribute *FirstEntityKey();
+ CDmAttribute *NextEntityKey( CDmAttribute *pEntityKey );
+
+ // Attach/detach from an engine entity with the same editor index
+ void AttachToEngineEntity( HTOOLHANDLE hToolHandle );
+
+ void SetRenderOrigin( const Vector &vecOrigin );
+ void SetRenderAngles( const QAngle &angles );
+
+ void MarkDirty( bool bDirty = true );
+ bool IsDirty( void ) { return m_bIsDirty; };
+
+ void MarkDeleted( bool bDeleted = true );
+ bool IsDeleted( void ) { return m_bIsDeleted; };
+
+ bool CopyFromServer( CBaseEntity *pServerEnt );
+ bool CopyFromServer( CBaseEntity *pServerEnt, const char *szField );
+ bool CopyFromServer( CBaseEntity *pServerEnt, const char *szSrcField, const char *szDstField );
+ bool CopyToServer( void );
+
+ bool IsSameOnServer( CBaseEntity *pServerEntity );
+ bool CreateOnServer( void );
+
+private:
+ bool IsEntityKey( CDmAttribute *pEntityKey );
+
+ // Draws the helper for the entity
+ void DrawSprite( IMaterial *pMaterial );
+ void DrawDragHelpers( IMaterial *pMaterial );
+ void DrawFloorTarget( IMaterial *pMaterial );
+
+ CDmaVar<Vector> m_vecLocalOrigin;
+ // CDmAttributeVar<QAngle> m_vecLocalAngles;
+ CDmaVar<Vector> m_vecLocalAngles; // something funky with the vmf importer, it asserts when it's a QAngle
+
+ CDmaString m_ClassName;
+ CDmaString m_TargetName;
+ CDmaVar<bool> m_bIsPlaceholder;
+
+ // The entity it's connected to in the engine
+ HTOOLHANDLE m_hEngineEntity;
+
+ CMaterialReference m_Wireframe;
+
+ CMaterialReference m_SelectedInfoTarget;
+ CMaterialReference m_InfoTargetSprite;
+
+ // pretty sure this entity is edited
+ bool m_bIsDirty;
+
+ // entity needs to be deleted
+ CDmaVar<bool> m_bIsDeleted;
+
+ // FIXME: This is a hack for info targets
+ bool m_bInfoTarget;
+
+ // Used to store the next unique entity id;
+ static int s_nNextEntityId;
+};
+
+
+//-----------------------------------------------------------------------------
+// Inline methods
+//-----------------------------------------------------------------------------
+inline const char *CDmeVMFEntity::GetClassName() const
+{
+ return m_ClassName;
+}
+
+inline const char *CDmeVMFEntity::GetTargetName() const
+{
+ return m_TargetName;
+}
+
+inline bool CDmeVMFEntity::IsPlaceholder() const
+{
+ return m_bIsPlaceholder;
+}
+
+
+#endif // DMEVMFENTITY_H