Skip to content
Snippets Groups Projects
Select Git revision
1 result Searching

mital.h

Blame
  • 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)