blob: 54006108ec78bcaae637438ede1b589d45d44a80 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
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
|