mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-28 21:57:57 +03:00
Use a macro constant for movement/action skan blend frames
This commit is contained in:
parent
afe1ba47cf
commit
e8dfa0206b
3 changed files with 22 additions and 13 deletions
|
@ -401,7 +401,7 @@ void skeletor_c::SetPose(
|
|||
m_frameRadius = 2.0f;
|
||||
animWeight = 0.0f;
|
||||
movementBlendFrame = 0;
|
||||
actionBlendFrame = 32;
|
||||
actionBlendFrame = MAX_SKEL_BLEND_MOVEMENT_FRAMES;
|
||||
aliases = m_Tiki->a->m_aliases;
|
||||
|
||||
for (blendNum = 0; blendNum < MAX_FRAMEINFOS; blendNum++) {
|
||||
|
@ -491,8 +491,11 @@ void skeletor_c::SetPose(
|
|||
}
|
||||
|
||||
m_frameList.numMovementFrames = movementBlendFrame;
|
||||
m_frameList.numActionFrames = actionBlendFrame - 32;
|
||||
m_frameList.numActionFrames = actionBlendFrame - MAX_SKEL_BLEND_MOVEMENT_FRAMES;
|
||||
m_frameList.actionWeight = actionWeight;
|
||||
|
||||
assert(m_frameList.numMovementFrames < MAX_SKEL_BLEND_MOVEMENT_FRAMES);
|
||||
assert(m_frameList.numActionFrames < MAX_SKEL_BLEND_ACTION_FRAMES);
|
||||
}
|
||||
|
||||
static SkelMat4 GetGlobalDefaultPosition(skelBone_Base *bone)
|
||||
|
@ -692,9 +695,10 @@ void SkeletorGetAnimFrame(
|
|||
if (!animData->bHasDelta) {
|
||||
frameList.numMovementFrames = 0;
|
||||
frameList.numActionFrames = 1;
|
||||
frameList.m_blendInfo[32].weight = 1.0;
|
||||
frameList.m_blendInfo[32].pAnimationData = animData;
|
||||
frameList.m_blendInfo[32].frame = frame;
|
||||
|
||||
frameList.m_blendInfo[MAX_SKEL_BLEND_MOVEMENT_FRAMES].weight = 1.0;
|
||||
frameList.m_blendInfo[MAX_SKEL_BLEND_MOVEMENT_FRAMES].pAnimationData = animData;
|
||||
frameList.m_blendInfo[MAX_SKEL_BLEND_MOVEMENT_FRAMES].frame = frame;
|
||||
} else {
|
||||
frameList.numMovementFrames = 1;
|
||||
frameList.numActionFrames = 0;
|
||||
|
@ -907,9 +911,10 @@ void TIKI_GetSkelAnimFrameInternal(
|
|||
if (!animData || !animData->bHasDelta) {
|
||||
frameList.numMovementFrames = 0;
|
||||
frameList.numActionFrames = 1;
|
||||
frameList.m_blendInfo[32].weight = 1.0;
|
||||
frameList.m_blendInfo[32].pAnimationData = animData;
|
||||
frameList.m_blendInfo[32].frame = frame;
|
||||
|
||||
frameList.m_blendInfo[MAX_SKEL_BLEND_MOVEMENT_FRAMES].weight = 1.0;
|
||||
frameList.m_blendInfo[MAX_SKEL_BLEND_MOVEMENT_FRAMES].pAnimationData = animData;
|
||||
frameList.m_blendInfo[MAX_SKEL_BLEND_MOVEMENT_FRAMES].frame = frame;
|
||||
} else {
|
||||
frameList.numMovementFrames = 1;
|
||||
frameList.numActionFrames = 0;
|
||||
|
@ -1117,8 +1122,8 @@ int skeletor_c::GetMorphWeightFrame(int *data)
|
|||
}
|
||||
}
|
||||
|
||||
for (blendNum = 32; blendNum < m_frameList.numActionFrames + 32; blendNum++) {
|
||||
const skanBlendInfo& blendInfo = m_frameList.m_blendInfo[blendNum];
|
||||
for (blendNum = 0; blendNum < m_frameList.numActionFrames; blendNum++) {
|
||||
const skanBlendInfo& blendInfo = m_frameList.m_blendInfo[blendNum + MAX_SKEL_BLEND_MOVEMENT_FRAMES];
|
||||
weight = blendInfo.weight;
|
||||
|
||||
if (weight > 0.001) {
|
||||
|
|
|
@ -35,6 +35,10 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#include "skeletor_name_lists.h"
|
||||
#include "skeletor_internal.h"
|
||||
|
||||
#define MAX_SKEL_BLEND_MOVEMENT_FRAMES 32
|
||||
#define MAX_SKEL_BLEND_ACTION_FRAMES 32
|
||||
#define MAX_SKEL_BLEND_FRAMES (MAX_SKEL_BLEND_MOVEMENT_FRAMES + MAX_SKEL_BLEND_ACTION_FRAMES)
|
||||
|
||||
typedef struct skelAnimFrame_s {
|
||||
float radius;
|
||||
SkelVec3 bounds[2];
|
||||
|
@ -70,7 +74,7 @@ public:
|
|||
short int numMovementFrames;
|
||||
short int numActionFrames;
|
||||
float actionWeight;
|
||||
skanBlendInfo m_blendInfo[64];
|
||||
skanBlendInfo m_blendInfo[MAX_SKEL_BLEND_FRAMES];
|
||||
|
||||
public:
|
||||
SkelQuat GetSlerpValue(int globalChannelNum) const;
|
||||
|
|
|
@ -232,7 +232,7 @@ SkelQuat skelAnimStoreFrameList_c::GetSlerpValue(int globalChannelNum) const
|
|||
|
||||
if (actionWeight > 0.001) {
|
||||
for (i = 0; i < numActionFrames; i++) {
|
||||
pFrame = &m_blendInfo[i + 32];
|
||||
pFrame = &m_blendInfo[i + MAX_SKEL_BLEND_MOVEMENT_FRAMES];
|
||||
|
||||
localChannelNum = pFrame->pAnimationData->channelList.GetLocalFromGlobal(globalChannelNum);
|
||||
if (localChannelNum >= 0) {
|
||||
|
@ -381,7 +381,7 @@ void skelAnimStoreFrameList_c::GetLerpValue3(int globalChannelNum, SkelVec3 *out
|
|||
VectorClear(result);
|
||||
|
||||
for (i = 0; i < numActionFrames; i++) {
|
||||
pFrame = &m_blendInfo[i + 32];
|
||||
pFrame = &m_blendInfo[i + MAX_SKEL_BLEND_MOVEMENT_FRAMES];
|
||||
|
||||
localChannelNum = pFrame->pAnimationData->channelList.GetLocalFromGlobal(globalChannelNum);
|
||||
if (localChannelNum >= 0) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue