/*
Copyright (C) 2003, 2010 - Wolfire Games
+Copyright (C) 2010-2016 - Lugaru contributors (see AUTHORS file)
This file is part of Lugaru.
#include "Game.h"
#include "Models.h"
+#include "Utils/Folders.h"
extern float multiplier;
extern float viewdistance;
static int firstintersecting;
static XYZ point;
static XYZ oldp1;
- static XYZ start, end;
firstintersecting = -1;
static int firstintersecting;
static XYZ point;
static XYZ oldp1;
- static XYZ start, end;
firstintersecting = -1;
}
}
-bool Model::loadnotex(const char *filename )
+bool Model::loadnotex(const std::string& filename )
{
FILE *tfile;
long i;
- //~ int oldvertexNum, oldTriangleNum;
- //~ oldvertexNum = vertexNum;
- //~ oldTriangleNum = TriangleNum;
-
type = notextype;
color = 0;
- tfile = fopen( ConvertFileName(filename), "rb" );
+ tfile = Folders::openMandatoryFile( Folders::getResourcePath(filename), "rb" );
+
// read model settings
fseek(tfile, 0, SEEK_SET);
}
for (i = 0; i < TriangleNum; i++) {
- //funpackf(tfile, "Bi Bi Bi", &Triangles[i].vertex[0], &Triangles[i].vertex[1], &Triangles[i].vertex[2]);
short vertex[ 6];
funpackf(tfile, "Bs Bs Bs Bs Bs Bs", &vertex[ 0], &vertex[ 1], &vertex[ 2], &vertex[ 3], &vertex[ 4], &vertex[ 5]);
Triangles[i].vertex[ 0] = vertex[ 0];
}
boundingsphereradius = fast_sqrt(boundingsphereradius);
- return 1;
+ return true;
}
-bool Model::load(const char *filename, bool texture )
+bool Model::load(const std::string& filename, bool texture )
{
FILE *tfile;
long i;
if (visibleloading)
Game::LoadingScreen();
- //~ int oldvertexNum, oldTriangleNum;
- //~ oldvertexNum = vertexNum;
- //~ oldTriangleNum = TriangleNum;
-
type = normaltype;
color = 0;
- tfile = fopen( ConvertFileName(filename), "rb" );
- // read model settings
+ tfile = Folders::openMandatoryFile( Folders::getResourcePath(filename), "rb" );
+ // read model settings
fseek(tfile, 0, SEEK_SET);
funpackf(tfile, "Bs Bs", &vertexNum, &TriangleNum);
}
for (i = 0; i < TriangleNum; i++) {
- //funpackf(tfile, "Bi Bi Bi", &Triangles[i].vertex[0], &Triangles[i].vertex[1], &Triangles[i].vertex[2]);
short vertex[ 6];
funpackf(tfile, "Bs Bs Bs Bs Bs Bs", &vertex[ 0], &vertex[ 1], &vertex[ 2], &vertex[ 3], &vertex[ 4], &vertex[ 5]);
Triangles[i].vertex[ 0] = vertex[ 0];
}
boundingsphereradius = fast_sqrt(boundingsphereradius);
- return 1;
+ return true;
}
-bool Model::loaddecal(const char *filename, bool texture )
+bool Model::loaddecal(const std::string& filename, bool texture )
{
FILE *tfile;
long i, j;
LOGFUNC;
- // Changing the filename so that its more os specific
- char * FixedFN = ConvertFileName(filename);
-
- LOG(std::string("Loading decal...") + FixedFN);
+ LOG(std::string("Loading decal...") + Folders::getResourcePath(filename));
type = decalstype;
numdecals = 0;
color = 0;
- tfile = fopen( FixedFN, "rb" );
- // read model settings
+ tfile = Folders::openMandatoryFile( Folders::getResourcePath(filename), "rb" );
+ // read model settings
fseek(tfile, 0, SEEK_SET);
funpackf(tfile, "Bs Bs", &vertexNum, &TriangleNum);
}
for (i = 0; i < TriangleNum; i++) {
- //funpackf(tfile, "Bi Bi Bi", &Triangles[i].vertex[0], &Triangles[i].vertex[1], &Triangles[i].vertex[2]);
short vertex[ 6];
funpackf(tfile, "Bs Bs Bs Bs Bs Bs", &vertex[ 0], &vertex[ 1], &vertex[ 2], &vertex[ 3], &vertex[ 4], &vertex[ 5]);
Triangles[i].vertex[ 0] = vertex[ 0];
decalposition = (XYZ*)malloc(sizeof(XYZ) * max_model_decals);
}
- return 1;
+ return true;
}
-bool Model::loadraw(char *filename )
+bool Model::loadraw(const std::string& filename)
{
FILE *tfile;
long i;
LOG(std::string("Loading raw...") + filename);
- //~ int oldvertexNum, oldTriangleNum;
- //~ oldvertexNum = vertexNum;
- //~ oldTriangleNum = TriangleNum;
-
type = rawtype;
color = 0;
- tfile = fopen( ConvertFileName(filename), "rb" );
- // read model settings
+ tfile = Folders::openMandatoryFile( Folders::getResourcePath(filename), "rb" );
+ // read model settings
fseek(tfile, 0, SEEK_SET);
funpackf(tfile, "Bs Bs", &vertexNum, &TriangleNum);
}
for (i = 0; i < TriangleNum; i++) {
- //funpackf(tfile, "Bi Bi Bi", &Triangles[i].vertex[0], &Triangles[i].vertex[1], &Triangles[i].vertex[2]);
short vertex[ 6];
funpackf(tfile, "Bs Bs Bs Bs Bs Bs", &vertex[ 0], &vertex[ 1], &vertex[ 2], &vertex[ 3], &vertex[ 4], &vertex[ 5]);
Triangles[i].vertex[ 0] = vertex[ 0];
owner[i] = -1;
}
- return 1;
+ return true;
}
glInterleavedArrays( GL_T2F_C3F_V3F, 8 * sizeof(GLfloat), &vArray[0]);
textureptr.bind();
-#if PLATFORM_MACOSX
- glLockArraysEXT( 0, TriangleNum * 3);
-#endif
glDrawArrays(GL_TRIANGLES, 0, TriangleNum * 3);
-#if PLATFORM_MACOSX
- glUnlockArraysEXT();
-#endif
-
if (!color)
glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
- //drawimmediate();
}
//TODO: phase out in favor of Texture