mirror of
https://github.com/GTAmodding/re3.git
synced 2025-07-13 10:04:08 +00:00
most of animation system done; little stuff here and there
This commit is contained in:
parent
78ca912434
commit
2eee4c5176
27 changed files with 497 additions and 229 deletions
|
@ -3,16 +3,23 @@
|
|||
#include "ctype.h"
|
||||
|
||||
#include "General.h"
|
||||
#include "RwHelper.h"
|
||||
#include "ModelIndices.h"
|
||||
#include "ModelInfo.h"
|
||||
#include "AnimManager.h"
|
||||
#include "RpAnimBlend.h"
|
||||
#include "AnimBlendAssociation.h"
|
||||
#include "AnimBlendAssocGroup.h"
|
||||
|
||||
//--MIAMI: file done
|
||||
|
||||
CAnimBlendAssocGroup::CAnimBlendAssocGroup(void)
|
||||
{
|
||||
animBlock = nil;
|
||||
assocList = nil;
|
||||
numAssociations = 0;
|
||||
firstAnimId = 0;
|
||||
groupId = -1;
|
||||
}
|
||||
|
||||
CAnimBlendAssocGroup::~CAnimBlendAssocGroup(void)
|
||||
|
@ -43,6 +50,7 @@ CAnimBlendAssocGroup::GetAnimation(const char *name)
|
|||
for(i = 0; i < numAssociations; i++)
|
||||
if(!CGeneral::faststricmp(assocList[i].hierarchy->name, name))
|
||||
return &assocList[i];
|
||||
debug("\n\nCan't find the fucking animation %s\n\n\n", name);
|
||||
return nil;
|
||||
}
|
||||
|
||||
|
@ -102,6 +110,15 @@ GetModelFromName(const char *name)
|
|||
{
|
||||
int i;
|
||||
CBaseModelInfo *mi;
|
||||
char playername[32];
|
||||
|
||||
if(strncasecmp(name, "CSplay", 6) == 0 &&
|
||||
strncasecmp(CModelInfo::GetModelInfo(MI_PLAYER)->GetName(), "ig", 2) == 0){
|
||||
strcpy(playername, CModelInfo::GetModelInfo(MI_PLAYER)->GetName());
|
||||
playername[0] = 'C';
|
||||
playername[1] = 'S';
|
||||
name = playername;
|
||||
}
|
||||
|
||||
for(i = 0; i < MODELINFOSIZE; i++){
|
||||
mi = CModelInfo::GetModelInfo(i);
|
||||
|
@ -118,8 +135,7 @@ CAnimBlendAssocGroup::CreateAssociations(const char *name)
|
|||
int i;
|
||||
CAnimBlock *animBlock;
|
||||
|
||||
if(assocList)
|
||||
DestroyAssociations();
|
||||
DestroyAssociations();
|
||||
|
||||
animBlock = CAnimManager::GetAnimationBlock(name);
|
||||
assocList = new CAnimBlendAssociation[animBlock->numAnims];
|
||||
|
@ -128,13 +144,18 @@ CAnimBlendAssocGroup::CreateAssociations(const char *name)
|
|||
for(i = 0; i < animBlock->numAnims; i++){
|
||||
CAnimBlendHierarchy *anim = CAnimManager::GetAnimation(animBlock->firstIndex + i);
|
||||
CBaseModelInfo *model = GetModelFromName(anim->name);
|
||||
assert(model);
|
||||
printf("Associated anim %s with model %s\n", anim->name, model->GetName());
|
||||
RpClump *clump = (RpClump*)model->CreateInstance();
|
||||
RpAnimBlendClumpInit(clump);
|
||||
assocList[i].Init(clump, anim);
|
||||
RpClumpDestroy(clump);
|
||||
assocList[i].animId = i;
|
||||
if(model){
|
||||
debug("Associated anim %s with model %s\n", anim->name, model->GetName());
|
||||
RpClump *clump = (RpClump*)model->CreateInstance();
|
||||
RpAnimBlendClumpInit(clump);
|
||||
assocList[i].Init(clump, anim);
|
||||
if(IsClumpSkinned(clump))
|
||||
RpClumpForAllAtomics(clump, AtomicRemoveAnimFromSkinCB, nil);
|
||||
RpClumpDestroy(clump);
|
||||
assocList[i].animId = firstAnimId + i;
|
||||
assocList[i].groupId = groupId;
|
||||
}else
|
||||
debug("\n\nCANNOT FIND MODELINFO WITH NAME %s\n\n\n", anim->name);
|
||||
}
|
||||
numAssociations = animBlock->numAnims;
|
||||
}
|
||||
|
@ -144,10 +165,8 @@ void
|
|||
CAnimBlendAssocGroup::CreateAssociations(const char *blockName, RpClump *clump, const char **animNames, int numAssocs)
|
||||
{
|
||||
int i;
|
||||
CAnimBlock *animBlock;
|
||||
|
||||
if(assocList)
|
||||
DestroyAssociations();
|
||||
DestroyAssociations();
|
||||
|
||||
animBlock = CAnimManager::GetAnimationBlock(blockName);
|
||||
assocList = new CAnimBlendAssociation[numAssocs];
|
||||
|
@ -155,7 +174,8 @@ CAnimBlendAssocGroup::CreateAssociations(const char *blockName, RpClump *clump,
|
|||
numAssociations = 0;
|
||||
for(i = 0; i < numAssocs; i++){
|
||||
assocList[i].Init(clump, CAnimManager::GetAnimation(animNames[i], animBlock));
|
||||
assocList[i].animId = i;
|
||||
assocList[i].animId = firstAnimId + i;
|
||||
assocList[i].groupId = groupId;
|
||||
}
|
||||
numAssociations = numAssocs;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue