TWINE: cleanup in handling the bone states of the model animation
This commit is contained in:
parent
777ceef714
commit
565b4d5755
2 changed files with 9 additions and 24 deletions
|
@ -146,12 +146,12 @@ struct Model {
|
|||
return verticesBase + 2 + numVertices * 6;
|
||||
}
|
||||
|
||||
static const uint8 *getBonesStateData(const uint8 *bodyPtr, int boneIdx) {
|
||||
return getBonesBaseData(bodyPtr) + 8 + (boneIdx * 38);
|
||||
static const BoneFrame *getBonesStateData(const uint8 *bodyPtr, int boneIdx) {
|
||||
return (const BoneFrame*)(getBonesBaseData(bodyPtr) + 8 + (boneIdx * 38));
|
||||
}
|
||||
|
||||
static uint8 *getBonesStateData(uint8 *bodyPtr, int boneIdx) {
|
||||
return getBonesBaseData(bodyPtr) + 8 + (boneIdx * 38);
|
||||
static BoneFrame *getBonesStateData(uint8 *bodyPtr, int boneIdx) {
|
||||
return (BoneFrame*)(getBonesBaseData(bodyPtr) + 8 + (boneIdx * 38));
|
||||
}
|
||||
|
||||
static BoneFrame *getBonesStateData(BodyData &bodyPtr, int boneIdx) {
|
||||
|
|
|
@ -130,12 +130,8 @@ bool Animations::setModelAnimation(int32 keyframeIdx, const AnimData &animData,
|
|||
const int32 deltaTime = _engine->lbaTime - remainingFrameTime;
|
||||
if (deltaTime >= keyFrameLength) {
|
||||
for (int32 i = 0; i < numOfBonesInAnim; ++i) {
|
||||
const BoneFrame &boneframe = keyFrame->boneframes[i];
|
||||
uint8 *bonesPtr = Model::getBonesStateData(bodyPtr, i);
|
||||
WRITE_LE_UINT16(bonesPtr + 0, boneframe.type);
|
||||
WRITE_LE_INT16(bonesPtr + 2, boneframe.x);
|
||||
WRITE_LE_INT16(bonesPtr + 4, boneframe.y);
|
||||
WRITE_LE_INT16(bonesPtr + 6, boneframe.z);
|
||||
BoneFrame *boneState = Model::getBonesStateData(bodyPtr, i);
|
||||
*boneState = keyFrame->boneframes[i];
|
||||
}
|
||||
|
||||
animTimerDataPtr->ptr = keyFrame;
|
||||
|
@ -210,12 +206,8 @@ void Animations::setAnimAtKeyframe(int32 keyframeIdx, const AnimData &animData,
|
|||
}
|
||||
|
||||
for (int32 i = 0; i < numOfBonesInAnim; ++i) {
|
||||
const BoneFrame &boneframe = keyFrame->boneframes[i];
|
||||
uint8 *bonesPtr = Model::getBonesStateData(bodyPtr, i);
|
||||
WRITE_LE_UINT16(bonesPtr + 0, boneframe.type);
|
||||
WRITE_LE_INT16(bonesPtr + 2, boneframe.x);
|
||||
WRITE_LE_INT16(bonesPtr + 4, boneframe.y);
|
||||
WRITE_LE_INT16(bonesPtr + 6, boneframe.z);
|
||||
BoneFrame *boneState = Model::getBonesStateData(bodyPtr, i);
|
||||
*boneState = keyFrame->boneframes[i];
|
||||
}
|
||||
|
||||
return;
|
||||
|
@ -238,14 +230,7 @@ void Animations::stockAnimation(const uint8 *bodyPtr, AnimTimerDataStruct *animT
|
|||
keyframe->boneframes.reserve(numBones);
|
||||
|
||||
for (int32 i = 0; i < numBones; ++i) {
|
||||
const uint16 *ptrToData = (const uint16*)Model::getBonesStateData(bodyPtr, i);
|
||||
// these are 4 int16 values, type, x, y and z
|
||||
BoneFrame boneFrame;
|
||||
boneFrame.type = ptrToData[0];
|
||||
boneFrame.x = ptrToData[1];
|
||||
boneFrame.y = ptrToData[2];
|
||||
boneFrame.z = ptrToData[3];
|
||||
keyframe->boneframes.push_back(boneFrame);
|
||||
keyframe->boneframes.push_back(*Model::getBonesStateData(bodyPtr, i));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue