mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-28 21:57:57 +03:00
Using an enum channelType_e
rather than raw values for bone channel types
This commit is contained in:
parent
02ef85e390
commit
72e315bce1
4 changed files with 31 additions and 24 deletions
|
@ -241,36 +241,36 @@ bool IsBogusChannelName(const char *name)
|
|||
return false;
|
||||
}
|
||||
|
||||
int GetBoneChannelType(const char* name)
|
||||
channelType_t GetBoneChannelType(const char* name)
|
||||
{
|
||||
size_t len;
|
||||
|
||||
if (!name) {
|
||||
return 2;
|
||||
return CHANNEL_NONE;
|
||||
}
|
||||
|
||||
if (IsBogusChannelName(name)) {
|
||||
return 2;
|
||||
return CHANNEL_NONE;
|
||||
}
|
||||
|
||||
len = strlen(name);
|
||||
if (len < 4) {
|
||||
return 3;
|
||||
return CHANNEL_VALUE;
|
||||
}
|
||||
|
||||
if (!strcmp(name + len - 4, " rot")) {
|
||||
return 0;
|
||||
return CHANNEL_ROTATION;
|
||||
}
|
||||
|
||||
if (!strcmp(name + len - 4, " pos")) {
|
||||
return 1;
|
||||
return CHANNEL_POSITION;
|
||||
}
|
||||
|
||||
if (len >= 6 && !strcmp(name + len - 6, " rotFK")) {
|
||||
return 2;
|
||||
return CHANNEL_NONE;
|
||||
}
|
||||
|
||||
return 3;
|
||||
return CHANNEL_VALUE;
|
||||
}
|
||||
|
||||
int ChannelNameTable::RegisterChannel(const char *name)
|
||||
|
|
|
@ -79,7 +79,7 @@ typedef struct skelAnimDataGameHeader_s skelAnimDataGameHeader_t;
|
|||
|
||||
typedef struct skelAnimDataGameHeader_s {
|
||||
int flags;
|
||||
int nBytesUsed;
|
||||
size_t nBytesUsed;
|
||||
bool bHasDelta;
|
||||
bool bHasMorph;
|
||||
bool bHasUpper;
|
||||
|
|
|
@ -71,7 +71,7 @@ skelAnimDataGameHeader_t *EncodeFrames(
|
|||
skanGameFrame *pFrame;
|
||||
size_t frameSize;
|
||||
int indexLastFrameAdded;
|
||||
int channelType;
|
||||
channelType_t channelType;
|
||||
|
||||
pChannel = enAnim->ary_channels;
|
||||
endFrameCap = enAnim->numFrames - 2;
|
||||
|
@ -82,7 +82,7 @@ skelAnimDataGameHeader_t *EncodeFrames(
|
|||
|
||||
channelType = GetBoneChannelType(enAnim->channelList.ChannelName(channelNames, i));
|
||||
switch (channelType) {
|
||||
case 0:
|
||||
case CHANNEL_ROTATION:
|
||||
frameSize = (sizeof(skanGameFrame) - sizeof(skanGameFrame::pChannelData) + sizeof(vec4_t));
|
||||
frameCnt = 0;
|
||||
for (j = 0; j < enAnim->numFrames; j++) {
|
||||
|
@ -125,7 +125,7 @@ skelAnimDataGameHeader_t *EncodeFrames(
|
|||
pCurrFrame++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case CHANNEL_POSITION:
|
||||
frameSize = (sizeof(skanGameFrame) - sizeof(skanGameFrame::pChannelData) + sizeof(vec3_t));
|
||||
frameCnt = 0;
|
||||
for (j = 0; j < enAnim->numFrames; j++) {
|
||||
|
@ -167,11 +167,11 @@ skelAnimDataGameHeader_t *EncodeFrames(
|
|||
pCurrFrame++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case CHANNEL_NONE:
|
||||
pChannel->ary_frames = NULL;
|
||||
pChannel->nFramesInChannel = 0;
|
||||
break;
|
||||
case 3:
|
||||
case CHANNEL_VALUE:
|
||||
default:
|
||||
frameSize = (sizeof(skanGameFrame) - sizeof(skanGameFrame::pChannelData) + sizeof(float));
|
||||
frameCnt = 0;
|
||||
|
@ -433,7 +433,7 @@ void ReadEncodedFrames(msg_t *msg, skelAnimDataGameHeader_t *enAnim)
|
|||
size_t frameSize;
|
||||
int frameCnt;
|
||||
int i, j;
|
||||
int channelType;
|
||||
channelType_t channelType;
|
||||
vec4_t channelData;
|
||||
|
||||
for (i = 0; i < enAnim->nTotalChannels; i++) {
|
||||
|
@ -443,7 +443,7 @@ void ReadEncodedFrames(msg_t *msg, skelAnimDataGameHeader_t *enAnim)
|
|||
frameCnt = MSG_ReadShort(msg);
|
||||
|
||||
switch (channelType) {
|
||||
case 0:
|
||||
case CHANNEL_ROTATION:
|
||||
frameSize = (sizeof(skanGameFrame) - sizeof(skanGameFrame::pChannelData) + sizeof(vec4_t));
|
||||
|
||||
pFrame = (skanGameFrame *)Skel_Alloc(frameSize * frameCnt);
|
||||
|
@ -462,7 +462,7 @@ void ReadEncodedFrames(msg_t *msg, skelAnimDataGameHeader_t *enAnim)
|
|||
pFrame->pChannelData[3] = LittleFloat(channelData[3]);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case CHANNEL_POSITION:
|
||||
frameSize = (sizeof(skanGameFrame) - sizeof(skanGameFrame::pChannelData) + sizeof(vec3_t));
|
||||
|
||||
pFrame = (skanGameFrame *)Skel_Alloc(frameSize * frameCnt);
|
||||
|
@ -480,7 +480,7 @@ void ReadEncodedFrames(msg_t *msg, skelAnimDataGameHeader_t *enAnim)
|
|||
pFrame->pChannelData[2] = LittleFloat(channelData[2]);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case CHANNEL_NONE:
|
||||
pChannel->ary_frames = NULL;
|
||||
pChannel->nFramesInChannel = 0;
|
||||
|
||||
|
@ -490,7 +490,7 @@ void ReadEncodedFrames(msg_t *msg, skelAnimDataGameHeader_t *enAnim)
|
|||
MSG_ReadData(msg, channelData, sizeof(vec4_t));
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
case CHANNEL_VALUE:
|
||||
default:
|
||||
frameSize = (sizeof(skanGameFrame) - sizeof(skanGameFrame::pChannelData) + sizeof(float));
|
||||
|
||||
|
@ -521,7 +521,7 @@ void ReadEncodedFramesEx(msg_t *msg, skelAnimDataGameHeader_t *enAnim)
|
|||
int frameCnt;
|
||||
int i, j;
|
||||
const char *name;
|
||||
int type;
|
||||
channelType_t type;
|
||||
|
||||
for (i = 0; i < enAnim->nTotalChannels; i++) {
|
||||
pChannel = &enAnim->ary_channels[i];
|
||||
|
@ -534,7 +534,7 @@ void ReadEncodedFramesEx(msg_t *msg, skelAnimDataGameHeader_t *enAnim)
|
|||
//
|
||||
// 4 channels (Quat)
|
||||
//
|
||||
case 0:
|
||||
case CHANNEL_ROTATION:
|
||||
frameSize = (sizeof(skanGameFrame) - sizeof(skanGameFrame::pChannelData) + sizeof(vec4_t));
|
||||
pFrame = (skanGameFrame *)Skel_Alloc(frameSize * frameCnt);
|
||||
pChannel->ary_frames = pFrame;
|
||||
|
@ -553,7 +553,7 @@ void ReadEncodedFramesEx(msg_t *msg, skelAnimDataGameHeader_t *enAnim)
|
|||
//
|
||||
// 3 channels (Position)
|
||||
//
|
||||
case 1:
|
||||
case CHANNEL_POSITION:
|
||||
frameSize = (sizeof(skanGameFrame) - sizeof(skanGameFrame::pChannelData) + sizeof(vec3_t));
|
||||
pFrame = (skanGameFrame *)Skel_Alloc(frameSize * frameCnt);
|
||||
pChannel->ary_frames = pFrame;
|
||||
|
@ -571,7 +571,7 @@ void ReadEncodedFramesEx(msg_t *msg, skelAnimDataGameHeader_t *enAnim)
|
|||
//
|
||||
// 1 channel (frame)
|
||||
//
|
||||
case 3:
|
||||
case CHANNEL_VALUE:
|
||||
frameSize = (sizeof(skanGameFrame) - sizeof(skanGameFrame::pChannelData) + sizeof(float) * 1);
|
||||
pFrame = (skanGameFrame *)Skel_Alloc(frameSize * frameCnt);
|
||||
pChannel->ary_frames = pFrame;
|
||||
|
|
|
@ -57,7 +57,14 @@ private:
|
|||
void SetChannelName(ChannelName_t *channel, const char *newName);
|
||||
};
|
||||
|
||||
int GetBoneChannelType(const char* name);
|
||||
typedef enum channelType_e {
|
||||
CHANNEL_ROTATION,
|
||||
CHANNEL_POSITION,
|
||||
CHANNEL_NONE,
|
||||
CHANNEL_VALUE
|
||||
} channelType_t;
|
||||
|
||||
channelType_t GetBoneChannelType(const char* name);
|
||||
|
||||
#else
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue