Select Git revision
BaseEntity.cpp 20.72 KiB
/***********************************************************
Copyright © Vitaliy Buturlin, Evgeny Danilovich, 2017, 2018
See the license in LICENSE
***********************************************************/
#include <stdio.h>
#include "BaseEntity.h"
#include "EntityManager.h"
/*! \skydocent base_entity
Базовый объект. От него наследуются все остальные объекты
*/
BEGIN_PROPTABLE_NOBASE(CBaseEntity)
//! Имя объекта
DEFINE_FIELD_STRING(m_szName, 0, "name", "Name", EDITOR_TEXTFIELD)
//! Позиция в мире
DEFINE_FIELD_VECTORFN(m_vPosition, 0, "origin", "Origin", setPos, EDITOR_TEXTFIELD)
//! Ориентация в мире, углы эйлера или кватернион
DEFINE_FIELD_ANGLES(m_vOrientation, 0, "rotation", "Rotation", EDITOR_TEXTFIELD)
//! Родительский объект в иерархии движения
DEFINE_FIELD_PARENT(m_pParent, 0, "parent", "Parent entity", EDITOR_TEXTFIELD)
//! Флаги объекта
DEFINE_FIELD_FLAGS(m_iFlags, 0, "flags", "Flags", EDITOR_FLAGS)
//! Объект-владелец
DEFINE_FIELD_ENTITY(m_pOwner, PDFF_NOEXPORT | PDFF_NOEDIT, "owner", "", EDITOR_NONE)
//! Здоровье
DEFINE_FIELD_FLOAT(m_fHealth, PDFF_NOEXPORT | PDFF_NOEDIT, "health", "", EDITOR_NONE)
//DEFINE_FIELD_STRING(m_szName, 0, "some opt", "Option", EDITOR_COMBOBOX)
// COMBO_OPTION("Option 1", "value 1")
// COMBO_OPTION("Option 2", "value 2")
// COMBO_OPTION("Option 3", "value 3")
//EDITOR_COMBO_END()
END_PROPTABLE()
REGISTER_ENTITY_NOLISTING(CBaseEntity, base_entity);
void CBaseEntity::setDefaults()
{
proptable_t * pt = getPropTable();
const char * estr = GetEmptyString();
while(pt)
{
for(int i = 0; i < pt->numFields; ++i)
{
if(pt->pData[i].type == PDF_STRING && !(pt->pData[i].flags & PDFF_INPUT))
{
this->*((const char * ThisClass::*)pt->pData[i].pField) = estr;
}
}
pt = pt->pBaseProptable;
}
}
CBaseEntity::CBaseEntity(CEntityManager * pWorld):
m_iId(0),
m_iFlags(0),
m_pMgr(pWorld),
m_szClassName(NULL),
m_szName(NULL),
m_pParent(NULL),
m_iParentAttachment(-1),
m_pOwner(NULL),
m_fHealth(100.0f)/*,
m_vDiscreteLinearVelocity(float3_t(0.0f, 0.0f, 0.0f))*/
, m_bSynced(false)