This commit is contained in:
Daveo 2001-04-01 07:22:30 +00:00
parent 07556e2b04
commit 13a2191670
2 changed files with 182 additions and 0 deletions

122
source/gfx/actor.cpp Normal file
View File

@ -0,0 +1,122 @@
/******************/
/*** Actor Bank ***/
/******************/
#include "system\global.h"
#include "mem\memory.h"
#include "fileio\fileio.h"
#include "utils\quat.h"
#include "gfx\actor.h"
#include "utils\utils.h"
#include <dstructs.h>
/*****************************************************************************/
CActorGfx *CActorPool::ActorList[CActorPool::MAX_ACTORS];
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
CActorGfx::CActorGfx(FileEquate _Filename)
{
Filename=_Filename;
/* ActorData=(sActorHdr*)CFileIO::loadFile(Filename);
for (int i=0; i<ActorData->AnimCount; i++)
{
ActorData->AnimList[i].Move=(s32*) MakePtr(ActorData,(int)ActorData->AnimList[i].Move);
ActorData->AnimList[i].Anim=(AnimIdx*) MakePtr(ActorData,(int)ActorData->AnimList[i].Anim);
}
DAVE_DBGMSG("Nodes %i\n",ActorData->BoneCount);
DAVE_DBGMSG("Tris %i\n",ActorData->TriCount);
DAVE_DBGMSG("Vtx %i\n",ActorData->VtxCount);
DAVE_DBGMSG("Anims %i\n",ActorData->AnimCount);
*/
}
/*****************************************************************************/
CActorGfx::~CActorGfx()
{
MemFree(ActorData);
}
/*****************************************************************************/
void CActorGfx::Render(DVECTOR &Pos,int Anim,int Frame,bool FlipX)
{
}
/*****************************************************************************/
void CActorGfx::Dump()
{
}
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
void CActorPool::Init()
{
for (int i=0; i<MAX_ACTORS; i++)
{
ActorList[i]=0;
}
}
/*****************************************************************************/
int CActorPool::FindIdx(FileEquate Filename)
{
for (int i=0; i<MAX_ACTORS; i++)
{
if (ActorList[i] && ActorList[i]->GetFilename()==Filename) return(i);
}
return(-1);
}
/*****************************************************************************/
int CActorPool::FindFreeIdx()
{
for (int i=0; i<MAX_ACTORS; i++)
{
if (!ActorList[i]) return(i);
}
return(-1);
}
/*****************************************************************************/
/*** Load ********************************************************************/
/*****************************************************************************/
CActorGfx *CActorPool::GetActor(FileEquate Filename)
{
CActorGfx *NewActor;
int Idx;
// Already Loaded?
Idx=FindIdx(Filename);
if (Idx!=-1) return(ActorList[Idx]);
// Create and Load
Idx=FindFreeIdx();
ASSERT(Idx!=-1);
NewActor=new ("ActorPool") CActorPool(Filename);
ActorList[Idx]=NewActor;
return(NewActor);
}
/*****************************************************************************/
/*** Dump ********************************************************************/
/*****************************************************************************/
void CActorPool::DumpActor(FileEquate Filename)
{
CActorPool *ThisActor;
int Idx;
// Is Loaded?
Idx=FindIdx(Filename);
ASSERT(Idx!=-1);
ThisActor=ActorList[Idx];
ActorList[Idx]=0;
delete ThisActor;
}

60
source/gfx/actor.h Normal file
View File

@ -0,0 +1,60 @@
/******************/
/*** Actor Bank ***/
/******************/
#ifndef __ACTOR_HEADER__
#define __ACTOR_HEADER__
#include "system\global.h"
#include <dstructs.h>
#ifndef __BigLump_H__
#include <biglump.h>
#endif
/*****************************************************************************/
class CActorGfx
{
public:
CActorGfx(){};
CActorGfx(FileEquate Filename);
~CActorGfx();
void Render(DVECTOR &Pos,int Anim,int Frame,bool FlipX);
void Dump();
int getFrameCount() {return(0);}
FileEquate GetFilename() {return(Filename);}
private:
FileEquate Filename;
sSpriteAnimBank *ActorData;
};
/*****************************************************************************/
class CActorBank
{
public:
enum
{
MAX_ACTORS=8,
};
// virtual ~ActorBank(){};
static void Init();
static void AddActor(FileEquate Filename) {GetActor(Filename);}
static CActorGfx *GetActor(FileEquate Filename);
static void DumpActor(FileEquate Filename);
private:
static int FindIdx(FileEquate Filename);
static int FindFreeIdx();
static CActorGfx *ActorList[MAX_ACTORS];
};
/*****************************************************************************/
#endif