diff --git a/Utils/MapEdit/Core.cpp b/Utils/MapEdit/Core.cpp index 0868e952b..9d8a3d921 100644 --- a/Utils/MapEdit/Core.cpp +++ b/Utils/MapEdit/Core.cpp @@ -73,7 +73,7 @@ int Width,Height; // Create Tile Layers AddLayer(LAYER_TYPE_TILE,LAYERTILE_ACTION, Width, Height); -// AddLayer(LAYER_TYPE_COLLISION,-1, Width, Height); + AddLayer(LAYER_TYPE_COLLISION,-1, Width, Height); ActiveLayer=FindActionLayer(); MapCam.Zero(); diff --git a/Utils/MapEdit/Export.cpp b/Utils/MapEdit/Export.cpp index 7b4dbc230..1c9aca685 100644 --- a/Utils/MapEdit/Export.cpp +++ b/Utils/MapEdit/Export.cpp @@ -27,3 +27,26 @@ CExport::~CExport() } /*****************************************************************************/ +void CExport::BuildColTable(CTile &ThisTile) +{ +u8 *RGB=ThisTile.GetGBTexRGB(); +int Width=ThisTile.GetGBTexW(); +int Height=ThisTile.GetGBTexH(); + +int X,Y; + ColTable.resize(Width); + + for (X=0; X ColTable; }; diff --git a/Utils/MapEdit/LayerCollision.cpp b/Utils/MapEdit/LayerCollision.cpp index 7384f0eef..bf3542559 100644 --- a/Utils/MapEdit/LayerCollision.cpp +++ b/Utils/MapEdit/LayerCollision.cpp @@ -101,7 +101,7 @@ void CLayerCollision::UpdateGUI(CCore *Core) /*****************************************************************************/ void CLayerCollision::Export(CCore *Core,CExport &Exp) { -// Exp.ExportLayerTile(Core,GetName(),SubType,Map); + Exp.ExportLayerCollision(Core,GetName(),SubType,Map); } /*****************************************************************************/ diff --git a/Utils/MapEdit/LayerDef.h b/Utils/MapEdit/LayerDef.h index 6d4fc35d8..0c001bcc6 100644 --- a/Utils/MapEdit/LayerDef.h +++ b/Utils/MapEdit/LayerDef.h @@ -5,6 +5,9 @@ #define __LAYER_DEFS_HEADER__ /*****************************************************************************/ + +// Max size is 8 * 6 + enum LAYER_TYPE { LAYER_TYPE_TILE=0, diff --git a/Utils/MapEdit/TileSet.cpp b/Utils/MapEdit/TileSet.cpp index f7394e128..fc5b52edd 100644 --- a/Utils/MapEdit/TileSet.cpp +++ b/Utils/MapEdit/TileSet.cpp @@ -43,7 +43,7 @@ GString Filename; // Get application path #ifdef _DEBUG - ExePath="C:/Spongebob/tools/mapedit/mapedit/"; + ExePath="C:/Spongebob/tools/mapedit/"; #else char ExeFilename[2048]; GetModuleFileName(GetModuleHandle(NULL),ExeFilename,2048); @@ -85,6 +85,21 @@ void CTileBank::SetCollision(bool f) } /*****************************************************************************/ +char *FixName(const char *In) +{ +char *Ptr=(char*)In; + while (*Ptr) + { + if (Ptr[0]=='T' && + Ptr[1]=='I' && + Ptr[2]=='L' && + Ptr[3]=='E') return(Ptr); + Ptr++; + } + + return(Ptr); +} + void CTileBank::Load(CFile *File,int Version) { int ListSize; @@ -105,16 +120,24 @@ GString FilePath; { CurrentSet++; } + // New Style rel storage for (int i=0;iRead(&c,1); - RelName[Len++]=c; + RelName.Append(c); } + RelName.Upper(); + + { // Dodgy arse artist fix + RelName=FixName(RelName); + } + RootPath.makeabsolute(FilePath,RelName,FullName); AddTileSet(FullName); } diff --git a/Utils/MapEdit/TileSet.h b/Utils/MapEdit/TileSet.h index db9288dc7..36bea1e47 100644 --- a/Utils/MapEdit/TileSet.h +++ b/Utils/MapEdit/TileSet.h @@ -51,7 +51,7 @@ public: void SetCurrent(int Set) {CurrentSet=Set+1;} int GetCurrent() {return(CurrentSet);} int GetSetCount() {return(TileSet.size());} - + CMap &GetLBrush() {return(Brush[LBrush]);} CMap &GetRBrush() {return(Brush[RBrush]);} CMap &GetBrush(int i) {return(Brush[i]);} @@ -67,6 +67,7 @@ public: BOOL IsTileValidGB(int Set,int Tile); void SetCollision(bool f); + CTileSet &GetSet(int Set) {return(TileSet[Set]);} // Functions BOOL SelectL(BOOL DownFlag) {return(Select(LBrush,DownFlag));} diff --git a/Utils/MkAnim3d/MkAnim3d.cpp b/Utils/MkAnim3d/MkAnim3d.cpp index 5fabc2be4..2aeae89e7 100644 --- a/Utils/MkAnim3d/MkAnim3d.cpp +++ b/Utils/MkAnim3d/MkAnim3d.cpp @@ -4,6 +4,7 @@ #include "stdio.h" #include +#include #include #include #include @@ -16,6 +17,7 @@ using namespace std; int QuatCount=0; + //*************************************************************************** char * CycleCommands(char *String,int Num) @@ -39,6 +41,9 @@ char * CycleCommands(char *String,int Num) TpStr= CheckFileString(String); Scale=atof(TpStr); break; + case 'i': + IncludeFile= CheckFileString(String); + break; default: GObject::Error(ERR_FATAL,"Unknown switch %s",String); break; @@ -61,6 +66,7 @@ void CMkAnim3d::Add(GString const &Filename) { CScene Scene; int ThisBoneCount; +GFName Name=Filename; printf("%s\n",Filename); Scene.Load(Filename); @@ -81,7 +87,8 @@ int ThisBoneCount; // Process Anim sAnim ThisAnim; - + ThisAnim.Name=Name.File(); + ThisAnim.Name.Upper(); ThisAnim.FrameCount=ProcessSkelMove(Scene,ThisAnim,1); ProcessSkelAnim(Scene,ThisAnim,1); AnimList.push_back(ThisAnim); @@ -122,7 +129,7 @@ int FrameCount=NodeAnim.size(); { sGinAnim const &InFrame=NodeAnim[i]; sQuat ThisFrame; - Quaternion ThisQuat=InFrame.Ang; + Quaternion const &ThisQuat=InFrame.Ang; /* if (Idx==1) { @@ -260,6 +267,43 @@ int ListSize=QuatList.size(); return(Pos); } +//*************************************************************************** +void CMkAnim3d::WriteInclude(GString const &Filename) +{ +GString Upper=Filename; + Upper.Upper(); +GFName Name=Upper; + + File=fopen(Filename,"wt"); + + fprintf(File,"// %s Header\n",Name.File()); + fprintf(File,"\n"); + fprintf(File,"#ifndef\t__ANIM_%s_HEADER__\n",Name.File()); + fprintf(File,"#define\t__ANIM_%s_HEADER__\n",Name.File()); + fprintf(File,"\n"); + fprintf(File,"\n"); + fprintf(File,"enum\tANIM_%s_LIST\n",Name.File()); + fprintf(File,"{\n"); + +int ListSize=AnimList.size(); + for (int i=0; i const &Files = MyFiles.GetFileInfoVector(); AnimBank.Write(OutStr); + if (!IncludeFile.Empty()) + { + AnimBank.WriteInclude(IncludeFile); + } + return 0; } diff --git a/Utils/MkAnim3d/MkAnim3d.h b/Utils/MkAnim3d/MkAnim3d.h index c85aa01a8..2a0f6a930 100644 --- a/Utils/MkAnim3d/MkAnim3d.h +++ b/Utils/MkAnim3d/MkAnim3d.h @@ -15,6 +15,7 @@ struct sBoneAnim struct sAnim { + GString Name; int FrameCount; vector BoneAnim; vector Move; @@ -33,6 +34,7 @@ public: void Add(GString const &Filename); void Write(GString &Filename); + void WriteInclude(GString const &IncludeFile); private: int ProcessSkelMove(CScene &Scene,sAnim &ThisAnim,int Idx);