From 7123b53ece3ae5623240f6b6419ed785a635e782 Mon Sep 17 00:00:00 2001 From: Daveo Date: Wed, 22 Nov 2000 22:08:47 +0000 Subject: [PATCH] --- Utils/MapEdit/Core.cpp | 9 ++- Utils/MapEdit/Core.h | 3 + Utils/MapEdit/LayerTile.cpp | 52 ++-------------- Utils/MapEdit/LayerTile.h | 3 +- Utils/MapEdit/MapEdit.clw | 68 +++++++++++---------- Utils/MapEdit/MapEdit.rc | 5 ++ Utils/MapEdit/MapEditDoc.cpp | 8 ++- Utils/MapEdit/MapEditDoc.h | 1 + Utils/MapEdit/MapEditView.cpp | 5 +- Utils/MapEdit/MapEditView.h | 1 + Utils/MapEdit/TexCache.cpp | 112 +++++++++++++++++++++++++++++----- Utils/MapEdit/TexCache.h | 20 +++++- Utils/MapEdit/TileSet.cpp | 63 +++++++++++-------- Utils/MapEdit/TileSet.h | 11 +++- Utils/MapEdit/resource.h | 3 +- Utils/MapEdit/utils.cpp | 91 +++++++++++++-------------- Utils/MapEdit/utils.h | 16 ++++- 17 files changed, 294 insertions(+), 177 deletions(-) diff --git a/Utils/MapEdit/Core.cpp b/Utils/MapEdit/Core.cpp index 434f68e5e..bfaa210fd 100644 --- a/Utils/MapEdit/Core.cpp +++ b/Utils/MapEdit/Core.cpp @@ -509,4 +509,11 @@ int ListSize=Layer.size(); } UpdateView(View); -} \ No newline at end of file +} + +/*****************************************************************************/ +void CCore::Toggle2d3d(CMapEditView *View) +{ + Is3dFlag=!Is3dFlag; + UpdateView(View); +} diff --git a/Utils/MapEdit/Core.h b/Utils/MapEdit/Core.h index 1ad23dee6..b77050740 100644 --- a/Utils/MapEdit/Core.h +++ b/Utils/MapEdit/Core.h @@ -87,6 +87,9 @@ public: int GetMapWidth() {return(Layer[LAYER_ACTION]->GetWidth());} int GetMapHeight() {return(Layer[LAYER_ACTION]->GetHeight());} + void Toggle2d3d(CMapEditView *View); + + private: CPoint CurrentMousePos,LastMousePos; CPoint CursorPos,LastCursorPos; diff --git a/Utils/MapEdit/LayerTile.cpp b/Utils/MapEdit/LayerTile.cpp index ae2fd98bf..c6ed47404 100644 --- a/Utils/MapEdit/LayerTile.cpp +++ b/Utils/MapEdit/LayerTile.cpp @@ -98,12 +98,12 @@ Vec ThisCam=CamPos/XYDiv; if (Is3d && Render3dFlag) { glEnable(GL_DEPTH_TEST); - Render3d(Core,ThisCam,Map); + Render(Core,ThisCam,Map,TRUE); glDisable(GL_DEPTH_TEST); } else { - Render2d(Core,ThisCam,Map); + Render(Core,ThisCam,Map,FALSE); } } @@ -124,57 +124,17 @@ CMap &Brush=TileBank.GetActiveBrush(); if (Is3d && Render3dFlag) { glEnable(GL_DEPTH_TEST); - Render3d(Core,ThisCam,Brush,0.5); + Render(Core,ThisCam,Brush,TRUE,0.5); glDisable(GL_DEPTH_TEST); } else { - Render2d(Core,ThisCam,Brush,0.5); + Render(Core,ThisCam,Brush,FALSE,0.5); } } /*****************************************************************************/ -void CLayerTile::Render2d(CCore *Core,Vec &CamPos,CMap &ThisMap,float Alpha) -{ - return; -int Width=ThisMap.GetWidth(); -int Height=ThisMap.GetHeight(); - - if (Alpha<1) - { - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Alpha Blend Style - glColor4f(0.5,0.5,0.5,Alpha); - } - else - { - glColor3f(0.5,0.5,0.5); - } - glMatrixMode(GL_MODELVIEW); - - for (int YLoop=0; YLoopGetTile(ThisElem.Set,ThisElem.Tile); - - glLoadIdentity(); // Slow way, but good to go for the mo - glTranslatef(CamPos.x+XLoop,CamPos.y-YLoop,CamPos.z); -// ThisTile.Render(); -int c=(XLoop+YLoop)&1; - glColor3f(c,1,1); - glBegin(GL_QUADS); - BuildGLQuad(0,1,0,1,0); - glEnd(); - - } - } - glDisable(GL_BLEND); -} - -/*****************************************************************************/ -void CLayerTile::Render3d(CCore *Core,Vec &CamPos,CMap &ThisMap,float Alpha) +void CLayerTile::Render(CCore *Core,Vec &CamPos,CMap &ThisMap,BOOL Render3d,float Alpha) { int Width=ThisMap.GetWidth(); int Height=ThisMap.GetHeight(); @@ -203,7 +163,7 @@ int Height=ThisMap.GetHeight(); glLoadIdentity(); // Slow way, but good to go for the mo glTranslatef(CamPos.x+XLoop,CamPos.y-YLoop,CamPos.z); - ThisTile.Render(ThisElem.Flags); + ThisTile.Render(ThisElem.Flags,Render3d); } } } diff --git a/Utils/MapEdit/LayerTile.h b/Utils/MapEdit/LayerTile.h index 748f2690b..b17c8e31f 100644 --- a/Utils/MapEdit/LayerTile.h +++ b/Utils/MapEdit/LayerTile.h @@ -70,8 +70,7 @@ public: BOOL MirrorY(CCore *Core); protected: - void Render2d(CCore *Core,Vec &CamPos,CMap &ThisMap,float Alpha=1.0f); - void Render3d(CCore *Core,Vec &CamPos,CMap &ThisMap,float Alpha=1.0f); + void Render(CCore *Core,Vec &CamPos,CMap &ThisMap,BOOL Render3d,float Alpha=1.0f); void RenderCursorPaint(CCore *Core,Vec &CamPos,BOOL Is3d); BOOL Paint(CMap &Blk,CPoint &CursorPos); diff --git a/Utils/MapEdit/MapEdit.clw b/Utils/MapEdit/MapEdit.clw index a6027373b..b72d4bb24 100644 --- a/Utils/MapEdit/MapEdit.clw +++ b/Utils/MapEdit/MapEdit.clw @@ -2,7 +2,7 @@ [General Info] Version=1 -LastClass=CLayerList +LastClass=CMapEditView LastTemplate=CDialog NewFileInclude1=#include "stdafx.h" NewFileInclude2=#include "mapedit.h" @@ -18,19 +18,19 @@ Class6=CMapEditDoc Class7=CMapEditView ResourceCount=10 -Resource1=IDD_MULTIBAR (English (U.S.)) -Resource2=IDD_LAYER_LIST_DIALOG +Resource1=IDD_ABOUTBOX (English (U.S.)) +Resource2=IDD_MULTIBAR (English (U.S.)) Resource3=IDD_GFXTOOLBAR Resource4=IDD_DIALOGBAR (English (U.S.)) Resource5=IDR_MAPEDITYPE (English (U.S.)) Class8=CMultiBar -Resource6=IDR_MAINFRAME (English (U.S.)) -Resource7=IDR_TOOLBAR (English (U.S.)) +Resource6=IDR_TOOLBAR (English (U.S.)) +Resource7=IDD_TILESET_DIALOG Class9=CLayerList Class10=CTileSetDlg -Resource8=IDD_ABOUTBOX (English (U.S.)) +Resource8=IDR_MAINFRAME (English (U.S.)) Class11=CGfxToolBar -Resource9=IDD_TILESET_DIALOG +Resource9=IDD_LAYER_LIST_DIALOG Class12=CMapSizeDlg Resource10=IDD_MAPSIZE @@ -79,7 +79,7 @@ Type=0 BaseClass=CGLEnabledView HeaderFile=MapEditView.h ImplementationFile=MapEditView.cpp -LastObject=CMapEditView +LastObject=ID_2D_3D_TOGGLE Filter=C VirtualFilter=VWC @@ -135,36 +135,38 @@ Command17=ID_MIRRORY Command18=ID_ACTIVEBRUSH_LEFT Command19=ID_ACTIVEBRUSH_RIGHT Command20=ID_TOGGLE_TILEVIEW -Command21=ID_WINDOW_NEW -Command22=ID_WINDOW_CASCADE -Command23=ID_WINDOW_TILE_HORZ -Command24=ID_WINDOW_ARRANGE -Command25=ID_APP_ABOUT -CommandCount=25 +Command21=ID_2D_3D_TOGGLE +Command22=ID_WINDOW_NEW +Command23=ID_WINDOW_CASCADE +Command24=ID_WINDOW_TILE_HORZ +Command25=ID_WINDOW_ARRANGE +Command26=ID_APP_ABOUT +CommandCount=26 [ACL:IDR_MAINFRAME (English (U.S.))] Type=1 Class=? Command1=ID_ACTIVEBRUSH_LEFT Command2=ID_ACTIVEBRUSH_RIGHT -Command3=ID_EDIT_COPY -Command4=ID_TOGGLE_GRID -Command5=ID_FILE_NEW -Command6=ID_FILE_OPEN -Command7=ID_FILE_SAVE -Command8=ID_EDIT_PASTE -Command9=ID_EDIT_UNDO -Command10=ID_EDIT_CUT -Command11=ID_EDIT_COPY -Command12=ID_EDIT_PASTE -Command13=ID_TOGGLE_TILEVIEW -Command14=ID_NEXT_PANE -Command15=ID_PREV_PANE -Command16=ID_MIRRORX -Command17=ID_EDIT_CUT -Command18=ID_MIRRORY -Command19=ID_EDIT_UNDO -CommandCount=19 +Command3=ID_2D_3D_TOGGLE +Command4=ID_EDIT_COPY +Command5=ID_TOGGLE_GRID +Command6=ID_FILE_NEW +Command7=ID_FILE_OPEN +Command8=ID_FILE_SAVE +Command9=ID_EDIT_PASTE +Command10=ID_EDIT_UNDO +Command11=ID_EDIT_CUT +Command12=ID_EDIT_COPY +Command13=ID_EDIT_PASTE +Command14=ID_TOGGLE_TILEVIEW +Command15=ID_NEXT_PANE +Command16=ID_PREV_PANE +Command17=ID_MIRRORX +Command18=ID_EDIT_CUT +Command19=ID_MIRRORY +Command20=ID_EDIT_UNDO +CommandCount=20 [DLG:IDD_ABOUTBOX (English (U.S.))] Type=1 @@ -209,7 +211,7 @@ ImplementationFile=LayerList.cpp BaseClass=CDialog Filter=D VirtualFilter=dWC -LastObject=IDC_LAYER_LIST +LastObject=CLayerList [DLG:IDD_TILESET_DIALOG] Type=1 diff --git a/Utils/MapEdit/MapEdit.rc b/Utils/MapEdit/MapEdit.rc index d2f44070e..4cd1b3da9 100644 --- a/Utils/MapEdit/MapEdit.rc +++ b/Utils/MapEdit/MapEdit.rc @@ -129,6 +129,10 @@ BEGIN MENUITEM SEPARATOR MENUITEM "&Toggle TileView", ID_TOGGLE_TILEVIEW END + POPUP "Misc" + BEGIN + MENUITEM "2d/3d Toggle", ID_2D_3D_TOGGLE + END POPUP "&Window" BEGIN MENUITEM "&New Window", ID_WINDOW_NEW @@ -152,6 +156,7 @@ IDR_MAINFRAME ACCELERATORS PRELOAD MOVEABLE PURE BEGIN 219, ID_ACTIVEBRUSH_LEFT, VIRTKEY, NOINVERT 221, ID_ACTIVEBRUSH_RIGHT, VIRTKEY, NOINVERT + 222, ID_2D_3D_TOGGLE, VIRTKEY, NOINVERT "C", ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT "G", ID_TOGGLE_GRID, VIRTKEY, NOINVERT "N", ID_FILE_NEW, VIRTKEY, CONTROL, NOINVERT diff --git a/Utils/MapEdit/MapEditDoc.cpp b/Utils/MapEdit/MapEditDoc.cpp index e900ca869..36ba05293 100644 --- a/Utils/MapEdit/MapEditDoc.cpp +++ b/Utils/MapEdit/MapEditDoc.cpp @@ -191,7 +191,7 @@ void CMapEditDoc::SetMode(int NewMode) /*********************************************************************************/ void CMapEditDoc::TileBankLoad() { -char BASED_CODE GinFilter[]= "Gin Files (*.Gin)|*.gin|All Files (*.*)|*.*||"; +char BASED_CODE GinFilter[]= "All Tile Files (*.Gin; *.Bmp)|*.gin;*.Bmp|3d Tile Files (*.Gin)|*.Gin|2d Tile Files (*.Bmp)|*.Bmp|All Files (*.*)|*.*||"; CFileDialog Dlg(TRUE,"Gin",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,GinFilter); if (Dlg.DoModal()!=IDOK) return; @@ -243,3 +243,9 @@ CMapSizeDlg Dlg; Core.SetMapSize(View,Dlg.m_Width,Dlg.m_Height); } + +/*********************************************************************************/ +void CMapEditDoc::Toggle2d3d(CMapEditView *View) +{ + Core.Toggle2d3d(View); +} diff --git a/Utils/MapEdit/MapEditDoc.h b/Utils/MapEdit/MapEditDoc.h index 894d52c4e..1c1b232af 100644 --- a/Utils/MapEdit/MapEditDoc.h +++ b/Utils/MapEdit/MapEditDoc.h @@ -36,6 +36,7 @@ public: void ActiveBrushLeft(CMapEditView *View); void ActiveBrushRight(CMapEditView *View); void MapSetSize(CMapEditView *View); + void Toggle2d3d(CMapEditView *View); void TileBankLoad(); void TileBankReload(); diff --git a/Utils/MapEdit/MapEditView.cpp b/Utils/MapEdit/MapEditView.cpp index bd1fb4666..9fc735e5a 100644 --- a/Utils/MapEdit/MapEditView.cpp +++ b/Utils/MapEdit/MapEditView.cpp @@ -41,9 +41,10 @@ BEGIN_MESSAGE_MAP(CMapEditView, CGLEnabledView) ON_COMMAND(ID_MIRRORY, OnMirrory) ON_COMMAND(ID_ACTIVEBRUSH_LEFT, OnActivebrushLeft) ON_COMMAND(ID_ACTIVEBRUSH_RIGHT, OnActivebrushRight) + ON_COMMAND(ID_MAP_SETSIZE, OnMapSetSize) ON_COMMAND(ID_TOOLBAR_TILEPALETTE, OnToggleTileview) ON_COMMAND(ID_TOGGLE_GRID, OnToggleGrid) - ON_COMMAND(ID_MAP_SETSIZE, OnMapSetSize) + ON_COMMAND(ID_2D_3D_TOGGLE, On2d3dToggle) //}}AFX_MSG_MAP END_MESSAGE_MAP() @@ -167,3 +168,5 @@ void CMapEditView::OnActivebrushLeft() {GetDocument()->ActiveBrushLeft(t void CMapEditView::OnActivebrushRight() {GetDocument()->ActiveBrushRight(this);} void CMapEditView::OnMapSetSize() {GetDocument()->MapSetSize(this);} + +void CMapEditView::On2d3dToggle() {GetDocument()->Toggle2d3d(this);} diff --git a/Utils/MapEdit/MapEditView.h b/Utils/MapEdit/MapEditView.h index 1b7fcc959..9078001dc 100644 --- a/Utils/MapEdit/MapEditView.h +++ b/Utils/MapEdit/MapEditView.h @@ -62,6 +62,7 @@ protected: afx_msg void OnActivebrushLeft(); afx_msg void OnActivebrushRight(); afx_msg void OnMapSetSize(); + afx_msg void On2d3dToggle(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; diff --git a/Utils/MapEdit/TexCache.cpp b/Utils/MapEdit/TexCache.cpp index 532f30f55..ccf33e7e5 100644 --- a/Utils/MapEdit/TexCache.cpp +++ b/Utils/MapEdit/TexCache.cpp @@ -7,6 +7,7 @@ #include #include #include +#include // Header File For The Glaux Library #include #include "TexCache.h" @@ -15,32 +16,113 @@ /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ -int CTexCache::ProcessTexture(char *TexName,char *Path,int Flags) +int CTexCache::GetTexIdx(char *Name,int Flags) { int ListSize=TexList.size(); - -// Check if Tex exists + for (int Count=0;CountsizeX; + RGBData.Height=Aux->sizeY; + RGBData.RGB=(char*)Aux->data; + free(Aux); // Safe to free aux now, contents copied (I HATE AUX) +} + +/**************************************************************************************/ +void CTexCache::FreeBMP(sRGBData &RGBData) +{ + if (RGBData.RGB) + { + free((unsigned char*)RGBData.RGB); + } +} + +/**************************************************************************************/ +void CTexCache::LoadTex(sTex &ThisTex,sRGBData *TexData) +{ + ThisTex.Width=TexData->Width; + ThisTex.Height=TexData->Height; + + glGenTextures(1, &ThisTex.TexID); + + glBindTexture(GL_TEXTURE_2D, ThisTex.TexID); + glTexImage2D(GL_TEXTURE_2D, 0, 3, TexData->Width, TexData->Height, 0, GL_RGB, GL_UNSIGNED_BYTE, TexData->RGB); + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); + glBindTexture(GL_TEXTURE_2D, 0); +} + +/**************************************************************************************/ +/**************************************************************************************/ +/**************************************************************************************/ + void CTexCache::Purge() { int ListSize=TexList.size(); diff --git a/Utils/MapEdit/TexCache.h b/Utils/MapEdit/TexCache.h index 397ef469e..f97492ef5 100644 --- a/Utils/MapEdit/TexCache.h +++ b/Utils/MapEdit/TexCache.h @@ -12,12 +12,20 @@ #include #include +struct sRGBData +{ + int Width; + int Height; + char *RGB; +}; + struct sTex { char Name[256]; char Path[256]; GLuint TexID; int Flags; + int Width,Height; }; /*****************************************************************************/ @@ -27,10 +35,18 @@ class CTexCache { public: - int ProcessTexture(char *TexName,char *Path,int Flags); + int GetTexIdx(char *Name,int Flags); + + int ProcessTexture(char *TexName,char *Path,int Flags,sRGBData *RGBData=0); + void Purge(); + + void LoadBMP(char *Filename,sRGBData &RGBData); + void FreeBMP(sRGBData &RGBData); + + void LoadTex(sTex &ThisTex,sRGBData *TexData); + sTex &GetTex(int Id) {return(TexList[Id]);} GLuint GetTexGLId(int Id) {return(TexList[Id].TexID);} - void Purge(); std::vector TexList; diff --git a/Utils/MapEdit/TileSet.cpp b/Utils/MapEdit/TileSet.cpp index c38b34f77..7af6d8b4e 100644 --- a/Utils/MapEdit/TileSet.cpp +++ b/Utils/MapEdit/TileSet.cpp @@ -45,8 +45,8 @@ CTileBank::CTileBank() SelEnd=1; #ifdef _DEBUG -// AddTileSet("c:/temp/rockp/rockp.gin"); - AddTileSet("c:/temp/3/test.gin"); + AddTileSet("c:/temp/rockp/rockp.gin"); +// AddTileSet("c:/temp/3/test.gin"); int W=3; int H=3; @@ -167,12 +167,12 @@ void CTileBank::RenderSet(CCore *Core,Vec &CamPos,BOOL Is3d) if (Is3d) { glEnable(GL_DEPTH_TEST); - TileSet[CurrentSet].Render3d(CamPos,GetLBrush(),GetRBrush()); + TileSet[CurrentSet].Render(CamPos,GetLBrush(),GetRBrush(),TRUE); glDisable(GL_DEPTH_TEST); } else { - TileSet[CurrentSet].Render2d(CamPos,GetLBrush(),GetRBrush()); + TileSet[CurrentSet].Render(CamPos,GetLBrush(),GetRBrush(),FALSE); } TileSet[CurrentSet].RenderCursor(CamPos,CursorPos,SelStart,SelEnd); @@ -288,14 +288,8 @@ BOOL CTileBank::SelectCancel() /*****************************************************************************/ CTileSet::CTileSet(char *_Filename,int Idx) { -char Drive[_MAX_DRIVE]; -char Dir[_MAX_DIR]; -char Fname[_MAX_FNAME]; -char Ext[_MAX_EXT]; - - _splitpath(_Filename,Drive,Dir,Fname,Ext); - sprintf(Path,"%s%s",Drive,Dir); - sprintf(Name,"%s",Fname); + _splitpath(_Filename,Drive,Path,Name,Ext); + Loaded=FALSE; SetNumber=Idx; } @@ -312,10 +306,37 @@ CTileSet::~CTileSet() /*****************************************************************************/ void CTileSet::Load(CCore *Core) { -CScene Scene; -char Filename[256+64]; - sprintf(Filename,"%s%s.%s",Path,Name,"Gin"); + if (IsStrSame(Ext,".Gin")) + { + Load3d(Core); + } + else + { + Load2d(Core); + } + + Loaded=TRUE; +} + +/*****************************************************************************/ +void CTileSet::Load2d(CCore *Core) +{ + +// _makepath( Filename, Drive, Path, Name, Ext); + + Tile.push_back(CTile()); // Insert Blank + + Tile.push_back(CTile(Core,this,0,0)); +} + +/*****************************************************************************/ +void CTileSet::Load3d(CCore *Core) +{ +char Filename[_MAX_PATH]; +CScene Scene; + + _makepath( Filename, Drive, Path, Name, Ext); Scene.Load(Filename); CNode &ThisNode=Scene.GetSceneNode(0); @@ -327,8 +348,6 @@ int ChildCount=ThisNode.GetPruneChildCount(); Tile.push_back(CTile(Core,this,Scene,ThisNode.PruneChildList[Child])); } - - Loaded=TRUE; } /*****************************************************************************/ @@ -346,12 +365,7 @@ int ListSize=Tile.size(); } /*****************************************************************************/ -void CTileSet::Render2d(Vec &CamPos,CMap &LBrush,CMap &RBrush) -{ -} - -/*****************************************************************************/ -void CTileSet::Render3d(Vec &CamPos,CMap &LBrush,CMap &RBrush) +void CTileSet::Render(Vec &CamPos,CMap &LBrush,CMap &RBrush,BOOL Render3d) { int ListSize=Tile.size(); int TileID=0; @@ -371,7 +385,7 @@ int SelFlag; glTranslatef(CamPos.x+Pos.x*(1+TileBrowserGap),CamPos.y-Pos.y*(1+TileBrowserGap),CamPos.z); glColor3f(0.5,0.5,0.5); - if (TileID) Tile[TileID].Render(0); + if (TileID) Tile[TileID].Render(0,Render3d); ThisElem.Tile=TileID; SelFlag=0; @@ -445,7 +459,6 @@ int MaxTile=Tile.size(); { for (int X=Start.x; X<=End.x; X++) { -// RenderCursorBlock(CamPos,X,Y); glLoadIdentity(); glTranslatef(CamPos.x+X*(1+TileBrowserGap),CamPos.y-Y*(1+TileBrowserGap),CamPos.z); diff --git a/Utils/MapEdit/TileSet.h b/Utils/MapEdit/TileSet.h index e15874d22..186a5bf2c 100644 --- a/Utils/MapEdit/TileSet.h +++ b/Utils/MapEdit/TileSet.h @@ -93,21 +93,26 @@ public: int IsLoaded() {return(Loaded);} int GetTileCount() {return(Tile.size());} + void Load(CCore *Core); + void Load2d(CCore *Core); + void Load3d(CCore *Core); + char *GetPath() {return(Path);} char *GetName() {return(Name);} + char *GetExt() {return(Ext);} + CTile &GetTile(int No) {return(Tile[No]);} void Purge(); int FindCursorPos(CCore *Core,CMapEditView *View,Vec &CamPos,CPoint &MousePos); - void Render2d(Vec &CamPos,CMap &LBrush,CMap &RBrush); - void Render3d(Vec &CamPos,CMap &LBrush,CMap &RBrush); + void Render(Vec &CamPos,CMap &LBrush,CMap &RBrush,BOOL Render3d); void RenderCursor(Vec &CamPos,int Pos,int Width, int Height); void RenderBrush(Vec &CamPos,CMap &LBrush,CMap &RBrush); void RenderGrid(Vec &CamPos); private: - char Path[256],Name[256]; + char Drive[_MAX_DRIVE],Path[_MAX_DIR],Name[_MAX_FNAME],Ext[_MAX_EXT]; int SetNumber; std::vector Tile; BOOL Loaded; diff --git a/Utils/MapEdit/resource.h b/Utils/MapEdit/resource.h index 71c5ce16a..eb63a163a 100644 --- a/Utils/MapEdit/resource.h +++ b/Utils/MapEdit/resource.h @@ -43,6 +43,7 @@ #define ID_ACTIVEBRUSH_LEFT 32790 #define ID_ACTIVEBRUSH_RIGHT 32791 #define ID_MAP_SETSIZE 32792 +#define ID_2D_3D_TOGGLE 32794 #define ID_INDICATOR_CURSORXY 59142 // Next default values for new objects @@ -51,7 +52,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_3D_CONTROLS 1 #define _APS_NEXT_RESOURCE_VALUE 168 -#define _APS_NEXT_COMMAND_VALUE 32794 +#define _APS_NEXT_COMMAND_VALUE 32795 #define _APS_NEXT_CONTROL_VALUE 1042 #define _APS_NEXT_SYMED_VALUE 101 #endif diff --git a/Utils/MapEdit/utils.cpp b/Utils/MapEdit/utils.cpp index 0a3a9dcfd..eff56c014 100644 --- a/Utils/MapEdit/utils.cpp +++ b/Utils/MapEdit/utils.cpp @@ -176,6 +176,7 @@ int ID; /**************************************************************************************/ /**************************************************************************************/ /**************************************************************************************/ +#if 0 AUX_RGBImageRec *LoadBMP(char *Filename) { FILE *File=NULL; @@ -192,40 +193,50 @@ FILE *File=NULL; } /**************************************************************************************/ -int LoadGLTexture(char *FileName, GLuint &Text) +void FreeBMP(AUX_RGBImageRec *TextureImage) { -AUX_RGBImageRec *TextureImage[1]; + if (TextureImage) // If Texture Exists + { + if (TextureImage->data) // If Texture Image Exists + { + free(TextureImage->data); // Free The Texture Image Memory + } + + free(TextureImage); // Free The Image Structure + } + +} + +/**************************************************************************************/ +int LoadGLTexture(char *FileName, GLuint &Text,int &Width,int &Height) +{ +AUX_RGBImageRec *TextureImage; int Status=FALSE; - memset(TextureImage,0,sizeof(void *)*1); // Init Buffer + 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)) + if (TextureImage=LoadBMP(FileName)) { + Width=TextureImage->sizeX; + Height=TextureImage->sizeY; 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); + glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage->sizeX, TextureImage->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage->data); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); glBindTexture(GL_TEXTURE_2D, 0); } - 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 - } + FreeBMP(TextureImage); return Status; // Return The Status } +#endif /**************************************************************************************/ struct sTgaHdr @@ -246,52 +257,42 @@ struct sTgaHdr -void SaveTGA(char *Filename,int SX,int SY,int SW,int SH) +void SaveTGA(char *Filename,int W,int H,char *Data) { FILE *File; sTgaHdr FileHdr; File=fopen(Filename,"wb"); -//--------------------------------------------------------------------------- -// Header memset(&FileHdr,0 ,sizeof(sTgaHdr)); FileHdr.imagetype= 2; //imagetype - FileHdr.width = SW; - FileHdr.height= SH; + FileHdr.width = W; + FileHdr.height= H; FileHdr.depth=24; -// FileHdr.imagedesc=24; fwrite(&FileHdr,sizeof(sTgaHdr),1,File); - -//--------------------------------------------------------------------------- -// Data - for (int Y=0; Y +//#include +//#include +//#include // Header File For The Glaux Library /**************************************************************************************/ @@ -14,7 +18,7 @@ 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); +int LoadGLTexture(char *FileName, GLuint &Text,int &Width,int &Height); void TNormalise(TVECTOR &V); TVECTOR TCrossProduct(TVECTOR const &V0,TVECTOR const &V1,const TVECTOR &V2 ); @@ -22,7 +26,15 @@ TVECTOR TCrossProduct(TVECTOR const &V0,TVECTOR const &V1,const TVECTOR &V2 ); CPoint IDToPoint(int ID,int Width); int PointToID(CPoint &Pnt,int Width); -void SaveTGA(char *Filename,int SX,int SY,int SW,int SH); +//AUX_RGBImageRec *LoadBMP(char *Filename); +//void FreeBMP(AUX_RGBImageRec *TextureImage); + + +//void SaveTGA(char *Filename,int SX,int SY,int SW,int SH); +void SaveTGA(char *Filename,int W,int H,char *Data); +void BGR2RGB(int W,int H,char *Data); + + /**************************************************************************************/