实体
实体 CEntity
模型、标志、传送与 RW 对象
CEntity.h · 继承 CPlaceable
Ped / Vehicle / Object 共同基类。删实体走正确 Destroy 路径,别乱 delete。
取模型与类型
m_nModelIndex / m_nType / m_nStatus
short m_nModelIndex;
eEntityType m_nType : 3;
eEntityStatus m_nStatus : 5;
unsigned char m_nAreaCode;可见与碰撞标志
bIsVisible / bUsesCollision / bIsStatic
bitfield,直接改要小心。
bool bIsVisible : 1;
bool bUsesCollision : 1;
bool bIsStatic : 1;
bool bDontStream : 1;
// 其余见 CEntity.h坐标与传送
GetPosition / Teleport
逻辑帧调用。
CVector GetPosition();
void Teleport(CVector destination, bool resetRotation = false);换模型
SetModelIndex / CreateRwObject
void SetModelIndex(unsigned int index);
void SetModelIndexNoCreate(unsigned int index);
void CreateRwObject();
void DeleteRwObject();进出世界
Add / Remove
与 CWorld::Add / Remove 相关,脚本实体生命周期要对。
void Add();
void Remove();RenderWare 对象
m_pRwObject / m_pRwClump / m_pRwAtomic
渲染钩子里判空。
union {
struct RwObject* m_pRwObject;
struct RpClump* m_pRwClump;
struct RpAtomic* m_pRwAtomic;
};