This commit is contained in:
parent
f54041ef04
commit
db53ce744a
18 changed files with 193 additions and 162 deletions
|
@ -43,6 +43,9 @@ protected:
|
|||
|
||||
} ;
|
||||
|
||||
#define ASSERT(x) if (!(x)) GObject::Error(ERR_FATAL,"%s %s %i\n",#x,__FILE__,__LINE__);
|
||||
|
||||
|
||||
//***************************************************************************
|
||||
GString CheckFileString(const char * Str);
|
||||
bool CheckPlusMinus(const char * Str);
|
||||
|
|
|
@ -14,11 +14,6 @@
|
|||
#include "PsxTypes.h"
|
||||
#include <algorithm>
|
||||
|
||||
//***************************************************************************
|
||||
//vector<GString> CFaceStore::TexList;
|
||||
//CTexGrab CFaceStore::FaceStoreTexGrab;
|
||||
//CTexGrab *CFaceStore::TexGrab=&FaceStoreTexGrab;
|
||||
|
||||
//***************************************************************************
|
||||
Vector3 normalise(Vector3 &v)
|
||||
{
|
||||
|
@ -108,53 +103,52 @@ CFace F;
|
|||
}
|
||||
|
||||
F.TexName=Tex;
|
||||
// F.Mat = AddTex(Tex);
|
||||
// F.Normal = crossProduct( F.vtx[0], F.vtx[1], F.vtx[2] );
|
||||
// F.Avail = true;
|
||||
// F.ID=ID;
|
||||
|
||||
F.Mat = -1;
|
||||
return(AddFace(F));
|
||||
}
|
||||
|
||||
//***************************************************************************
|
||||
CFace &CFaceStore::AddFace(CFace &Face)
|
||||
CFace &CFaceStore::AddFace(CFace &F,bool ProcessTexFlag)
|
||||
{
|
||||
int ListSize=FaceList.size();
|
||||
FaceList.resize(ListSize+1);
|
||||
CFace &F = FaceList[ListSize];
|
||||
F=Face;
|
||||
|
||||
// Process Vtx's
|
||||
for (int i=0; i<3; i++)
|
||||
{
|
||||
F.pts[i]=AddVtx(F.vtx[i]*Scale);
|
||||
F.pts[i]=AddVtx(F.vtx[i]);
|
||||
}
|
||||
|
||||
F.Mat=AddTex(Face.TexName);
|
||||
if (ProcessTexFlag && F.Mat==-1)
|
||||
{
|
||||
F.Mat=AddTex(F.TexName);
|
||||
}
|
||||
F.Normal = crossProduct( F.vtx[0], F.vtx[1], F.vtx[2] );
|
||||
F.Avail = true;
|
||||
|
||||
FaceList[ListSize]=F;
|
||||
return(F);
|
||||
}
|
||||
|
||||
//***************************************************************************
|
||||
void CFaceStore::AddFaces(vector<CFace> &Faces)
|
||||
void CFaceStore::AddFaces(vector<CFace> &Faces,bool ProcessTexFlag)
|
||||
{
|
||||
int ListSize=Faces.size();
|
||||
|
||||
for (int i=0 ;i<ListSize ;i++)
|
||||
{
|
||||
AddFace(Faces[i]);
|
||||
AddFace(Faces[i],ProcessTexFlag);
|
||||
}
|
||||
}
|
||||
|
||||
//***************************************************************************
|
||||
void CFaceStore::AddFaces(CFaceStore &Faces)
|
||||
void CFaceStore::AddFaces(CFaceStore &Faces,bool ProcessTexFlag)
|
||||
{
|
||||
int ListSize=Faces.GetFaceCount();
|
||||
|
||||
for (int i=0 ;i<ListSize ;i++)
|
||||
{
|
||||
AddFace(Faces[i]);
|
||||
AddFace(Faces[i],ProcessTexFlag);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -189,30 +183,28 @@ CFace &F = FaceList[ListSize];
|
|||
//***************************************************************************
|
||||
int CFaceStore::AddTex(GString const &TexName)
|
||||
{
|
||||
static GString LastTex;
|
||||
static int LastIdx=-1;
|
||||
vector<FileInfo> const &TexList=TexGrab->GetTexInfoList();
|
||||
int ListSize=TexList.size();
|
||||
GString Filename=TexName;
|
||||
Filename.Upper();
|
||||
|
||||
for (int i=0; i<ListSize; i++)
|
||||
GString Filename=TexName;
|
||||
Filename.Lower();
|
||||
|
||||
LastTex=Filename;
|
||||
|
||||
for (LastIdx=0; LastIdx<ListSize; LastIdx++)
|
||||
{
|
||||
if (TexList[i].Name==Filename) return(TexList[i].TexGrabId);
|
||||
GString const &ListName=TexList[LastIdx].GetActualFileName();
|
||||
if (ListName==Filename) return(LastIdx);
|
||||
}
|
||||
// Does file exist
|
||||
if (!FindFile(TexName))
|
||||
GObject::Error(ERR_FATAL,"Texture not found %s!!\n",TexName);
|
||||
|
||||
|
||||
|
||||
|
||||
TexList.resize(ListSize+1);
|
||||
sFaceTexList &New=TexList[ListSize];
|
||||
|
||||
New.Name=Filename;
|
||||
|
||||
// printf("Add Tex %s\n",TexName);
|
||||
New.TexGrabId=TexGrab->AddFile(Filename);
|
||||
|
||||
return(New.TexGrabId);
|
||||
TexGrab->AddFile(Filename);
|
||||
LastIdx=ListSize;
|
||||
return(ListSize);
|
||||
}
|
||||
|
||||
//***************************************************************************
|
||||
|
@ -255,6 +247,7 @@ void CFaceStore::SetupUV(CFace const &In, sTri &Out)
|
|||
{
|
||||
vector<sTexOutInfo> &TexInfo=TexGrab->GetTexInfo();
|
||||
sTexOutInfo &ThisTex=TexInfo[In.Mat];
|
||||
ASSERT(In.Mat<TexInfo.size());
|
||||
|
||||
int W = ThisTex.w - 1;
|
||||
int H = ThisTex.h - 1;
|
||||
|
@ -326,9 +319,9 @@ int CFaceStore::AddVtx(Vector3 &InVtx)
|
|||
int ListSize=OutVtxList.size();
|
||||
sVtx ThisVtx;
|
||||
|
||||
ThisVtx.vx=round(InVtx.x);
|
||||
ThisVtx.vy=round(InVtx.y);
|
||||
ThisVtx.vz=round(InVtx.z);
|
||||
ThisVtx.vx=round(InVtx.x*Scale);
|
||||
ThisVtx.vy=round(InVtx.y*Scale);
|
||||
ThisVtx.vz=round(InVtx.z*Scale);
|
||||
|
||||
for (int i=0; i<ListSize; i++)
|
||||
{
|
||||
|
|
|
@ -15,15 +15,33 @@
|
|||
using namespace std;
|
||||
|
||||
//***************************************************************************
|
||||
/*
|
||||
struct sFaceTexList
|
||||
{
|
||||
GString Name;
|
||||
int TexGrabId;
|
||||
};
|
||||
|
||||
*/
|
||||
//***************************************************************************
|
||||
class CFace
|
||||
{
|
||||
public:
|
||||
// int PntCount;
|
||||
int Mat;
|
||||
Vector3 vtx[4];
|
||||
int pts[4];
|
||||
int idx[4];
|
||||
sUV uvs[4];
|
||||
int vis[4];
|
||||
Vector3 Normal;
|
||||
bool Avail;
|
||||
int ID;
|
||||
GString TexName;
|
||||
};
|
||||
|
||||
/*
|
||||
class CFace
|
||||
{
|
||||
public:
|
||||
CFace()
|
||||
{
|
||||
|
@ -34,6 +52,7 @@ public:
|
|||
vis.resize(3);
|
||||
}
|
||||
|
||||
// int PntCount;
|
||||
int Mat;
|
||||
vector<Vector3> vtx;
|
||||
vector<int> pts;
|
||||
|
@ -46,6 +65,7 @@ public:
|
|||
GString TexName;
|
||||
};
|
||||
|
||||
*/
|
||||
//***************************************************************************
|
||||
#ifndef sTriFace
|
||||
struct sTriFace
|
||||
|
@ -67,9 +87,9 @@ public:
|
|||
~CFaceStore(){};
|
||||
|
||||
CFace &AddFace(vector<Vector3> const &P, const sGinTri &T, const sUVTri &uv,GString const &Tex,int ID=0);
|
||||
CFace &AddFace(CFace &F);
|
||||
void AddFaces(vector<CFace>&Faces);
|
||||
void AddFaces(CFaceStore &Faces);
|
||||
CFace &AddFace(CFace &F,bool TexFlag=true);
|
||||
void AddFaces(vector<CFace>&Faces,bool TexFlag=true);
|
||||
void AddFaces(CFaceStore &Faces,bool TexFlag=true);
|
||||
|
||||
CFace &AddFace(sTriFace &Face,int ID=0);
|
||||
|
||||
|
@ -135,7 +155,7 @@ private:
|
|||
int MaxStrip;
|
||||
|
||||
vector<CFace> FaceList;
|
||||
vector<sFaceTexList> TexList;
|
||||
// vector<sFaceTexList> TexList;
|
||||
CTexGrab FaceStoreTexGrab,*TexGrab;
|
||||
|
||||
vector<CFace> TriFaceList;
|
||||
|
|
|
@ -138,7 +138,13 @@ int Idx=MyFiles.AddMemFrame(UpperName,Frame);
|
|||
return(Idx);
|
||||
}
|
||||
|
||||
vector<FileInfo> const &CTexGrab::GetTexInfoList()
|
||||
{
|
||||
return(MyFiles.GetFileInfoVector());
|
||||
|
||||
}
|
||||
/*
|
||||
|
||||
|
||||
/*===========================================================================
|
||||
end */
|
||||
|
|
|
@ -84,6 +84,8 @@ public:
|
|||
void SetTPage(int Base,int W,int H) {m_PageBase=Base; m_WidthPages=W; m_HeightPages=H; m_PagePlacements=true;}
|
||||
void ForceOffsets(int XOfs,int YOfs) {MyFiles.SetXOff(XOfs); MyFiles.SetYOff(YOfs); MyFiles.SetForceOffsets(true);}
|
||||
|
||||
vector<FileInfo> const &CTexGrab::GetTexInfoList();
|
||||
|
||||
std::vector<sTexOutInfo> &GetTexInfo() {return(TexInfo);}
|
||||
|
||||
|
||||
|
|
|
@ -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" /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 BASE RSC /l 0x809 /d "NDEBUG"
|
||||
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue