diff --git a/Utils/Libs/DaveLib/DaveLib.dsp b/Utils/Libs/DaveLib/DaveLib.dsp index 46aff33b7..06ef6f1dc 100644 --- a/Utils/Libs/DaveLib/DaveLib.dsp +++ b/Utils/Libs/DaveLib/DaveLib.dsp @@ -42,7 +42,7 @@ RSC=rc.exe # PROP Target_Dir "" MTL=midl.exe # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\glib" /I "..\ginlib" /I "..\maths" /I "..\texgrab" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD CPP /nologo /G6 /MD /W3 /GX /O2 /I "..\glib" /I "..\ginlib" /I "..\maths" /I "..\texgrab" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" BSC32=bscmake.exe diff --git a/Utils/Libs/DaveLib/facestore.cpp b/Utils/Libs/DaveLib/facestore.cpp index f81cbb276..0da775c9a 100644 --- a/Utils/Libs/DaveLib/facestore.cpp +++ b/Utils/Libs/DaveLib/facestore.cpp @@ -82,7 +82,7 @@ inline bool uvaprox( sUV &uv0, sUV &uv1 ) } //*************************************************************************** -CFace &CFaceStore::AddFace(vector const &P, const sGinTri &T, const sUVTri &uv,GString const &Tex,int ID) +CFace &CFaceStore::AddFace(vector const &P, const sGinTri &T, const sUVTri &uv,GString const &Tex,int ID,bool ProcessTexFlag ) { //int ListSize = FaceList.size(); // FaceList.resize(ListSize+1); @@ -104,7 +104,7 @@ CFace F; F.TexName=Tex; F.Mat = -1; - return(AddFace(F)); + return(AddFace(F,ProcessTexFlag)); } //*************************************************************************** @@ -174,7 +174,7 @@ CFace &F = FaceList[ListSize]; F.Mat = Face.Mat; F.Normal = crossProduct( F.vtx[0], F.vtx[1], F.vtx[2] ); F.Avail = true; - F.ID=ID=0; + F.ID=ID; return(F); } @@ -243,11 +243,82 @@ int FaceCount=FaceList.size(); //*************************************************************************** //*************************************************************************** //*************************************************************************** +/* void CFaceStore::SetupUV(CFace const &In, sTri &Out) { vector &TexInfo=TexGrab->GetTexInfo(); sTexOutInfo &ThisTex=TexInfo[In.Mat]; ASSERT(In.Mat &TexInfo=TexGrab->GetTexInfo(); +sTexOutInfo &ThisTex=TexInfo[In.Mat]; +ASSERT(In.Mat &List) { -int ListSize=OutTriList.size(); +int ListSize=List.size(); int Pos=ftell(File); for (int i=0; i &List) { -int ListSize=OutQuadList.size(); +int ListSize=List.size(); int Pos=ftell(File); for (int i=0; i &List) { -int ListSize=OutVtxList.size(); +int ListSize=List.size(); int Pos=ftell(File); for (int i=0; ivx; - ThisVtx.vy*=Mul->vy; - ThisVtx.vz*=Mul->vz; - } + sVtx &ThisVtx=List[i]; fwrite(&ThisVtx,1,sizeof(sVtx),File); } return(Pos); diff --git a/Utils/Libs/DaveLib/facestore.h b/Utils/Libs/DaveLib/facestore.h index 838300b9c..9d57fe3b5 100644 --- a/Utils/Libs/DaveLib/facestore.h +++ b/Utils/Libs/DaveLib/facestore.h @@ -86,7 +86,7 @@ public: CFaceStore(int Max) {MaxStrip=Max;TexGrab=&FaceStoreTexGrab;} ~CFaceStore(){}; - CFace &AddFace(vector const &P, const sGinTri &T, const sUVTri &uv,GString const &Tex,int ID=0); + CFace &AddFace(vector const &P, const sGinTri &T, const sUVTri &uv,GString const &Tex,int ID=0,bool ProcessTexFlag=false); CFace &AddFace(CFace &F,bool TexFlag=true); void AddFaces(vector&Faces,bool TexFlag=true); void AddFaces(CFaceStore &Faces,bool TexFlag=true); @@ -111,9 +111,14 @@ public: void ProcessTextures(); void Process(); - int WriteTriList(FILE *File); - int WriteQuadList(FILE *File); - int WriteVtxList(FILE *File,sVtx *Mul=0); + + int WriteTriList(FILE *File) {return(WriteTriList(File,OutTriList));} + int WriteQuadList(FILE *File) {return(WriteQuadList(File,OutQuadList));} + int WriteVtxList(FILE *File) {return(WriteVtxList(File,OutVtxList));} + + int WriteTriList(FILE *File,vector &List); + int WriteQuadList(FILE *File,vector &List); + int WriteVtxList(FILE *File,vector &List); vector const &GetFaceList() {return(FaceList);} diff --git a/Utils/Libs/GLib/Glib.dsp b/Utils/Libs/GLib/Glib.dsp index 39b67cfea..937a1745d 100644 --- a/Utils/Libs/GLib/Glib.dsp +++ b/Utils/Libs/GLib/Glib.dsp @@ -42,7 +42,7 @@ RSC=rc.exe # PROP Target_Dir "" MTL=midl.exe # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /FR"Release/" /Fp"Release/Glib.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c +# ADD CPP /nologo /G6 /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /FR"Release/" /Fp"Release/Glib.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" BSC32=bscmake.exe diff --git a/Utils/Libs/GinLib/ginlib.dsp b/Utils/Libs/GinLib/ginlib.dsp index da3aa309c..a019afce6 100644 --- a/Utils/Libs/GinLib/ginlib.dsp +++ b/Utils/Libs/GinLib/ginlib.dsp @@ -42,7 +42,7 @@ RSC=rc.exe # PROP Target_Dir "" MTL=midl.exe # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\glib" /I "..\maths" /I "..\davelib" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /G6 /MD /W3 /GX /O2 /I "..\glib" /I "..\maths" /I "..\davelib" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" BSC32=bscmake.exe diff --git a/Utils/Libs/Maths/maths.dsp b/Utils/Libs/Maths/maths.dsp index c2795c24e..939a24f2a 100644 --- a/Utils/Libs/Maths/maths.dsp +++ b/Utils/Libs/Maths/maths.dsp @@ -42,7 +42,7 @@ RSC=rc.exe # PROP Target_Dir "" MTL=midl.exe # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD CPP /nologo /G6 /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" BSC32=bscmake.exe diff --git a/Utils/Libs/TexGrab/TexGrab.dsp b/Utils/Libs/TexGrab/TexGrab.dsp index c7e8f45f8..047fe9d6d 100644 --- a/Utils/Libs/TexGrab/TexGrab.dsp +++ b/Utils/Libs/TexGrab/TexGrab.dsp @@ -42,7 +42,7 @@ RSC=rc.exe # PROP Target_Dir "" MTL=midl.exe # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\glib" /I "..\ginlib" /I "..\maths" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD CPP /nologo /G6 /MD /W3 /GX /O2 /I "..\glib" /I "..\ginlib" /I "..\maths" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" BSC32=bscmake.exe diff --git a/Utils/Libs/TexGrab/sprset.cpp b/Utils/Libs/TexGrab/sprset.cpp index ef094a561..3c0f47301 100644 --- a/Utils/Libs/TexGrab/sprset.cpp +++ b/Utils/Libs/TexGrab/sprset.cpp @@ -399,7 +399,9 @@ GString CurrDir; ThisInfo.w=Frm.GetWidth(); ThisInfo.h=Frm.GetHeight(); ThisInfo.XOfs=Frm.GetX(); - ThisInfo.XOfs=Frm.GetY(); + ThisInfo.YOfs=Frm.GetY(); + ThisInfo.OrigW=Frm.GetOrigW(); + ThisInfo.OrigH=Frm.GetOrigH(); } } @@ -847,6 +849,8 @@ void SprFrame::SetFrameAndInfo(Frame const & Fr,FileInfo const & NewMyFileInfo,i Frame::CopyFrame(Fr); MyFileInfo=NewMyFileInfo; + OrigW=Fr.GetWidth(); + OrigH=Fr.GetHeight(); GFName MyName(MyFileInfo.GetFileName()); GString TempName=MyName.File(); diff --git a/Utils/Libs/TexGrab/sprset.h b/Utils/Libs/TexGrab/sprset.h index 68e8b6085..8ba8982cc 100644 --- a/Utils/Libs/TexGrab/sprset.h +++ b/Utils/Libs/TexGrab/sprset.h @@ -52,6 +52,7 @@ struct sTexOutInfo bool Rotated; int u,v,w,h; int XOfs,YOfs; + int OrigW,OrigH; }; /* Encapsulates a file and all the infomation parkgrab needs to process it @@ -83,6 +84,8 @@ class FileInfo ForceOffsets=Fi.ForceOffsets; XOff=Fi.XOff; YOff=Fi.YOff; + XOff1=Fi.XOff1; + YOff1=Fi.YOff1; ShrinkToFit=Fi.ShrinkToFit; m_allocateAs16Bit=Fi.m_allocateAs16Bit; MemFrame=Fi.MemFrame; @@ -186,6 +189,15 @@ class FileInfo { return(YOff); } + int GetXOff1(void) const + { + return(XOff1); + } + + int GetYOff1(void) const + { + return(YOff1); + } bool getAllocateAs16Bit(void) const {return(m_allocateAs16Bit);} @@ -217,6 +229,7 @@ class FileInfo bool m_allocateAs16Bit; int XOff,YOff; + int XOff1,YOff1; Frame *MemFrame; }; @@ -463,6 +476,9 @@ public: int getY(void) {return(Y);} + int GetOrigW() {return(OrigW);} + int GetOrigH() {return(OrigH);} + int getW(void) { if (MyFileInfo.GetMoveUVs() && Width && !MyFileInfo.getAllocateAs16Bit()) @@ -494,6 +510,8 @@ protected: PalIndex=NewFrame.PalIndex; MyFileInfo=NewFrame.MyFileInfo; MyRect=NewFrame.MyRect; + OrigW=NewFrame.OrigW; + OrigH=NewFrame.OrigH; } @@ -507,6 +525,7 @@ protected: int PalIndex; FileInfo MyFileInfo; TPRect MyRect; + int OrigW,OrigH; }; /* A collection of sprites diff --git a/Utils/MapEdit/Elem.cpp b/Utils/MapEdit/Elem.cpp index 872c1f61a..97483fd4f 100644 --- a/Utils/MapEdit/Elem.cpp +++ b/Utils/MapEdit/Elem.cpp @@ -332,6 +332,26 @@ int ColFlags=Flags >> PC_TILE_FLAG_COLLISION_SHIFT; glPopMatrix(); } +/*****************************************************************************/ +void CElem::RenderInvalid() +{ +float X0=0; +float X1=UnitWidth; +float Y0=0; +float Y1=UnitHeight; + + glBindTexture(GL_TEXTURE_2D, 0); + glBegin(GL_LINES); + glColor4f(1,1,1,1); + + glVertex3f( X0,Y0,0); + glVertex3f( X1,Y1,0); + + glVertex3f( X1,Y0,0); + glVertex3f( X0,Y1,0); + glEnd(); +} + /*****************************************************************************/ void CElem::Purge() { diff --git a/Utils/MapEdit/Elem.h b/Utils/MapEdit/Elem.h index 32217fbe0..b3f0b2391 100644 --- a/Utils/MapEdit/Elem.h +++ b/Utils/MapEdit/Elem.h @@ -47,6 +47,7 @@ public: void Purge(); void Render(int Flags,bool Render3d); + void RenderInvalid(); int GetElemWidth() {return(ElemWidth);} int GetElemHeight() {return(ElemHeight);} @@ -116,6 +117,7 @@ const char *GetName() {return(Name);} int GetBrowserWidth() {return(ElemBrowserWidth);} void RenderElem(int Elem,int Flags,bool Render3d) {ElemList[Elem].Render(Flags,Render3d);} + void RenderInvalid() {ElemList[0].RenderInvalid();} CElem &GetElem(int No) {return(ElemList[No]);} void Purge(); bool IsValid(int No); diff --git a/Utils/MapEdit/TileSet.cpp b/Utils/MapEdit/TileSet.cpp index 54f27d970..0e9d4e0e4 100644 --- a/Utils/MapEdit/TileSet.cpp +++ b/Utils/MapEdit/TileSet.cpp @@ -138,6 +138,19 @@ GString SavePath; CElemBank::Save(File); } +/*****************************************************************************/ +void CTileBank::RenderTile(int Set,int Elem,int Flags,bool Is3d) +{ + if (IsValid(Set,Elem)) + { + SetList[Set].RenderElem(Elem,Flags,Is3d); + } + else + { + SetList[0].RenderInvalid(); + } + +} /*****************************************************************************/ void CTileBank::DeleteCurrent() { diff --git a/Utils/MapEdit/TileSet.h b/Utils/MapEdit/TileSet.h index 896c0edc7..019113564 100644 --- a/Utils/MapEdit/TileSet.h +++ b/Utils/MapEdit/TileSet.h @@ -69,7 +69,7 @@ public: const char *GetSetName(int Set) {return(SetList[Set].GetName());} const char *GetSetFilename(int Set) {return(SetList[Set].GetFilename());} CElem &GetTile(int Set,int Tile) {return(SetList[Set].GetElem(Tile));} - void RenderTile(int Set,int Elem,int Flags,bool Is3d) {SetList[Set].RenderElem(Elem,Flags,Is3d);} + void RenderTile(int Set,int Elem,int Flags,bool Is3d); // Local void DeleteCurrent(); diff --git a/Utils/MkActor3d/MkActor3d.cpp b/Utils/MkActor3d/MkActor3d.cpp index 19413b045..a81dcefca 100644 --- a/Utils/MkActor3d/MkActor3d.cpp +++ b/Utils/MkActor3d/MkActor3d.cpp @@ -109,7 +109,6 @@ int i,ListSize; if (OutStr.Empty()) Usage("No Output File Set\n"); vector const &Files = MyFiles.GetFileInfoVector(); - for (i=0; i const &Files = MyFiles.GetFileInfoVector(); ActorList[i].ActorProcess(); ActorList[i].AnimLoad(); } - CMkActor3d::TexProcess(); + CMkActor3d::TexGrab.Process(); for (i=0; iSceneTexList.size()) GObject::Error(ERR_FATAL,"Crap Material ID, wanted %i, only have %i\n",Mat,SceneTexList.size()); GString TexName=InPath+SceneTexList[Mat]; - ParentBone.FaceList.AddFace( VtxList, NodeTriList[T], NodeUVList[T], TexName); + Scale*=16;; + ParentBone.FaceList.AddFace( VtxList, NodeTriList[T], NodeUVList[T], TexName,0,false); + Scale/=16;; } } @@ -306,6 +309,7 @@ void CMkActor3d::BuildSkelOut() int ListSize=Skel.size(); BoneCount=Skel.size(); + FaceList.SetTexGrab(TexGrab); for (int i=0; i const &InList,vector &OutList) +{ +int i,ListSize=InList.size(); +int S=16; + + OutList.resize(ListSize); + if (!ListSize) return; + printf("Rescale Factor %i\n",S); + + for (i=0; i VtxList; + Rescale(FaceList.GetVtxList(),VtxList); + FileHdr.VtxList=(sVtx*)FaceList.WriteVtxList(File,VtxList); + printf("V:%i\t",FileHdr.VtxCount); // Write TexList diff --git a/Utils/MkActor3d/MkActor3d.dsp b/Utils/MkActor3d/MkActor3d.dsp index 4436167a5..000a53350 100644 --- a/Utils/MkActor3d/MkActor3d.dsp +++ b/Utils/MkActor3d/MkActor3d.dsp @@ -42,7 +42,7 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\libs\glib" /I "..\libs\maths" /I "..\libs\davelib" /I "..\libs\ginlib" /I "..\libs\texgrab" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c +# ADD CPP /nologo /G6 /MD /W3 /GX /O2 /I "..\libs\glib" /I "..\libs\maths" /I "..\libs\davelib" /I "..\libs\ginlib" /I "..\libs\texgrab" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" BSC32=bscmake.exe diff --git a/Utils/MkActor3d/MkActor3d.h b/Utils/MkActor3d/MkActor3d.h index 9578e67b7..9917a2b23 100644 --- a/Utils/MkActor3d/MkActor3d.h +++ b/Utils/MkActor3d/MkActor3d.h @@ -39,7 +39,7 @@ public: CMkActor3d(GString const &In); static void SetTPData(const char *Name,int TPBase,int TPW,int TPH); -static void TexProcess() {TexGrab.Process();} +//static void TexProcess() {TexGrab.Process();} void ActorLoad(); void ActorProcess(); @@ -48,6 +48,8 @@ static void TexProcess() {TexGrab.Process();} void AnimLoad(); void AnimWrite(); +static CTexGrab TexGrab; + private: void ReadScript(const char *Filename,vector &List); @@ -70,7 +72,6 @@ private: std::vector InTexList; std::vector InAnimList; -static CTexGrab TexGrab; /*Anim*/ void AnimWriteInclude(); diff --git a/tools/Data/bin/MkLevel.exe b/tools/Data/bin/MkLevel.exe index 79158b2c8..11120d00d 100644 Binary files a/tools/Data/bin/MkLevel.exe and b/tools/Data/bin/MkLevel.exe differ