实体

实体 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;
};

On this page