diff --git a/Graphics/characters/clam/AnimList.txt b/Graphics/characters/clam/AnimList.txt new file mode 100644 index 000000000..2f94af8c2 --- /dev/null +++ b/Graphics/characters/clam/AnimList.txt @@ -0,0 +1,7 @@ +# Comment +clamshut +clamsidesnap +clamsnapup + + + diff --git a/Utils/MkActor3d/MkActor3d.cpp b/Utils/MkActor3d/MkActor3d.cpp index 4f2391205..752fceba3 100644 --- a/Utils/MkActor3d/MkActor3d.cpp +++ b/Utils/MkActor3d/MkActor3d.cpp @@ -15,16 +15,19 @@ using namespace std; //*************************************************************************** -CMkActor3d ThisActor; +vector ActorList; +int TPBase=-1,TPWidth=-1,TPHeight=-1; +GString TPOutStr; //std::vector ExtraTex; +CTexGrab CMkActor3d::TexGrab; + //*************************************************************************** char * CycleCommands(char *String,int Num) { -int TPBase=-1,TPWidth=-1,TPHeight=-1; char Text[2048],*TextPtr; -int Count,i; +int Count; if (String[0]=='-' || String[0]=='/') { @@ -34,9 +37,13 @@ int Count,i; // Switches case 'o': OutStr = CheckFileString(String); + OutStr.Upper(); + OutStr.Append('\\'); break; case 'i': IncludeFile = CheckFileString(String); + IncludeFile.Upper(); + IncludeFile.Append('\\'); break; case 'd': DebugOn =true; @@ -45,6 +52,9 @@ int Count,i; TpStr= CheckFileString(String); Scale=atof(TpStr); break; + case 'g': + TPOutStr= CheckFileString(String); + break; case 't': TpStr= CheckFileString(String); TextPtr=Text; @@ -56,29 +66,6 @@ int Count,i; TPWidth=atol(TextPtr); TextPtr+=strlen(TextPtr)+1; TPHeight=atol(TextPtr); - ThisActor.SetTPData(TPBase,TPWidth,TPHeight); - break; - case 'x': - TpStr= CheckFileString(String); - TextPtr=Text; - strcpy(TextPtr,TpStr); - Count=ZeroAndCountCommas(TextPtr); - for (i=0; i [ .. ] [ switches.. ]\n"); printf("Switches:\n"); printf(" -o:[FILE] Set output Dir\n"); printf(" -s:nn Set Scaling value\n"); printf(" -t:p,w,h Set TPage No,Width,Height\n"); printf(" -d: Enable Debug output\n"); - printf(" -x: Add Texture\n"); - printf(" -d: Add Anim\n"); printf(" -q: Enable Quadding\n"); GObject::Error(ERR_FATAL,ErrStr); } @@ -116,11 +103,34 @@ void Usage(char *ErrStr) //*************************************************************************** int main (int argc, char *argv[]) { +int i,ListSize; + CommandLine(argc,argv,CycleCommands); if (OutStr.Empty()) Usage("No Output File Set\n"); +vector const &Files = MyFiles.GetFileInfoVector(); - ThisActor.ProcessActor(); - ThisActor.ProcessAnim(); + + for (i=0; i &List) +{ +char *Script,*Ptr; +int Size; + File=fopen(Filename,"rb"); + if (!File) return; + fseek(File,0,SEEK_END); + Size=ftell(File); + fseek(File,0,SEEK_SET); + Script=(char*)malloc(Size+1); + // Load It + fread(Script,Size,1,File); + fclose(File); + +// Extract Names + Ptr=Script; + Script[Size]=0; + while (*Ptr) + { + GString Str; + + while (*Ptr=='\n' || *Ptr=='\r'|| *Ptr==' ') *Ptr++; // Skip gaff + if (*Ptr) + { + if (*Ptr=='#') + { // Skip commented lines + while (*Ptr!='\n' && *Ptr) Ptr++; + } + else + { // Read data + while (*Ptr!=' ' && *Ptr!='\n' && *Ptr!='\r' && *Ptr) + { + Str.Append(*Ptr++); + } + List.push_back(Str); + } + } + } + + free(Script); } //*************************************************************************** @@ -311,12 +344,8 @@ int ListSize=Skel.size(); //*************************************************************************** void CMkActor3d::ActorProcess() { -GString IncName=IncFile+".h"; - + FaceList.SetTexGrab(TexGrab); FaceList.SetTexBasePath(InPath); - FaceList.SetTexOut(OutFile+".Tex",TPageBase,TPageWidth,TPageHeight); - FaceList.SetTexDebugOut(OutFile+".Lbm"); - if (!IncludeFile.Empty()) FaceList.SetTexInclude(IncName); ProcessSkel(1,-1); BuildSkelOut(); @@ -325,11 +354,11 @@ GString IncName=IncFile+".h"; int ListSize=InTexList.size(); for (int i=0; i &List); + void ProcessSkel(int Idx,int Parent); void WriteSkel(); @@ -68,13 +70,9 @@ private: std::vector InTexList; std::vector InAnimList; - - int TPageBase; - int TPageWidth,TPageHeight; +static CTexGrab TexGrab; /*Anim*/ - void AnimLoad(); - void AnimWrite(); void AnimWriteInclude(); int AnimProcessSkelMove(CScene &Scene,sAnim &ThisAnim,int Idx); void AnimProcessSkelAnim(CScene &Scene,sAnim &ThisAnim,int Idx); diff --git a/source/player/player.cpp b/source/player/player.cpp index 4adf090b4..149c69d3c 100644 --- a/source/player/player.cpp +++ b/source/player/player.cpp @@ -177,7 +177,7 @@ void CPlayer::init() sActorHdr *Hdr=m_skel.Load(ACTORS_SPONGEBOB_A3D); m_skel.Init(Hdr); - TPLoadTex(ACTORS_SPONGEBOB_TEX); + TPLoadTex(ACTORS_ACTOR_SPONGEBOB_TEX); m_skel.setAnimDatabase(CAnimDB::Load(ACTORS_SPONGEBOB_ABK)); diff --git a/tools/Data/bin/MkLevel.exe b/tools/Data/bin/MkLevel.exe index 11bc1ae59..92e6978ba 100644 Binary files a/tools/Data/bin/MkLevel.exe and b/tools/Data/bin/MkLevel.exe differ