This commit is contained in:
Daveo 2000-12-04 16:47:34 +00:00
parent 4813d8262e
commit 2a24119501
20 changed files with 273 additions and 179 deletions

View file

@ -64,7 +64,7 @@ LIB32=link.exe -lib
# PROP Intermediate_Dir "Debug" # PROP Intermediate_Dir "Debug"
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\GinLib" /I "..\glib\include" /I "..\glib\include\pc" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\GinLib" /I "..\glib\include" /I "..\glib\include\pc" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FR /YX /FD /GZ /c
# ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD BASE RSC /l 0x809 /d "_DEBUG"
# ADD RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe

View file

@ -4,7 +4,8 @@
#include "stdafx.h" #include "stdafx.h"
#include "gl3d.h" //#include "gl3d.h"
#include <Vector3.h>
#include <gl\gl.h> #include <gl\gl.h>
#include <gl\glu.h> #include <gl\glu.h>
#include <gl\glut.h> #include <gl\glut.h>
@ -77,11 +78,15 @@ int Width,Height;
Layer.push_back(new CLayerTile( CLayerTile::Action, Width, Height, 1.0f, TRUE, TRUE)); Layer.push_back(new CLayerTile( CLayerTile::Action, Width, Height, 1.0f, TRUE, TRUE));
if (Dlg.m_Fore) Layer.push_back(new CLayerTile( CLayerTile::Fore, Width, Height, 0.5f, FALSE, TRUE)); if (Dlg.m_Fore) Layer.push_back(new CLayerTile( CLayerTile::Fore, Width, Height, 0.5f, FALSE, TRUE));
Vector3 CamOfs;
CamOfs.Zero();
CamOfs.x=-15;
ActiveLayer=FindActionLayer(); ActiveLayer=FindActionLayer();
MapCam=Vec(0,0,0); MapCam.Zero();
MapCamOfs=Vec(-15,10,0); MapCamOfs=CamOfs;
TileCam=Vec(0,0,0); TileCam.Zero();
TileCamOfs=Vec(-15,10,0); TileCamOfs=CamOfs;
TileViewFlag=FALSE; TileViewFlag=FALSE;
GridFlag=TRUE; GridFlag=TRUE;
Is3dFlag=TRUE; Is3dFlag=TRUE;
@ -100,10 +105,10 @@ float Version;
if (Version>=1.0) if (Version>=1.0)
{ {
File->Read(&MapCam,sizeof(Vec)); File->Read(&MapCam,sizeof(Vector3));
File->Read(&MapCamOfs,sizeof(Vec)); File->Read(&MapCamOfs,sizeof(Vector3));
File->Read(&TileCam,sizeof(Vec)); File->Read(&TileCam,sizeof(Vector3));
File->Read(&TileCamOfs,sizeof(Vec)); File->Read(&TileCamOfs,sizeof(Vector3));
File->Read(&TileViewFlag,sizeof(BOOL)); File->Read(&TileViewFlag,sizeof(BOOL));
File->Read(&GridFlag,sizeof(BOOL)); File->Read(&GridFlag,sizeof(BOOL));
@ -153,10 +158,10 @@ void CCore::Save(CFile *File)
// Version 1 // Version 1
File->Write(&FileVersion,sizeof(float)); File->Write(&FileVersion,sizeof(float));
File->Write(&MapCam,sizeof(Vec)); File->Write(&MapCam,sizeof(Vector3));
File->Write(&MapCamOfs,sizeof(Vec)); File->Write(&MapCamOfs,sizeof(Vector3));
File->Write(&TileCam,sizeof(Vec)); File->Write(&TileCam,sizeof(Vector3));
File->Write(&TileCamOfs,sizeof(Vec)); File->Write(&TileCamOfs,sizeof(Vector3));
File->Write(&TileViewFlag,sizeof(BOOL)); File->Write(&TileViewFlag,sizeof(BOOL));
File->Write(&GridFlag,sizeof(BOOL)); File->Write(&GridFlag,sizeof(BOOL));
@ -200,7 +205,7 @@ void CCore::Render(CMapEditView *View,BOOL ForceRender)
/*****************************************************************************/ /*****************************************************************************/
void CCore::RenderLayers(CMapEditView *View) void CCore::RenderLayers(CMapEditView *View)
{ {
Vec &ThisCam=GetCam(); Vector3 &ThisCam=GetCam();
int ListSize=Layer.size(); int ListSize=Layer.size();
for (int i=0;i<ListSize;i++) for (int i=0;i<ListSize;i++)
@ -222,7 +227,7 @@ int ListSize=Layer.size();
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
void CCore::RenderTileView(CMapEditView *View) void CCore::RenderTileView(CMapEditView *View)
{ {
Vec &ThisCam=GetCam(); Vector3 &ThisCam=GetCam();
TileBank.RenderSet(this,ThisCam,Is3dFlag); TileBank.RenderSet(this,ThisCam,Is3dFlag);
@ -299,19 +304,23 @@ BOOL RedrawFlag=FALSE;
/*****************************************************************************/ /*****************************************************************************/
void CCore::MouseWheel(CMapEditView *View,UINT nFlags, short zDelta, CPoint &pt) void CCore::MouseWheel(CMapEditView *View,UINT nFlags, short zDelta, CPoint &pt)
{ {
Vector3 Ofs;
Ofs.Zero();
if (zDelta>0) if (zDelta>0)
UpdateView(View,Vec(0,0,1.0f)); Ofs.z=+1.0f;
else else
UpdateView(View,Vec(0,0,-1.0f)); Ofs.z=-1.0f;
UpdateView(View,Ofs);
} }
/*****************************************************************************/ /*****************************************************************************/
void CCore::MouseMove(CMapEditView *View,UINT nFlags, CPoint &point) void CCore::MouseMove(CMapEditView *View,UINT nFlags, CPoint &point)
{ {
Vec Ofs(0,0,0); Vector3 Ofs;
Vector3 &ThisCam=GetCam();
Vec &ThisCam=GetCam();
// check if active doc // check if active doc
Ofs.Zero();
if (theApp.GetCurrent()!=View->GetDocument()) return; if (theApp.GetCurrent()!=View->GetDocument()) return;
CurrentMousePos=point; CurrentMousePos=point;
@ -336,7 +345,7 @@ Vec &ThisCam=GetCam();
Ofs.y*=YS; Ofs.y*=YS;
/* if (nFlags & MK_CONTROL) /* if (nFlags & MK_CONTROL)
{ // Move Ofs { // Move Ofs
Vec &CamOfs=GetCamOfs(); Vector3 &CamOfs=GetCamOfs();
Ofs.y=-Ofs.y; Ofs.y=-Ofs.y;
CamOfs+=Ofs; CamOfs+=Ofs;
UpdateView(View); UpdateView(View);
@ -528,7 +537,7 @@ BOOL CCore::IsTileValid(int Set,int Tile)
/*****************************************************************************/ /*****************************************************************************/
/*** Misc ********************************************************************/ /*** Misc ********************************************************************/
/*****************************************************************************/ /*****************************************************************************/
Vec &CCore::GetCam() Vector3 &CCore::GetCam()
{ {
if (TileViewFlag) if (TileViewFlag)
return(TileCam); return(TileCam);
@ -538,7 +547,7 @@ Vec &CCore::GetCam()
} }
/*****************************************************************************/ /*****************************************************************************/
Vec &CCore::GetCamOfs() Vector3 &CCore::GetCamOfs()
{ {
if (TileViewFlag) if (TileViewFlag)
return(TileCamOfs); return(TileCamOfs);
@ -565,16 +574,22 @@ void CCore::UpdateAll(CMapEditView *View)
} }
/*****************************************************************************/ /*****************************************************************************/
void CCore::UpdateView(CMapEditView *View,Vec Ofs) void CCore::UpdateView(CMapEditView *View)
{ {
Vec &ThisCam=GetCam();
Ofs.y=-Ofs.y;
ThisCam+=Ofs;
if (ThisCam.z>-1) ThisCam.z=-1;
if (View) View->Invalidate(); if (View) View->Invalidate();
} }
/*****************************************************************************/
void CCore::UpdateView(CMapEditView *View,Vector3 &Ofs)
{
Vector3 &ThisCam=GetCam();
ThisCam.x+=Ofs.x;
ThisCam.y-=Ofs.y;
ThisCam.z+=Ofs.z;
if (ThisCam.z>-1) ThisCam.z=-1;
UpdateView(View);
}
/*****************************************************************************/ /*****************************************************************************/
void CCore::SetMapSize(CMapEditView *View,int Width,int Height) void CCore::SetMapSize(CMapEditView *View,int Width,int Height)
@ -623,9 +638,9 @@ int Idx=FindLayer(LAYER_TYPE_TILE,CLayerTile::Action);
/*****************************************************************************/ /*****************************************************************************/
Vec CCore::OffsetCam(Vec &Cam,float DivVal) Vector3 CCore::OffsetCam(Vector3 &Cam,float DivVal)
{ {
Vec ThisCam; Vector3 ThisCam;
ThisCam=Cam/DivVal; ThisCam=Cam/DivVal;
ThisCam.z=Cam.z; ThisCam.z=Cam.z;
@ -673,4 +688,14 @@ CExportPSX Exp(ExportName);
Exp.ExportTiles(this); Exp.ExportTiles(this);
Exp.ExportTexList(this); Exp.ExportTexList(this);
} }
/*****************************************************************************/
GString CCore::GetCurrentPath()
{
GFName FullPath=theApp.GetCurrent()->GetPathName();
GString Path=FullPath.Dir();
return(Path);
}

View file

@ -6,14 +6,15 @@
#define __CORE_HEADER__ #define __CORE_HEADER__
#include <Vector> #include <Vector>
#include "gl3d.h" //#include "gl3d.h"
#include <Vector3.h>
#include "Layer.h" #include "Layer.h"
//#include "LayerTile.h" //#include "LayerTile.h"
#include "TexCache.h" #include "TexCache.h"
#include "TileSet.h" #include "TileSet.h"
const float FileVersion=1.0f; const float FileVersion=1.01f;
/*****************************************************************************/ /*****************************************************************************/
@ -78,11 +79,12 @@ public:
// Misc // Misc
void UpdateGUI(CMapEditView *View); void UpdateGUI(CMapEditView *View);
void UpdateAll(CMapEditView *View); void UpdateAll(CMapEditView *View);
void UpdateView(CMapEditView *View,Vec Ofs=Vec(0,0,0)); void UpdateView(CMapEditView *View);
void UpdateView(CMapEditView *View,Vector3 &Ofs);
Vec &GetCam(); Vector3 &GetCam();
Vec &GetCamOfs(); Vector3 &GetCamOfs();
Vec OffsetCam(Vec &Cam,float DivVal); Vector3 OffsetCam(Vector3 &Cam,float DivVal);
void SetCursorPos(CPoint &Pos) {CursorPos=Pos;} void SetCursorPos(CPoint &Pos) {CursorPos=Pos;}
CPoint &GetCursorPos() {return(CursorPos);} CPoint &GetCursorPos() {return(CursorPos);}
@ -93,12 +95,13 @@ public:
void Toggle2d3d(CMapEditView *View); void Toggle2d3d(CMapEditView *View);
int FindLayer(int Type,int SubType=-1); int FindLayer(int Type,int SubType=-1);
int FindActionLayer(); int FindActionLayer();
GString GetCurrentPath();
private: private:
CPoint CurrentMousePos,LastMousePos; CPoint CurrentMousePos,LastMousePos;
CPoint CursorPos,LastCursorPos; CPoint CursorPos,LastCursorPos;
Vec MapCam,TileCam; Vector3 MapCam,TileCam;
Vec MapCamOfs,TileCamOfs; Vector3 MapCamOfs,TileCamOfs;
std::vector<CLayer*> Layer; std::vector<CLayer*> Layer;
int ActiveLayer; int ActiveLayer;

View file

@ -10,7 +10,7 @@
#include "mapedit.h" #include "mapedit.h"
#include "Quantize.h" #include "Quantize.h"
#include "list.h" #include <list.h>
/*****************************************************************************/ /*****************************************************************************/

View file

@ -4,7 +4,8 @@
#include "stdafx.h" #include "stdafx.h"
#include "gl3d.h" //#include "gl3d.h"
#include <Vector3.h>
#include <gl\gl.h> #include <gl\gl.h>
#include <gl\glu.h> #include <gl\glu.h>
#include <gl\glut.h> #include <gl\glut.h>

View file

@ -6,7 +6,8 @@
#define __LAYER_HEADER__ #define __LAYER_HEADER__
#include <Vector> #include <Vector>
#include "gl3d.h" //#include "gl3d.h"
#include <Vector3.h>
#include "Map.h" #include "Map.h"
/*****************************************************************************/ /*****************************************************************************/
@ -46,11 +47,11 @@ virtual int GetSubType() {return(-1);}
virtual float GetScaleFactor() {return(ScaleFactor);} virtual float GetScaleFactor() {return(ScaleFactor);}
virtual void Render(CCore *Core,Vec &CamPos,BOOL Is3d)=0; virtual void Render(CCore *Core,Vector3 &CamPos,BOOL Is3d)=0;
virtual void RenderGrid(CCore *Core,Vec &CamPos,BOOL Active)=0; virtual void RenderGrid(CCore *Core,Vector3 &CamPos,BOOL Active)=0;
virtual void FindCursorPos(CCore *Core,CMapEditView *View,Vec &CamPos,CPoint &MousePos)=0; virtual void FindCursorPos(CCore *Core,CMapEditView *View,Vector3 &CamPos,CPoint &MousePos)=0;
virtual void RenderCursor(CCore *Core,Vec &CamPos,BOOL Is3d)=0; virtual void RenderCursor(CCore *Core,Vector3 &CamPos,BOOL Is3d)=0;
virtual void InitGUI(CCore *Core)=0; virtual void InitGUI(CCore *Core)=0;
virtual void UpdateGUI(CCore *Core)=0; virtual void UpdateGUI(CCore *Core)=0;

View file

@ -4,7 +4,8 @@
#include "stdafx.h" #include "stdafx.h"
#include "gl3d.h" //#include "gl3d.h"
#include <Vector3.h>
#include <gl\gl.h> #include <gl\gl.h>
#include <gl\glu.h> #include <gl\glu.h>
#include <gl\glut.h> #include <gl\glut.h>
@ -137,9 +138,9 @@ int ThisHeight=Map.GetHeight();
/*****************************************************************************/ /*****************************************************************************/
/*****************************************************************************/ /*****************************************************************************/
/*****************************************************************************/ /*****************************************************************************/
void CLayerTile::Render(CCore *Core,Vec &CamPos,BOOL Is3d) void CLayerTile::Render(CCore *Core,Vector3 &CamPos,BOOL Is3d)
{ {
Vec ThisCam=Core->OffsetCam(CamPos,GetScaleFactor()); Vector3 ThisCam=Core->OffsetCam(CamPos,GetScaleFactor());
if (Is3d && Render3dFlag) if (Is3d && Render3dFlag)
{ {
@ -154,11 +155,10 @@ Vec ThisCam=Core->OffsetCam(CamPos,GetScaleFactor());
} }
/*****************************************************************************/ /*****************************************************************************/
void CLayerTile::RenderCursorPaint(CCore *Core,Vec &CamPos,BOOL Is3d) void CLayerTile::RenderCursorPaint(CCore *Core,Vector3 &CamPos,BOOL Is3d)
{ {
CTileBank &TileBank=Core->GetTileBank(); CTileBank &TileBank=Core->GetTileBank();
//Vec ThisCam=CamPos; Vector3 ThisCam=Core->OffsetCam(CamPos,GetScaleFactor());
Vec ThisCam=Core->OffsetCam(CamPos,GetScaleFactor());
CPoint &CursPos=Core->GetCursorPos(); CPoint &CursPos=Core->GetCursorPos();
CMap &Brush=TileBank.GetActiveBrush(); CMap &Brush=TileBank.GetActiveBrush();
@ -181,7 +181,7 @@ CMap &Brush=TileBank.GetActiveBrush();
} }
/*****************************************************************************/ /*****************************************************************************/
void CLayerTile::Render(CCore *Core,Vec &CamPos,CMap &ThisMap,BOOL Render3d,float Alpha) void CLayerTile::Render(CCore *Core,Vector3 &CamPos,CMap &ThisMap,BOOL Render3d,float Alpha)
{ {
int Width=ThisMap.GetWidth(); int Width=ThisMap.GetWidth();
int Height=ThisMap.GetHeight(); int Height=ThisMap.GetHeight();
@ -216,11 +216,11 @@ int Height=ThisMap.GetHeight();
} }
/*****************************************************************************/ /*****************************************************************************/
void CLayerTile::RenderGrid(CCore *Core,Vec &CamPos,BOOL Active) void CLayerTile::RenderGrid(CCore *Core,Vector3 &CamPos,BOOL Active)
{ {
int Width=Map.GetWidth(); int Width=Map.GetWidth();
int Height=Map.GetHeight(); int Height=Map.GetHeight();
Vec ThisCam=Core->OffsetCam(CamPos,GetScaleFactor()); Vector3 ThisCam=Core->OffsetCam(CamPos,GetScaleFactor());
float OverVal=0.5; float OverVal=0.5;
glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_MODELVIEW);
@ -249,7 +249,7 @@ float OverVal=0.5;
} }
/*****************************************************************************/ /*****************************************************************************/
void CLayerTile::FindCursorPos(CCore *Core,CMapEditView *View,Vec &CamPos,CPoint &MousePos) void CLayerTile::FindCursorPos(CCore *Core,CMapEditView *View,Vector3 &CamPos,CPoint &MousePos)
{ {
GLint Viewport[4]; GLint Viewport[4];
GLuint SelectBuffer[SELECT_BUFFER_SIZE]; GLuint SelectBuffer[SELECT_BUFFER_SIZE];
@ -259,7 +259,7 @@ CPoint &CursorPos=Core->GetCursorPos();
int Width=Map.GetWidth(); int Width=Map.GetWidth();
int Height=Map.GetHeight(); int Height=Map.GetHeight();
Vec ThisCam=Core->OffsetCam(CamPos,GetScaleFactor()); Vector3 ThisCam=Core->OffsetCam(CamPos,GetScaleFactor());
glGetIntegerv(GL_VIEWPORT, Viewport); glGetIntegerv(GL_VIEWPORT, Viewport);
glSelectBuffer (SELECT_BUFFER_SIZE, SelectBuffer ); glSelectBuffer (SELECT_BUFFER_SIZE, SelectBuffer );
@ -452,7 +452,7 @@ CTileBank &TileBank=Core->GetTileBank();
} }
/*****************************************************************************/ /*****************************************************************************/
void CLayerTile::RenderCursor(CCore *Core,Vec &CamPos,BOOL Is3d) void CLayerTile::RenderCursor(CCore *Core,Vector3 &CamPos,BOOL Is3d)
{ {
switch(Mode) switch(Mode)
{ {

View file

@ -48,11 +48,11 @@ public:
int GetSubType() {return(SubType);} int GetSubType() {return(SubType);}
char *GetName() {return(LayerName[SubType]);} char *GetName() {return(LayerName[SubType]);}
void Render(CCore *Core,Vec &CamPos,BOOL Is3d); void Render(CCore *Core,Vector3 &CamPos,BOOL Is3d);
void RenderGrid(CCore *Core,Vec &CamPos,BOOL Active); void RenderGrid(CCore *Core,Vector3 &CamPos,BOOL Active);
void FindCursorPos(CCore *Core,CMapEditView *View,Vec &CamPos,CPoint &MousePos); void FindCursorPos(CCore *Core,CMapEditView *View,Vector3 &CamPos,CPoint &MousePos);
void RenderCursor(CCore *Core,Vec &CamPos,BOOL Is3d); void RenderCursor(CCore *Core,Vector3 &CamPos,BOOL Is3d);
void InitGUI(CCore *Core); void InitGUI(CCore *Core);
void UpdateGUI(CCore *Core); void UpdateGUI(CCore *Core);
@ -80,8 +80,8 @@ public:
BOOL MirrorY(CCore *Core); BOOL MirrorY(CCore *Core);
protected: protected:
void Render(CCore *Core,Vec &CamPos,CMap &ThisMap,BOOL Render3d,float Alpha=1.0f); void Render(CCore *Core,Vector3 &CamPos,CMap &ThisMap,BOOL Render3d,float Alpha=1.0f);
void RenderCursorPaint(CCore *Core,Vec &CamPos,BOOL Is3d); void RenderCursorPaint(CCore *Core,Vector3 &CamPos,BOOL Is3d);
BOOL Paint(CMap &Blk,CPoint &CursorPos); BOOL Paint(CMap &Blk,CPoint &CursorPos);

View file

@ -4,7 +4,8 @@
#include "stdafx.h" #include "stdafx.h"
#include "gl3d.h" //#include "gl3d.h"
#include <Vector3.h>
#include <gl\gl.h> #include <gl\gl.h>
#include <gl\glu.h> #include <gl\glu.h>
#include <gl\glut.h> #include <gl\glut.h>

View file

@ -18,24 +18,24 @@ Class6=CMapEditDoc
Class7=CMapEditView Class7=CMapEditView
ResourceCount=11 ResourceCount=11
Resource1=IDD_MAPSIZE Resource1=IDD_MULTIBAR (English (U.S.))
Resource2=IDD_LAYERTILE_GUI Resource2=IDD_NEWMAP
Resource3=IDR_TOOLBAR (English (U.S.)) Resource3=IDD_LAYERTILE_GUI
Resource4=IDD_DIALOGBAR (English (U.S.)) Resource4=IDD_DIALOGBAR (English (U.S.))
Resource5=IDD_ABOUTBOX (English (U.S.)) Resource5=IDD_NEW_LAYER
Class8=CMultiBar Class8=CMultiBar
Resource6=IDD_LAYER_LIST_DIALOG Resource6=IDR_MAINFRAME (English (U.S.))
Resource7=IDR_MAPEDITYPE (English (U.S.)) Resource7=IDR_MAPEDITYPE (English (U.S.))
Class9=CLayerList Class9=CLayerList
Class10=CMapSizeDlg Class10=CMapSizeDlg
Resource8=IDR_MAINFRAME (English (U.S.)) Resource8=IDD_MAPSIZE
Class11=CGfxToolBar Class11=CGfxToolBar
Class12=CLayerTileGUI Class12=CLayerTileGUI
Resource9=IDD_NEW_LAYER Resource9=IDD_LAYER_LIST_DIALOG
Resource10=IDD_MULTIBAR (English (U.S.)) Resource10=IDR_TOOLBAR (English (U.S.))
Class13=CNewMapGUI Class13=CNewMapGUI
Class14=CProgressDlg Class14=CProgressDlg
Resource11=IDD_NEWMAP Resource11=IDD_ABOUTBOX (English (U.S.))
[CLS:CChildFrame] [CLS:CChildFrame]
Type=0 Type=0

View file

@ -69,7 +69,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\GinLib" /I "..\glibdev\glib\include" /I "..\glibdev\glib\include\pc" /I "..\ginlib" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /FR /Yu"stdafx.h" /FD /GZ /c # ADD CPP /nologo /MDd /W3 /Gm /Gi /GX /ZI /Od /I "..\libs\glib" /I "..\libs\maths" /I "..\libs\davelib" /I "..\libs\ginlib" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /FR /Yu"stdafx.h" /FD /GZ /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "_DEBUG" /d "_AFXDLL" # ADD BASE RSC /l 0x809 /d "_DEBUG" /d "_AFXDLL"
@ -79,7 +79,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# 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\\" # ADD LINK32 opengl32.lib glu32.lib glib.lib ginlib.lib glaux.lib maths.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept /libpath:"..\libs\ginlib\debug\\" /libpath:"..\libs\glib\debug\\" /libpath:"..\libs\maths\debug\\"
!ENDIF !ENDIF

View file

@ -3,14 +3,22 @@ Microsoft Developer Studio Workspace File, Format Version 6.00
############################################################################### ###############################################################################
Project: "GinLib"=..\GinLib\ginlib.dsp - Package Owner=<4> Project: "GLib"=..\Libs\GLib\Glib.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "GinLib"=..\Libs\GinLib\ginlib.dsp - Package Owner=<4>
Package=<5> Package=<5>
{{{ {{{
begin source code control
"$/Utils/GinLib", RICAAAAA
..\ginlib
end source code control
}}} }}}
Package=<4> Package=<4>
@ -30,11 +38,77 @@ Package=<4>
Begin Project Dependency Begin Project Dependency
Project_Dep_Name GinLib Project_Dep_Name GinLib
End Project Dependency End Project Dependency
Begin Project Dependency
Project_Dep_Name GLib
End Project Dependency
Begin Project Dependency
Project_Dep_Name maths
End Project Dependency
}}} }}}
############################################################################### ###############################################################################
Project: "TexGrab"=..\TexGrab\texgrab.dsp - Package Owner=<4> Project: "MkLevel"=..\MkLevel\MkLevel.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name GinLib
End Project Dependency
Begin Project Dependency
Project_Dep_Name GLib
End Project Dependency
Begin Project Dependency
Project_Dep_Name PsxLib
End Project Dependency
Begin Project Dependency
Project_Dep_Name TexGrab
End Project Dependency
}}}
###############################################################################
Project: "PsxLib"=..\LIBS\PsxLib\PsxLib.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "TexGrab"=..\Libs\TexGrab\TexGrab.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "maths"=..\Libs\Maths\maths.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "mem"=..\Libs\mem\mem.dsp - Package Owner=<4>
Package=<5> Package=<5>
{{{ {{{

View file

@ -186,15 +186,15 @@ END
// Dialog // Dialog
// //
IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 235, 55 IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 145, 46
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About MapEdit" CAPTION "About MapEdit"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
ICON IDR_MAINFRAME,IDC_STATIC,5,5,21,20 ICON IDR_MAINFRAME,IDC_STATIC,5,5,20,20
LTEXT "MapEdit\n\nBy Dave 2000",IDC_STATIC,40,10,119,40, LTEXT "MapEdit\nBy Dave 2000",IDC_STATIC,40,10,50,20,
SS_NOPREFIX SS_NOPREFIX
DEFPUSHBUTTON "OK",IDOK,178,7,50,14,WS_GROUP DEFPUSHBUTTON "OK",IDOK,95,5,50,14,WS_GROUP
END END
IDD_MULTIBAR DIALOGEX 0, 0, 156, 71 IDD_MULTIBAR DIALOGEX 0, 0, 156, 71
@ -262,9 +262,9 @@ BEGIN
IDD_ABOUTBOX, DIALOG IDD_ABOUTBOX, DIALOG
BEGIN BEGIN
LEFTMARGIN, 7 LEFTMARGIN, 7
RIGHTMARGIN, 228 RIGHTMARGIN, 138
TOPMARGIN, 7 TOPMARGIN, 7
BOTTOMMARGIN, 48 BOTTOMMARGIN, 39
END END
IDD_MULTIBAR, DIALOG IDD_MULTIBAR, DIALOG

View file

@ -3,7 +3,7 @@
/*********************/ /*********************/
#include "stdafx.h" #include "stdafx.h"
#include "gl3d.h" //#include "gl3d.h"
#include <gl\gl.h> #include <gl\gl.h>
#include <gl\glu.h> #include <gl\glu.h>
#include <gl\glut.h> #include <gl\glut.h>

View file

@ -6,7 +6,8 @@
#define __TEXCACHE_HEADER__ #define __TEXCACHE_HEADER__
#include "stdafx.h" #include "stdafx.h"
#include "gl3d.h" //#include "gl3d.h"
//#include <Vector3.h>
#include <gl\gl.h> #include <gl\gl.h>
#include <gl\glu.h> #include <gl\glu.h>
#include <gl\glut.h> #include <gl\glut.h>

View file

@ -3,12 +3,14 @@
/*********************/ /*********************/
#include "stdafx.h" #include "stdafx.h"
#include "gl3d.h" //#include "gl3d.h"
#include <Vector3.h>
#include <gl\gl.h> #include <gl\gl.h>
#include <gl\glu.h> #include <gl\glu.h>
#include <gl\glut.h> #include <gl\glut.h>
#include "GLEnabledView.h" #include "GLEnabledView.h"
#include <Vector> #include <Vector>
#include <GFName.hpp>
#include "Core.h" #include "Core.h"
#include "TileSet.h" #include "TileSet.h"
@ -55,6 +57,9 @@ CTileBank::~CTileBank()
void CTileBank::Load(CFile *File,float Version) void CTileBank::Load(CFile *File,float Version)
{ {
int ListSize; int ListSize;
GFName RootPath=File->GetFilePath();
GString FilePath=RootPath.Dir();
FilePath.Append('\\');
File->Read(&ListSize,sizeof(int)); File->Read(&ListSize,sizeof(int));
File->Read(&CurrentSet,sizeof(int)); File->Read(&CurrentSet,sizeof(int));
@ -62,21 +67,40 @@ int ListSize;
Brush[0].Load(File,Version); Brush[0].Load(File,Version);
Brush[1].Load(File,Version); Brush[1].Load(File,Version);
for (int i=0;i<ListSize;i++) if (Version<=1.00)
{ {
char Filename[256+64]; for (int i=0;i<ListSize;i++)
{
char Filename[256+64];
File->Read(Filename,256+64); File->Read(Filename,256+64);
AddTileSet(Filename); AddTileSet(Filename);
}
}
else
{ // New Style rel storage
for (int i=0;i<ListSize;i++)
{
char c=1,RelName[256+64],FullName[256+64];
int Len=0;
while (c)
{
File->Read(&c,1);
RelName[Len++]=c;
}
RootPath.makeabsolute(FilePath,RelName,FullName);
AddTileSet(FullName);
}
} }
} }
/*****************************************************************************/ /*****************************************************************************/
void CTileBank::Save(CFile *File) void CTileBank::Save(CFile *File)
{ {
int ListSize=TileSet.size(); int ListSize=TileSet.size();
GFName RootPath=File->GetFilePath();
GString FilePath=RootPath.Dir();
FilePath.Append('\\');
File->Write(&ListSize,sizeof(int)); File->Write(&ListSize,sizeof(int));
File->Write(&CurrentSet,sizeof(int)); File->Write(&CurrentSet,sizeof(int));
@ -89,8 +113,11 @@ int ListSize=TileSet.size();
CTileSet &ThisSet=TileSet[i]; CTileSet &ThisSet=TileSet[i];
char Filename[256+64]; char Filename[256+64];
sprintf(Filename,"%s%s%s",ThisSet.GetPath(),ThisSet.GetName(),ThisSet.GetExt());
File->Write(Filename,256+64); RootPath.makerelative(FilePath,ThisSet.GetFilename(),Filename);
// sprintf(Filename,"%s",ThisSet.GetFilename());
// File->Write(Filename,256+64);
File->Write(Filename,strlen(Filename)+1);
} }
} }
@ -117,7 +144,7 @@ CTileSet FindSet(Filename,ListSize);
{ {
CTileSet &ThisSet=TileSet[i]; CTileSet &ThisSet=TileSet[i];
if (IsStrSame(FindSet.GetName(),ThisSet.GetName(),-1)) return(i); if (IsStrSame((char*)FindSet.GetName(),(char*)ThisSet.GetName(),-1)) return(i);
} }
return(-1); return(-1);
} }
@ -164,7 +191,7 @@ CTile &CTileBank::GetTile(int Bank,int Tile)
} }
/*****************************************************************************/ /*****************************************************************************/
void CTileBank::RenderSet(CCore *Core,Vec &CamPos,BOOL Is3d) void CTileBank::RenderSet(CCore *Core,Vector3 &CamPos,BOOL Is3d)
{ {
if (!TileSet.size()) return; // No tiles, return if (!TileSet.size()) return; // No tiles, return
@ -184,7 +211,7 @@ void CTileBank::RenderSet(CCore *Core,Vec &CamPos,BOOL Is3d)
} }
/*****************************************************************************/ /*****************************************************************************/
void CTileBank::FindCursorPos(CCore *Core,CMapEditView *View,Vec &CamPos,CPoint &MousePos) void CTileBank::FindCursorPos(CCore *Core,CMapEditView *View,Vector3 &CamPos,CPoint &MousePos)
{ {
if (!TileSet.size()) return; // No tiles, return if (!TileSet.size()) return; // No tiles, return
@ -318,7 +345,7 @@ BOOL CTileBank::IsTileValidGB(int Set,int Tile)
/*****************************************************************************/ /*****************************************************************************/
CTileSet::CTileSet(char *_Filename,int Idx) CTileSet::CTileSet(char *_Filename,int Idx)
{ {
_splitpath(_Filename,Drive,Path,Name,Ext); Filename=_Filename;
Loaded=FALSE; Loaded=FALSE;
SetNumber=Idx; SetNumber=Idx;
@ -336,8 +363,10 @@ CTileSet::~CTileSet()
/*****************************************************************************/ /*****************************************************************************/
void CTileSet::Load(CCore *Core) void CTileSet::Load(CCore *Core)
{ {
GString Ext=Filename.Ext();
Ext.Upper();
if (IsStrSame(Ext,".Gin")) if (Ext=="GIN")
{ {
Load3d(Core); Load3d(Core);
} }
@ -353,18 +382,15 @@ void CTileSet::Load(CCore *Core)
void CTileSet::Load2d(CCore *Core) void CTileSet::Load2d(CCore *Core)
{ {
char Filename[_MAX_PATH];
CTexCache &TexCache=Core->GetTexCache(); CTexCache &TexCache=Core->GetTexCache();
_makepath( Filename, Drive, Path, Name, Ext); int TexID=TexCache.ProcessTexture((char*)Filename.FullName(),0);
int TexID=TexCache.ProcessTexture(Filename,0);
sTex &ThisTex=TexCache.GetTex(TexID); sTex &ThisTex=TexCache.GetTex(TexID);
int Width=ThisTex.TexWidth/16; int Width=ThisTex.TexWidth/16;
int Height=ThisTex.TexHeight/16; int Height=ThisTex.TexHeight/16;
TRACE3("Load 2d TileBank %s (%i,%i)\n",Filename,Width,Height); TRACE3("Load 2d TileBank %s (%i,%i)\n",Filename.FullName(),Width,Height);
Tile.push_back(CTile(0)); // Insert Blank Tile.push_back(CTile(0)); // Insert Blank
@ -405,11 +431,9 @@ BOOL Data=FALSE;
/*****************************************************************************/ /*****************************************************************************/
void CTileSet::Load3d(CCore *Core) void CTileSet::Load3d(CCore *Core)
{ {
char Filename[_MAX_PATH];
CScene Scene; CScene Scene;
_makepath( Filename, Drive, Path, Name, Ext); Scene.Load(Filename.FullName());
Scene.Load(Filename);
CNode &ThisNode=Scene.GetSceneNode(0); CNode &ThisNode=Scene.GetSceneNode(0);
int ChildCount=ThisNode.GetPruneChildCount(); int ChildCount=ThisNode.GetPruneChildCount();
@ -462,7 +486,7 @@ BOOL CTileSet::IsTileValidGB(int No)
} }
/*****************************************************************************/ /*****************************************************************************/
void CTileSet::Render(Vec &CamPos,CMap &LBrush,CMap &RBrush,BOOL Render3d) void CTileSet::Render(Vector3 &CamPos,CMap &LBrush,CMap &RBrush,BOOL Render3d)
{ {
int ListSize=Tile.size(); int ListSize=Tile.size();
int TileID=0; int TileID=0;
@ -563,7 +587,7 @@ BOOL ValidTile=TRUE;
} }
/*****************************************************************************/ /*****************************************************************************/
void CTileSet::RenderCursor(Vec &CamPos,int CursorPos,int SelStart,int SelEnd) void CTileSet::RenderCursor(Vector3 &CamPos,int CursorPos,int SelStart,int SelEnd)
{ {
int ListSize=Tile.size(); int ListSize=Tile.size();
CPoint Start,End; CPoint Start,End;
@ -606,7 +630,7 @@ int MaxTile=Tile.size();
} }
/*****************************************************************************/ /*****************************************************************************/
void CTileSet::RenderGrid(Vec &CamPos) void CTileSet::RenderGrid(Vector3 &CamPos)
{ {
int ListSize=Tile.size(); int ListSize=Tile.size();
int TileID=1; // Dont bother with blank, its sorted int TileID=1; // Dont bother with blank, its sorted
@ -642,7 +666,7 @@ int TileID=1; // Dont bother with blank, its sorted
} }
/*****************************************************************************/ /*****************************************************************************/
int CTileSet::FindCursorPos(CCore *Core,CMapEditView *View,Vec &CamPos,CPoint &MousePos) int CTileSet::FindCursorPos(CCore *Core,CMapEditView *View,Vector3 &CamPos,CPoint &MousePos)
{ {
int ListSize=Tile.size(); int ListSize=Tile.size();
GLint Viewport[4]; GLint Viewport[4];

View file

@ -6,11 +6,13 @@
#define __TILESET_HEADER__ #define __TILESET_HEADER__
#include "stdafx.h" #include "stdafx.h"
#include "gl3d.h" //#include "gl3d.h"
#include <Vector3.h>
#include <gl\gl.h> #include <gl\gl.h>
#include <gl\glu.h> #include <gl\glu.h>
#include <gl\glut.h> #include <gl\glut.h>
#include <Vector> #include <Vector>
#include <gfname.hpp>
#include "TexCache.h" #include "TexCache.h"
#include "Tile.h" #include "Tile.h"
@ -55,9 +57,9 @@ public:
CMap &GetBrush(int i) {return(Brush[i]);} CMap &GetBrush(int i) {return(Brush[i]);}
CMap &GetActiveBrush() {return(GetBrush(ActiveBrush));} CMap &GetActiveBrush() {return(GetBrush(ActiveBrush));}
void RenderSet(CCore *Core,Vec &CamPos,BOOL Is3d); void RenderSet(CCore *Core,Vector3 &CamPos,BOOL Is3d);
void FindCursorPos(CCore *Core,CMapEditView *View,Vec &CamPos,CPoint &MousePos); void FindCursorPos(CCore *Core,CMapEditView *View,Vector3 &CamPos,CPoint &MousePos);
void RenderCursor(CCore *Core,Vec &CamPos,BOOL Is3d); void RenderCursor(CCore *Core,Vector3 &CamPos,BOOL Is3d);
void UpdateGUI(CCore *Core,BOOL IsTileView); void UpdateGUI(CCore *Core,BOOL IsTileView);
@ -104,17 +106,18 @@ public:
void Load2d(CCore *Core); void Load2d(CCore *Core);
void Load3d(CCore *Core); void Load3d(CCore *Core);
char *GetPath() {return(Path);} const char *GetPath() {return(Filename.Dir());}
char *GetName() {return(Name);} const char *GetName() {return(Filename.File());}
char *GetExt() {return(Ext);} const char *GetExt() {return(Filename.Ext());}
const char *GetFilename() {return(Filename.FullName());}
CTile &GetTile(int No) {return(Tile[No]);} CTile &GetTile(int No) {return(Tile[No]);}
void Purge(); void Purge();
int FindCursorPos(CCore *Core,CMapEditView *View,Vec &CamPos,CPoint &MousePos); int FindCursorPos(CCore *Core,CMapEditView *View,Vector3 &CamPos,CPoint &MousePos);
void Render(Vec &CamPos,CMap &LBrush,CMap &RBrush,BOOL Render3d); void Render(Vector3 &CamPos,CMap &LBrush,CMap &RBrush,BOOL Render3d);
void RenderCursor(Vec &CamPos,int Pos,int Width, int Height); void RenderCursor(Vector3 &CamPos,int Pos,int Width, int Height);
void RenderBrush(Vec &CamPos,CMap &LBrush,CMap &RBrush); void RenderBrush(Vector3 &CamPos,CMap &LBrush,CMap &RBrush);
void RenderGrid(Vec &CamPos); void RenderGrid(Vector3 &CamPos);
int GetTileBrowserWidth() {return(TileBrowserWidth);} int GetTileBrowserWidth() {return(TileBrowserWidth);}
BOOL IsTileValid(int No); BOOL IsTileValid(int No);
BOOL IsTileValidGB(int No); BOOL IsTileValidGB(int No);
@ -124,9 +127,8 @@ private:
BOOL Create16x16Tile(sRGBData &Src,u8 *Dst,int XOfs,int YOfs); BOOL Create16x16Tile(sRGBData &Src,u8 *Dst,int XOfs,int YOfs);
CPoint GetTilePos(int ID); CPoint GetTilePos(int ID);
char Drive[_MAX_DRIVE],Path[_MAX_DIR],Name[_MAX_FNAME],Ext[_MAX_EXT]; GFName Filename;
int SetNumber; int SetNumber;
// std::vector<CTile> Tile;
CList<CTile> Tile; CList<CTile> Tile;
BOOL Loaded; BOOL Loaded;
int TileBrowserWidth; int TileBrowserWidth;

View file

@ -41,6 +41,7 @@
#define IDC_NEWMAP_FORE_CHECK 1051 #define IDC_NEWMAP_FORE_CHECK 1051
#define IDC_NEW_LAYER_WIDTH_NAME2 1052 #define IDC_NEW_LAYER_WIDTH_NAME2 1052
#define IDC_NEW_LAYER_WIDTH_EDIT2 1053 #define IDC_NEW_LAYER_WIDTH_EDIT2 1053
#define IDC_RICHEDIT1 1054
#define ID_TOOLBAR_LAYERBAR 32773 #define ID_TOOLBAR_LAYERBAR 32773
#define ID_TOOLBAR_TILEPALETTE 32774 #define ID_TOOLBAR_TILEPALETTE 32774
#define ID_TOOLBAR_COMBO 32777 #define ID_TOOLBAR_COMBO 32777
@ -66,7 +67,7 @@
#define _APS_3D_CONTROLS 1 #define _APS_3D_CONTROLS 1
#define _APS_NEXT_RESOURCE_VALUE 172 #define _APS_NEXT_RESOURCE_VALUE 172
#define _APS_NEXT_COMMAND_VALUE 32797 #define _APS_NEXT_COMMAND_VALUE 32797
#define _APS_NEXT_CONTROL_VALUE 1053 #define _APS_NEXT_CONTROL_VALUE 1055
#define _APS_NEXT_SYMED_VALUE 101 #define _APS_NEXT_SYMED_VALUE 101
#endif #endif
#endif #endif

View file

@ -4,13 +4,13 @@
#include "stdafx.h" #include "stdafx.h"
#include "gl3d.h" //#include "gl3d.h"
#include <Vector3.h>
#include <gl\gl.h> #include <gl\gl.h>
#include <gl\glu.h> #include <gl\glu.h>
#include <gl\glut.h> #include <gl\glut.h>
#include <gl\glaux.h> // Header File For The Glaux Library #include <gl\glaux.h> // Header File For The Glaux Library
#include "GLEnabledView.h" #include "GLEnabledView.h"
#include "maths.h"
#include "Utils.H" #include "Utils.H"
@ -110,42 +110,6 @@ void BuildGLQuad(float XMin,float XMax,float YMin,float YMax,float Z)
/**************************************************************************************/ /**************************************************************************************/
/**************************************************************************************/ /**************************************************************************************/
/**************************************************************************************/
void TNormalise(TVECTOR &V)
{
float SqMag = V.length2();// v.x * v.x + v.y * v.y + v.z * v.z;
if (SqMag> 0.001f)
{
float Mag = (float)sqrt( SqMag);
V/=Mag;
}
}
/**************************************************************************************/
TVECTOR TCrossProduct(TVECTOR const &V0,TVECTOR const &V1,const TVECTOR &V2 )
{
TVECTOR DV1, DV2;
TVECTOR Out;
DV1.X() = V1.X() - V0.X();
DV1.Y() = V1.Y() - V0.Y();
DV1.Z() = V1.Z() - V0.Z();
DV2.X() = V2.X() - V0.X();
DV2.Y() = V2.Y() - V0.Y();
DV2.Z() = V2.Z() - V0.Z();
Out.SetX( (DV1.Z() * DV2.Y()) - (DV1.Y() * DV2.Z()) );
Out.SetY( (DV1.X() * DV2.Z()) - (DV1.Z() * DV2.X()) );
Out.SetZ( (DV1.Y() * DV2.X()) - (DV1.X() * DV2.Y()) );
TNormalise(Out);
return Out;
}
/**************************************************************************************/ /**************************************************************************************/
CPoint IDToPoint(int ID,int Width) CPoint IDToPoint(int ID,int Width)
{ {

View file

@ -5,7 +5,7 @@
#ifndef __UTILS_HEADER__ #ifndef __UTILS_HEADER__
#define __UTILS_HEADER__ #define __UTILS_HEADER__
#include "maths.h" #include <vector3.h>
#include <gl\gl.h> #include <gl\gl.h>
#include <gl\glu.h> #include <gl\glu.h>
#include <gl\glut.h> #include <gl\glut.h>
@ -40,16 +40,13 @@ void BuildGLBoxNoNormals(float XMin,float XMax,float YMin,float YMax,float ZMin,
void BuildGLQuad(float XMin,float XMax,float YMin,float YMax,float Z); void BuildGLQuad(float XMin,float XMax,float YMin,float YMax,float Z);
int LoadGLTexture(char *FileName, GLuint &Text,int &Width,int &Height); 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 );
CPoint IDToPoint(int ID,int Width); CPoint IDToPoint(int ID,int Width);
int PointToID(CPoint &Pnt,int Width); int PointToID(CPoint &Pnt,int Width);
void SaveTGA(char *Filename,int W,int H,u8 *Data); void SaveTGA(char *Filename,int W,int H,u8 *Data);
void SaveBmp(char *Filename,int Width,int Height,RGBQUAD *Pal,u8 *Image); void SaveBmp(char *Filename,int Width,int Height,RGBQUAD *Pal,u8 *Image);
void BGR2RGB(int W,int H,u8 *Data); void BGR2RGB(int W,int H,u8 *Data);
void SetFileExt(char *InName,char *OutName,char *Ext); void SetFileExt(char *InName,char *OutName,char *Ext);