peds starting to work

This commit is contained in:
aap
2020-05-09 17:05:26 +02:00
parent 989ded6052
commit 97d5698e0c
20 changed files with 171 additions and 262 deletions

View File

@ -21,12 +21,6 @@ CCutsceneObject::CCutsceneObject(void)
ObjectCreatedBy = CUTSCENE_OBJECT;
m_fMass = 1.0f;
m_fTurnMass = 1.0f;
#ifdef PED_SKIN
bRenderHead = true;
bRenderRightHand = true;
bRenderLeftHand = true;
#endif
}
void
@ -85,47 +79,9 @@ CCutsceneObject::PreRender(void)
void
CCutsceneObject::Render(void)
{
#ifdef PED_SKIN
if(IsClumpSkinned(GetClump())){
if(bRenderLeftHand) RenderLimb(BONE_Lhand);
if(bRenderRightHand) RenderLimb(BONE_Rhand);
if(bRenderHead) RenderLimb(BONE_head);
}
#endif
CObject::Render();
}
#ifdef PED_SKIN
void
CCutsceneObject::RenderLimb(int32 bone)
{
RpAtomic *atomic;
CPedModelInfo *mi = (CPedModelInfo *)CModelInfo::GetModelInfo(GetModelIndex());
switch(bone){
case BONE_head:
atomic = mi->getHead();
break;
case BONE_Lhand:
atomic = mi->getLeftHand();
break;
case BONE_Rhand:
atomic = mi->getRightHand();
break;
default:
return;
}
if(atomic){
RpHAnimHierarchy *hier = GetAnimHierarchyFromSkinClump(GetClump());
int idx = RpHAnimIDGetIndex(hier, bone);
RwMatrix *mat = &RpHAnimHierarchyGetMatrixArray(hier)[idx];
RwFrame *frame = RpAtomicGetFrame(atomic);
*RwFrameGetMatrix(frame) = *mat;
RwFrameUpdateObjects(frame);
RpAtomicRender(atomic);
}
}
#endif
bool
CCutsceneObject::SetupLighting(void)
{

View File

@ -5,29 +5,12 @@
class CCutsceneObject : public CObject
{
public:
#ifdef PED_SKIN
bool bRenderHead;
bool bRenderRightHand;
bool bRenderLeftHand;
bool GetRenderHead(void) { return bRenderHead; }
bool GetRenderRightHand(void) { return bRenderRightHand; }
bool GetRenderLeftHand(void) { return bRenderLeftHand; }
void SetRenderHead(bool render) { bRenderHead = render; }
void SetRenderRightHand(bool render) { bRenderRightHand = render; }
void SetRenderLeftHand(bool render) { bRenderLeftHand = render; }
#endif
CCutsceneObject(void);
void SetModelIndex(uint32 id);
void ProcessControl(void);
void PreRender(void);
void Render(void);
void RenderLimb(int32 bone);
bool SetupLighting(void);
void RemoveLighting(bool reset);
};
#ifndef PED_SKIN
static_assert(sizeof(CCutsceneObject) == 0x198, "CCutsceneObject: error");
#endif