DecodeFrameValue should only return a float value

This commit is contained in:
smallmodel 2024-06-10 22:06:25 +02:00
parent e550d244df
commit abefdd772c
No known key found for this signature in database
GPG key ID: 9F2D623CEDF08512

View file

@ -1047,7 +1047,7 @@ int skeletor_c::GetMorphWeightFrame(int index, float time, int *data)
return GetMorphWeightFrame(data); return GetMorphWeightFrame(data);
} }
float *DecodeFrameValue(skanChannelHdr *channelFrames, int desiredFrameNum) float DecodeFrameValue(skanChannelHdr *channelFrames, int desiredFrameNum)
{ {
skanGameFrame *foundFrame; skanGameFrame *foundFrame;
size_t frameSize; size_t frameSize;
@ -1069,7 +1069,7 @@ float *DecodeFrameValue(skanChannelHdr *channelFrames, int desiredFrameNum)
foundFrame = (skanGameFrame *)((byte *)channelFrames->ary_frames + foundFrame->nPrevFrameIndex * frameSize); foundFrame = (skanGameFrame *)((byte *)channelFrames->ary_frames + foundFrame->nPrevFrameIndex * frameSize);
} }
return foundFrame->pChannelData; return foundFrame->pChannelData[0];
} }
int skeletor_c::GetMorphWeightFrame(int *data) int skeletor_c::GetMorphWeightFrame(int *data)
@ -1079,7 +1079,7 @@ int skeletor_c::GetMorphWeightFrame(int *data)
int blendNum; int blendNum;
float weight; float weight;
int modelChannelNum; int modelChannelNum;
float *channelData; float channelData;
numTargets = m_morphTargetList.NumChannels(); numTargets = m_morphTargetList.NumChannels();
@ -1096,12 +1096,11 @@ int skeletor_c::GetMorphWeightFrame(int *data)
if (weight > 0.001) { if (weight > 0.001) {
for (modelChannelNum = 0; modelChannelNum < numTargets; modelChannelNum++) { for (modelChannelNum = 0; modelChannelNum < numTargets; modelChannelNum++) {
animChannelNum = m_morphTargetList.GlobalChannel(modelChannelNum); animChannelNum = m_morphTargetList.GlobalChannel(modelChannelNum);
animChannelNum = blendInfo.pAnimationData->channelList.GetLocalFromGlobal(animChannelNum); animChannelNum = blendInfo.pAnimationData->channelList.LocalChannel(animChannelNum);
if (animChannelNum >= 0) { if (animChannelNum >= 0) {
channelData = channelData = DecodeFrameValue(&blendInfo.pAnimationData->ary_channels[animChannelNum], blendInfo.frame);
DecodeFrameValue(&blendInfo.pAnimationData->ary_channels[animChannelNum], blendInfo.frame); data[modelChannelNum] += (int)(channelData * weight);
data[modelChannelNum] += (int)(channelData[0] * weight);
} }
} }
} }
@ -1114,12 +1113,11 @@ int skeletor_c::GetMorphWeightFrame(int *data)
if (weight > 0.001) { if (weight > 0.001) {
for (modelChannelNum = 0; modelChannelNum < numTargets; modelChannelNum++) { for (modelChannelNum = 0; modelChannelNum < numTargets; modelChannelNum++) {
animChannelNum = m_morphTargetList.GlobalChannel(modelChannelNum); animChannelNum = m_morphTargetList.GlobalChannel(modelChannelNum);
animChannelNum = blendInfo.pAnimationData->channelList.GetLocalFromGlobal(animChannelNum); animChannelNum = blendInfo.pAnimationData->channelList.LocalChannel(animChannelNum);
if (animChannelNum >= 0) { if (animChannelNum >= 0) {
channelData = channelData = DecodeFrameValue(&blendInfo.pAnimationData->ary_channels[animChannelNum], blendInfo.frame);
DecodeFrameValue(&blendInfo.pAnimationData->ary_channels[animChannelNum], blendInfo.frame); data[modelChannelNum] += (int)(channelData * weight);
data[modelChannelNum] += (int)(channelData[0] * weight);
} }
} }
} }