137 lines
2.4 KiB
C++
137 lines
2.4 KiB
C++
//================= Copyright kotofyt, All rights reserved ==================//
|
|
//
|
|
// Purpose:
|
|
//
|
|
//===========================================================================//
|
|
|
|
#include "baseentity.h"
|
|
#include "datamap.h"
|
|
#include "tier0/lib.h"
|
|
#include "cglm/cglm.h"
|
|
|
|
C_BaseEntity::~C_BaseEntity()
|
|
{
|
|
|
|
}
|
|
void C_BaseEntity::Precache()
|
|
{
|
|
|
|
}
|
|
|
|
void C_BaseEntity::Spawn()
|
|
{
|
|
Precache();
|
|
SetAbsOrigin({0, 0, 0});
|
|
SetAbsAngles(0, 0, 0);
|
|
SetScale(1);
|
|
}
|
|
|
|
void C_BaseEntity::SetAbsAngles( float fPitch, float fYaw, float fRoll )
|
|
{
|
|
versor q;
|
|
glm_euler_yzx_quat((vec3){fPitch, fYaw, fRoll}, q);
|
|
m_vRotation.x = q[0];
|
|
m_vRotation.y = q[1];
|
|
m_vRotation.z = q[2];
|
|
m_vRotation.w = q[3];
|
|
}
|
|
|
|
void C_BaseEntity::SetAbsOrigin( Vector origin )
|
|
{
|
|
m_vPosition = origin;
|
|
}
|
|
|
|
void C_BaseEntity::SetScale( float fScale )
|
|
{
|
|
m_vScale.x = fScale;
|
|
m_vScale.y = fScale;
|
|
m_vScale.z = fScale;
|
|
}
|
|
|
|
|
|
QAngle C_BaseEntity::GetAbsQAngles( void )
|
|
{
|
|
|
|
}
|
|
|
|
Quat C_BaseEntity::GetAbsAngles( void )
|
|
{
|
|
return m_vRotation;
|
|
}
|
|
|
|
Vector C_BaseEntity::GetAbsOrigin( void )
|
|
{
|
|
return m_vPosition;
|
|
}
|
|
|
|
float C_BaseEntity::GetScale( void )
|
|
{
|
|
return m_vScale.x;
|
|
}
|
|
|
|
void C_BaseEntity::SetThinkImpl( fnThink pfnThink )
|
|
{
|
|
m_pfnThink = pfnThink;
|
|
}
|
|
|
|
void C_BaseEntity::SetNextThink( float fThink )
|
|
{
|
|
|
|
}
|
|
typedescription_t *C_BaseEntity::FindDataByName( const char *szName )
|
|
{
|
|
datamap_t *pDataMap;
|
|
int i;
|
|
|
|
pDataMap = GetDataMap();
|
|
|
|
lookforname:
|
|
for ( i = 0; i < pDataMap->m_iNumFields; i++ )
|
|
{
|
|
if (!V_strcmp(pDataMap->m_pData[i].m_szFieldName, szName))
|
|
return &pDataMap->m_pData[i];
|
|
}
|
|
pDataMap = pDataMap->m_pBase;
|
|
|
|
if (pDataMap)
|
|
goto lookforname;
|
|
|
|
return NULL;
|
|
};
|
|
|
|
typedescription_t *C_BaseEntity::FindDataByMapName( const char *szName )
|
|
{
|
|
datamap_t *pDataMap;
|
|
int i;
|
|
|
|
pDataMap = GetDataMap();
|
|
|
|
lookforname:
|
|
for ( i = 0; i < pDataMap->m_iNumFields; i++ )
|
|
{
|
|
if (!V_strcmp(pDataMap->m_pData[i].m_szEditorName, szName))
|
|
return &pDataMap->m_pData[i];
|
|
}
|
|
pDataMap = pDataMap->m_pBase;
|
|
|
|
if (pDataMap)
|
|
goto lookforname;
|
|
|
|
return NULL;
|
|
};
|
|
|
|
|
|
BEGIN_DATADESC_NOBASE(C_BaseEntity)
|
|
DEFINE_KEYFIELD(m_vPosition, FIELD_FLOAT3, "origin")
|
|
DEFINE_KEYFIELD(m_vRotation, FIELD_QUATERNION, "angles")
|
|
DEFINE_KEYFIELD(m_vScale, FIELD_FLOAT3, "scales")
|
|
END_DATADESC()
|
|
|
|
IMPLEMENT_RECV_DT_NOBASE(C_BaseEntity)
|
|
NetPropFloat3(m_vPosition),
|
|
NetPropQuaternion(m_vRotation),
|
|
NetPropFloat3(m_vScale)
|
|
END_RECV_DT()
|
|
|
|
IMPLEMENT_EMPTY_SEND_DT_NOBASE(C_BaseEntity)
|