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;
|
return verticesBase + 2 + numVertices * 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const uint8 *getBonesStateData(const uint8 *bodyPtr, int boneIdx) {
|
static const BoneFrame *getBonesStateData(const uint8 *bodyPtr, int boneIdx) {
|
||||||
return getBonesBaseData(bodyPtr) + 8 + (boneIdx * 38);
|
return (const BoneFrame*)(getBonesBaseData(bodyPtr) + 8 + (boneIdx * 38));
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8 *getBonesStateData(uint8 *bodyPtr, int boneIdx) {
|
static BoneFrame *getBonesStateData(uint8 *bodyPtr, int boneIdx) {
|
||||||
return getBonesBaseData(bodyPtr) + 8 + (boneIdx * 38);
|
return (BoneFrame*)(getBonesBaseData(bodyPtr) + 8 + (boneIdx * 38));
|
||||||
}
|
}
|
||||||
|
|
||||||
static BoneFrame *getBonesStateData(BodyData &bodyPtr, int boneIdx) {
|
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;
|
const int32 deltaTime = _engine->lbaTime - remainingFrameTime;
|
||||||
if (deltaTime >= keyFrameLength) {
|
if (deltaTime >= keyFrameLength) {
|
||||||
for (int32 i = 0; i < numOfBonesInAnim; ++i) {
|
for (int32 i = 0; i < numOfBonesInAnim; ++i) {
|
||||||
const BoneFrame &boneframe = keyFrame->boneframes[i];
|
BoneFrame *boneState = Model::getBonesStateData(bodyPtr, i);
|
||||||
uint8 *bonesPtr = Model::getBonesStateData(bodyPtr, i);
|
*boneState = keyFrame->boneframes[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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
animTimerDataPtr->ptr = keyFrame;
|
animTimerDataPtr->ptr = keyFrame;
|
||||||
|
@ -210,12 +206,8 @@ void Animations::setAnimAtKeyframe(int32 keyframeIdx, const AnimData &animData,
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int32 i = 0; i < numOfBonesInAnim; ++i) {
|
for (int32 i = 0; i < numOfBonesInAnim; ++i) {
|
||||||
const BoneFrame &boneframe = keyFrame->boneframes[i];
|
BoneFrame *boneState = Model::getBonesStateData(bodyPtr, i);
|
||||||
uint8 *bonesPtr = Model::getBonesStateData(bodyPtr, i);
|
*boneState = keyFrame->boneframes[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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -238,14 +230,7 @@ void Animations::stockAnimation(const uint8 *bodyPtr, AnimTimerDataStruct *animT
|
||||||
keyframe->boneframes.reserve(numBones);
|
keyframe->boneframes.reserve(numBones);
|
||||||
|
|
||||||
for (int32 i = 0; i < numBones; ++i) {
|
for (int32 i = 0; i < numBones; ++i) {
|
||||||
const uint16 *ptrToData = (const uint16*)Model::getBonesStateData(bodyPtr, i);
|
keyframe->boneframes.push_back(*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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue