#include "baseentity.h" #include "tier0/platform.h" #include "tier1/utlstring.h" #include CBaseEntity::CBaseEntity() { glm_mat3_identity(m_matrix); glm_vec3_zero(m_position); glm_vec3_zero(m_scale); }; void CBaseEntity::ReadParameter( const char *szName, const char *szValue ) { CUtlString name = szName; if (name == "origin") V_sscanf(szValue, "%f %f %f", &m_position[0], &m_position[1], &m_position[2]); } void CBaseEntity::SetPosition( vec3 position ) { V_memcpy(m_position, position, sizeof(vec3)); } void CBaseEntity::SetRotationEuler( vec3 euler ) { } void CBaseEntity::SetRotationQuat( vec4 quaternion ) { } void CBaseEntity::SetRotationMatrix( mat3 matrix ) { V_memcpy(m_matrix, matrix, sizeof(mat3)); } void CBaseEntity::SetScale( vec3 scale ) { V_memcpy(m_scale, scale, sizeof(vec3)); } class CEntityManager: public IEntityManager { public: virtual void Init() override {} virtual void Frame() override {} virtual void Deinit() override {} }; DECLARE_ENGINE_INTERFACE(EntityManager, CEntityManager); CEntityRegistryObject::CEntityRegistryObject(const char *szName, const char *szClass, EntityRegistryFn pfn) : m_szName(szName), m_szClass(szClass), m_pfn(pfn), m_pClientfn(0) { for (auto &entity: EntityManager()->m_RegisteredEntities) { if (!V_strcmp(entity->m_szClass, szClass)) { entity->m_szName = szName; entity->m_pfn = pfn; return; } } EntityManager()->m_RegisteredEntities.AppendTail(this); }; C_EntityRegistry::C_EntityRegistry( const char *szName, ClientEntityRegistryFn pfn ) { for (auto &entity: EntityManager()->m_RegisteredEntities) { if (!V_strcmp(entity->m_szClass, szName)) { entity->m_pClientfn = pfn; return; } } CEntityRegistryObject *pObject = new CEntityRegistryObject(0, szName, 0); pObject->m_pClientfn = pfn; }