diff --git a/Utils/MapEdit/Core.cpp b/Utils/MapEdit/Core.cpp index 19be44d46..9d3ebdeb9 100644 --- a/Utils/MapEdit/Core.cpp +++ b/Utils/MapEdit/Core.cpp @@ -50,7 +50,7 @@ void CCore::Init(CMapEditView *Wnd) ActiveLayer=0; MapPos.x=MapPos.y=MapPos.z=0; UpdateView(0,0,0); - CTileSet NewSet("c:/SpongeBob/graphics/test.gin"); + CTileSet NewSet("c:/temp/test.gin",this); TileSet.push_back(NewSet); } @@ -70,6 +70,7 @@ void CCore::Render() Layers[i]->Render(MapPos,Test3dFlag); glDisable(GL_DEPTH_TEST); } + ParentWindow->Invalidate(); } diff --git a/Utils/MapEdit/Core.h b/Utils/MapEdit/Core.h index b7caed5ce..9bf36088b 100644 --- a/Utils/MapEdit/Core.h +++ b/Utils/MapEdit/Core.h @@ -10,6 +10,7 @@ #include "Layer.h" #include "LayerBack.h" +#include "TexCache.h" #include "TileSet.h" @@ -60,6 +61,7 @@ private: int ActiveLayer; std::vector TileSet; + CTexCache TexCache; }; diff --git a/Utils/MapEdit/Layer.cpp b/Utils/MapEdit/Layer.cpp index 18266c62d..37c6e6b96 100644 --- a/Utils/MapEdit/Layer.cpp +++ b/Utils/MapEdit/Layer.cpp @@ -82,11 +82,11 @@ extern GLint TestTile; void CLayer::Render2d(Vec &MapPos) { float XYDiv=GetLayerZPosDiv(); - +return; glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(MapPos.x/XYDiv,MapPos.y/XYDiv,MapPos.z); -/* + glBegin(GL_QUADS); SetTestColor(); BuildGLQuad(-1,LayerWidth+1,-1,0,0); // Bottom @@ -94,11 +94,12 @@ float XYDiv=GetLayerZPosDiv(); BuildGLQuad(-1,0,LayerHeight,0,0); // Left BuildGLQuad(LayerWidth,LayerWidth+1,LayerHeight,0,0); // Right glEnd(); -*/ - glCallList(TestTile); + + } /*****************************************************************************/ +float asd=0; void CLayer::Render3d(Vec &MapPos) { float ZOfs=GetLayerZPos(); @@ -107,7 +108,9 @@ float XYDiv=GetLayerZPosDiv(); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(MapPos.x/XYDiv,MapPos.y/XYDiv,MapPos.z-ZOfs); - + glRotatef(asd,0,1,0); + asd+=0.5; +/* glBegin(GL_QUADS); SetTestColor(); BuildGLBox(-1,LayerWidth+1,-1,0,0,0+1); // Bottom @@ -115,6 +118,8 @@ float XYDiv=GetLayerZPosDiv(); BuildGLBox(-1,0,LayerHeight,0,0,0+1); // Left BuildGLBox(LayerWidth,LayerWidth+1,LayerHeight,0,0,0+1); // Right glEnd(); +*/ + glCallList(TestTile); } diff --git a/Utils/MapEdit/MapEdit.dsp b/Utils/MapEdit/MapEdit.dsp index 9c20dfefd..71198fe44 100644 --- a/Utils/MapEdit/MapEdit.dsp +++ b/Utils/MapEdit/MapEdit.dsp @@ -78,7 +78,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 opengl32.lib glu32.lib win32lib.lib ginlib.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept /libpath:"..\ginlib\debug\\" /libpath:"..\GlibDev\glib\LIB\win32lib\debug\\" +# ADD LINK32 opengl32.lib glu32.lib win32lib.lib ginlib.lib glaux.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept /libpath:"..\ginlib\debug\\" /libpath:"..\GlibDev\glib\LIB\win32lib\debug\\" !ENDIF @@ -143,6 +143,22 @@ SOURCE=.\Core.h # End Source File # Begin Source File +SOURCE=.\TexCache.cpp +# End Source File +# Begin Source File + +SOURCE=.\TexCache.h +# End Source File +# Begin Source File + +SOURCE=.\Tile.cpp +# End Source File +# Begin Source File + +SOURCE=.\Tile.h +# End Source File +# Begin Source File + SOURCE=.\TileSet.cpp # End Source File # Begin Source File diff --git a/Utils/MapEdit/TexCache.cpp b/Utils/MapEdit/TexCache.cpp new file mode 100644 index 000000000..80889000a --- /dev/null +++ b/Utils/MapEdit/TexCache.cpp @@ -0,0 +1,39 @@ +/*********************/ +/*** Texture Cache ***/ +/*********************/ + +#include "stdafx.h" +#include "gl3d.h" +#include +#include +#include +#include + +#include "TexCache.h" +#include "utils.h" + +/*****************************************************************************/ +/*****************************************************************************/ +/*****************************************************************************/ +int CTexCache::ProcessTexture(char *TexName) +{ +// TRACE3("%i %s\t%i Tris\n",Id,ThisNode.GetName(),TriCount); +int ListSize=TexList.size(); + +// Check if Tex exists + for (int Count=0;Count +#include +#include +#include + +struct sTex +{ + char Name[256]; + GLuint TexID; +}; + +/*****************************************************************************/ +/*****************************************************************************/ +/*****************************************************************************/ +class CTexCache +{ +public: + + int ProcessTexture(char *TexName); + int AddTexture(char *TexName); + + + std::vector TexList; + +}; + +/*****************************************************************************/ +#endif \ No newline at end of file diff --git a/Utils/MapEdit/TileSet.cpp b/Utils/MapEdit/TileSet.cpp index d5650c25f..b43b2cd13 100644 --- a/Utils/MapEdit/TileSet.cpp +++ b/Utils/MapEdit/TileSet.cpp @@ -17,10 +17,10 @@ /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ -CTileSet::CTileSet(char *_Filename) +CTileSet::CTileSet(char *_Filename,CCore *Core) { strcpy(Filename,_Filename); - Load(); + Load(Core); } /*****************************************************************************/ @@ -33,18 +33,23 @@ CTileSet::~CTileSet() /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ -int CTileSet::Load() +int CTileSet::Load(CCore *Core) { CScene Scene; Scene.Load(Filename); -int NodeCount=Scene.GetSceneNodeCount(); - - for (int i=1;i const &Tex=Scene.GetTexNames(); @@ -57,42 +62,3 @@ std::vector const &Tex=Scene.GetTexNames(); return(1); } -/*****************************************************************************/ -/*****************************************************************************/ -/*****************************************************************************/ -extern GLint TestTile; -void CTileSet::AddTileToSet(CScene &ThisScene,int Id) -{ -CNode &ThisNode=ThisScene.GetNode(Id); -std::vector const &TriList=ThisNode.GetTris(); -std::vectorconst &VtxList=ThisNode.GetRelPts(); -int TriCount=TriList.size(); -GLint ThisTile; - - ThisTile=glGenLists(1); - glNewList(ThisTile,GL_COMPILE); - glColor3f(0.5,0.5,0); - glBegin (GL_TRIANGLES); - - TRACE3("%i %s\t%i Tris\n",Id,ThisNode.GetName(),TriCount); - - for (int T=0; T #include +#include "TexCache.h" +#include "Tile.h" +//#include "GinTex.h" + /*****************************************************************************/ -class CScene; -class CNode; +/*****************************************************************************/ +/*****************************************************************************/ +class CCore; class CTileSet { public: - CTileSet(char *Filename); + CTileSet(char *Filename,CCore *Core); ~CTileSet(); - int Load(); - void AddTileToSet(CScene &ThisScene,int Id); + int Load(CCore *Core); private: char Filename[256]; - std::vector Tile; + std::vector Tile; }; diff --git a/Utils/MapEdit/utils.cpp b/Utils/MapEdit/utils.cpp index 1f3a302c3..e46712213 100644 --- a/Utils/MapEdit/utils.cpp +++ b/Utils/MapEdit/utils.cpp @@ -3,10 +3,13 @@ /*************/ #include "stdafx.h" +//#include // Header File For Windows +//#include // Header File For Standard Input/Output #include "gl3d.h" #include #include #include +#include // Header File For The Glaux Library #include "GLEnabledView.h" #include "maths.h" @@ -155,3 +158,52 @@ TVECTOR Out; /**************************************************************************************/ /**************************************************************************************/ /**************************************************************************************/ +AUX_RGBImageRec *LoadBMP(char *Filename) +{ +FILE *File=NULL; + + File=fopen(Filename,"r"); + + if (File) + { + fclose(File); + return auxDIBImageLoad(Filename); + } + + return NULL; +} + +/**************************************************************************************/ +int LoadGLTexture(char *FileName, GLuint &Text) +{ +AUX_RGBImageRec *TextureImage[1]; +int Status=FALSE; + + memset(TextureImage,0,sizeof(void *)*1); // Init Buffer + + // Load The Bitmap, Check For Errors, If Bitmap's Not Found Quit + if (TextureImage[0]=LoadBMP(FileName)) + { + Status=TRUE; // Set The Status To TRUE + + glGenTextures(1, &Text); // Create The Texture + + // Typical Texture Generation Using Data From The Bitmap + glBindTexture(GL_TEXTURE_2D, Text); + glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data); + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); + } + + if (TextureImage[0]) // If Texture Exists + { + if (TextureImage[0]->data) // If Texture Image Exists + { + free(TextureImage[0]->data); // Free The Texture Image Memory + } + + free(TextureImage[0]); // Free The Image Structure + } + + return Status; // Return The Status +} diff --git a/Utils/MapEdit/utils.h b/Utils/MapEdit/utils.h index 30ce39306..dfdccb0d4 100644 --- a/Utils/MapEdit/utils.h +++ b/Utils/MapEdit/utils.h @@ -10,9 +10,11 @@ /**************************************************************************************/ void DbgMsg(const char * pszFmt,...); + void BuildGLBox(float XMin,float XMax,float YMin,float YMax,float ZMin,float ZMax); void BuildGLBoxNoNormals(float XMin,float XMax,float YMin,float YMax,float ZMin,float ZMax); void BuildGLQuad(float XMin,float XMax,float YMin,float YMax,float Z); +int LoadGLTexture(char *FileName, GLuint &Text); void TNormalise(TVECTOR &V); TVECTOR TCrossProduct(TVECTOR const &V0,TVECTOR const &V1,const TVECTOR &V2 );