From eb27a81e2c1f5c8dddf8ee89b6cd3dfaef10694c Mon Sep 17 00:00:00 2001 From: Daveo Date: Mon, 23 Apr 2001 14:51:44 +0000 Subject: [PATCH] --- Utils/MapEdit/Export.cpp | 21 ++- Utils/MapEdit/Export.h | 5 +- Utils/MapEdit/ExportHdr.h | 3 +- Utils/MapEdit/LayerPlatform.cpp | 17 ++- Utils/MapEdit/LayerPlatform.h | 2 + Utils/MapEdit/LayerThing.cpp | 6 +- Utils/MapEdit/LayerThing.h | 3 +- Utils/MkLevel/Layers/MkLevelLayerPlatform.cpp | 15 +- Utils/MkLevel/Layers/MkLevelLayerPlatform.h | 2 + Utils/MkLevel/MkLevel.cpp | 131 ++++++++++++++---- Utils/MkLevel/MkLevel.h | 23 ++- 11 files changed, 178 insertions(+), 50 deletions(-) diff --git a/Utils/MapEdit/Export.cpp b/Utils/MapEdit/Export.cpp index 59a343898..22761ee50 100644 --- a/Utils/MapEdit/Export.cpp +++ b/Utils/MapEdit/Export.cpp @@ -56,7 +56,7 @@ int LayerCount=LayerOfs.size(); } /*****************************************************************************/ -void PadFile(FILE *File) +void CExport::PadFile() { int Pad=ftell(File) & 3; @@ -75,7 +75,7 @@ void CExport::Write(void *Addr,int Len) /*****************************************************************************/ int CExport::ExportLayerHeader(sLayerDef &LayerDef)//(int Type,int SubType,int Width,int Height) { - PadFile(File); + PadFile(); sExpLayerHdr LayerHdr; int ThisFilePos=ftell(File); @@ -143,7 +143,10 @@ CTileBank *TileBank=Core->GetTileBank(); ASSERT(ThisTile.GetElemWidth()==FileHdr.TileW); ASSERT(ThisTile.GetElemHeight()==FileHdr.TileH); - if (ThisTile.IsElem3d()) ExportTile3d(Core,ThisTile,OutTile); + if (ThisTile.IsElem3d()) + { + ExportTile3d(Core,ThisTile,OutTile); + } OutTile.Set=SetNames.Add(SetName); fwrite(&OutTile,sizeof(sExpTile),1,File); fwrite(ThisTile.GetElemRGB(),FileHdr.TileW*FileHdr.TileH*3,1,File); // Write RGB @@ -154,14 +157,18 @@ CTileBank *TileBank=Core->GetTileBank(); /*****************************************************************************/ void CExport::ExportTile3d(CCore *Core,CElem &ThisTile,sExpTile &OutTile) +{ + ExportElem3d(Core,ThisTile,OutTile.TriStart,OutTile.TriCount); +} + +/*****************************************************************************/ +void CExport::ExportElem3d(CCore *Core,CElem &ThisTile,int &TriStart,int &TriCount) { CTexCache &TexCache=Core->GetTexCache(); std::vector &TileTriList=ThisTile.GetTriList(); -int TriCount=TileTriList.size(); - - OutTile.TriStart=TriList.size(); - OutTile.TriCount=TriCount; + TriStart=TriList.size(); + TriCount=TileTriList.size(); for (int T=0; TGetElem(ThisThing.ElemID,0); + + Exp.ExportElem3d(Core,ThisElem,OutThing.TriStart,OutThing.TriCount); + +} diff --git a/Utils/MapEdit/LayerPlatform.h b/Utils/MapEdit/LayerPlatform.h index e40248f04..03ea155b6 100644 --- a/Utils/MapEdit/LayerPlatform.h +++ b/Utils/MapEdit/LayerPlatform.h @@ -38,6 +38,8 @@ public: void GUIThingUpdate(bool OnlySel=false); void GUIThingPointUpdate(bool OnlySel=false); + void Export(CCore *Core,CExport &Exp); + void ExportThingData(CCore *Core,CExport &Exp,sLayerThing &ThisThing,sLayerThingData &OutThing); protected: void SetThingParams(sLayerThing &Thing); diff --git a/Utils/MapEdit/LayerThing.cpp b/Utils/MapEdit/LayerThing.cpp index 724cbba5b..a221fba41 100644 --- a/Utils/MapEdit/LayerThing.cpp +++ b/Utils/MapEdit/LayerThing.cpp @@ -720,18 +720,19 @@ int i,ListSize=ThingList.size(); Exp.Write(&ListSize,sizeof(int)); for (i=0;iAddPlatform(ThisThing); + } + + printf("%i Platforms\n",ThingList.size()); } /*****************************************************************************/ @@ -25,8 +37,6 @@ void CMkLevelLayerPlatform::PreProcess(CMkLevel *Core) /*****************************************************************************/ void CMkLevelLayerPlatform::Process(CMkLevel *Core) { - ProcessList(Core); - printf("%i Platforms\n",ThingList.size()); } /*****************************************************************************/ @@ -54,6 +64,7 @@ int i,ListSize=ThingList.size(); OutThing.TurnRate=ThisThing.Data.TurnRate; OutThing.Flags=ThisThing.Data.CollisionFlag; OutThing.PointCount=PointCount; + OutThing.Gfx=RemapTable[i]; fwrite(&OutThing,sizeof(sThingPlatform),1,File); for (p=0;p RemapTable; + }; /*****************************************************************************/ diff --git a/Utils/MkLevel/MkLevel.cpp b/Utils/MkLevel/MkLevel.cpp index ae207a9a8..e2695cdca 100644 --- a/Utils/MkLevel/MkLevel.cpp +++ b/Utils/MkLevel/MkLevel.cpp @@ -111,7 +111,6 @@ GFName Path; FlatFace[1].uv[0][0]=0; FlatFace[1].uv[0][1]=0; FlatFace[1].uv[1][0]=1; FlatFace[1].uv[1][1]=1; FlatFace[1].uv[2][0]=0; FlatFace[1].uv[2][1]=1; - } //*************************************************************************** @@ -146,7 +145,7 @@ int Size; //*************************************************************************** void CMkLevel::LoadStrList(CList &List,char *TexPtr,int Count) { -char FullName[256]; +char FullName[1024]; GString FilePath; for (int i=0; iThisTri.vtx[1].z) ThisZPos=ThisTri.vtx[1].z; - if (ThisZPos>ThisTri.vtx[2].z) ThisZPos=ThisTri.vtx[2].z; + if (ThisZPosThisZPos) break; } SortList.insert(ListPos,ThisTri); ZPosList.insert(ListPos,ThisZPos); @@ -443,8 +499,8 @@ int TileID=OutTile3dList.size(); } else - { // create flat tile - int TexID=Create2dTex(InTile); + { // create flat tile (This is WRONG, flip tex are gen, need to flip goem) + int TexID=Create2dTex(InTile.Tile,InTile.Flags); ThisTile.TriCount=2; for (int i=0; i<2; i++) @@ -452,6 +508,7 @@ int TileID=OutTile3dList.size(); FlatFace[i].TexID=TexID; SortList.push_back(FlatFace[i]); } + InTile.Flags=0; } // Add sorted list to main list @@ -475,10 +532,10 @@ int TileID=OutTile3dList.size(); for (p=0; p<3; p++) { F.vtx[p]=ThisTri.vtx[p]; + F.vtx[p].y=F.vtx[p].y; F.uvs[p].u=ThisTri.uv[p][0]; F.uvs[p].v=ThisTri.uv[p][1]; } - // Flip 3d tiles if (InTile.Flags & PC_TILE_FLAG_MIRROR_X) { @@ -495,6 +552,7 @@ int TileID=OutTile3dList.size(); F.vtx[2].y =1.0-F.vtx[2].y; SwapPnt^=1; } + if (SwapPnt) { Vector3 TmpV=F.vtx[0]; @@ -504,12 +562,7 @@ int TileID=OutTile3dList.size(); F.uvs[0]=F.uvs[1]; F.uvs[1]=TmpUV; } -// Adjust Depth - for (p=0;p<3;p++) - { -// F.vtx[p].z-=4.0f; -// printf("%f\n",F.vtx[p].z); - } + OutFaceList.AddFace(F,true); } @@ -521,15 +574,14 @@ int TileID=OutTile3dList.size(); //*************************************************************************** -int CMkLevel::Create2dTex(sExpLayerTile &InTile) +int CMkLevel::Create2dTex(int Tile,int Flags) { -sExpTile &SrcTile=InTileList[InTile.Tile]; +sExpTile &SrcTile=InTileList[Tile]; int Idx; sMkLevelTex InTex; -// InTex.Set=UsedSetNameList.Add(InSetNameList[SrcTile.Set]); - InTex.Set=SrcTile.Set;//UsedSetNameList.Add(InSetNameList[SrcTile.Set]); - InTex.Flags=InTile.Flags; + InTex.Set=SrcTile.Set; + InTex.Flags=Flags; InTex.XOfs=SrcTile.XOfs; InTex.YOfs=SrcTile.YOfs; InTex.RGB=SrcTile.RGB; @@ -550,7 +602,6 @@ sMkLevelTex InTex; //*************************************************************************** int CMkLevel::BuildTileTex(sMkLevelTex &InTex) { - ASSERT(InTex.Set>=0 && InTex.Set const &VtxList=OutFaceList.GetVtxList(); int i,ListSize=VtxList.size(); int Pos=ftell(File); -sVtx Ofs; +//sVtx Ofs; - Ofs.vx=-0; - Ofs.vy=-0; - Ofs.vz=-4*Scale; +// Ofs.vx=-0; +// Ofs.vy=-0; +// Ofs.vz=-4*Scale; for (i=0; i BmpList; + CList PlatformList; vector LayerList; sLevelHdr LevelHdr; -// sTileBankHdr TileBankHdr; sExpTri FlatFace[2]; };