-#include "Models.h"
-//#include "altivec.h"
+/*
+Copyright (C) 2003, 2010 - Wolfire Games
+
+This file is part of Lugaru.
+
+Lugaru is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+
#include "Game.h"
+#include "Models.h"
extern float multiplier;
extern float viewdistance;
extern bool decals;
extern int loadscreencolor;
-#include "Game.h"
extern Game * pgame;
extern bool visibleloading;
-//Functions
-void *allocate_aligned(size_t pointer_size, size_t byte_alignment)
-{
- uintptr_t pointer = (uintptr_t)malloc(pointer_size + byte_alignment + 1);
- uintptr_t aligned_pointer = (pointer + byte_alignment + 1);
- aligned_pointer -= (aligned_pointer % byte_alignment);
- *(uint8_t *)(aligned_pointer - 1) = (aligned_pointer - pointer);
- return (void *)aligned_pointer;
-}
-
-void free_aligned(void *aligned_pointer)
-{
- free((uint8_t *)(aligned_pointer) - *((uint8_t *)(aligned_pointer) - 1));
-}
-
-void dealloc(void* param){
- free(param);
- param=0;
-}
int Model::LineCheck(XYZ *p1,XYZ *p2, XYZ *p, XYZ *move, float *rotate)
{
}
}
-bool Model::loadnotex(char *filename )
+bool Model::loadnotex(const char *filename )
{
FILE *tfile;
long i;
type=notextype;
color=0;
- tfile=fopen( filename, "rb" );
+ tfile=fopen( ConvertFileName(filename), "rb" );
// read model settings
fseek(tfile, 0, SEEK_SET);
funpackf(tfile, "Bs Bs", &vertexNum, &TriangleNum);
// read the model data
- /*if(owner)dealloc(owner);
- if(possible)dealloc(possible);
- if(vertex)dealloc(vertex);
- if(normals)dealloc(normals);
- if(facenormals)dealloc(facenormals);
- if(Triangles)dealloc(Triangles);
- if(vArray)dealloc(vArray);*/
deallocate();
numpossible=0;
}
-bool Model::load(char *filename,bool texture )
+bool Model::load(const char *filename,bool texture )
{
FILE *tfile;
long i;
type = normaltype;
color=0;
- tfile=fopen( filename, "rb" );
+ tfile=fopen( ConvertFileName(filename), "rb" );
// read model settings
funpackf(tfile, "Bs Bs", &vertexNum, &TriangleNum);
// read the model data
- /*if(owner)dealloc(owner);
- if(possible)dealloc(possible);
- if(vertex)dealloc(vertex);
- if(normals)dealloc(normals);
- if(facenormals)dealloc(facenormals);
- if(Triangles)dealloc(Triangles);
- if(vArray)dealloc(vArray);*/
deallocate();
numpossible=0;
return 1;
}
-bool Model::loaddecal(char *filename,bool texture )
+bool Model::loaddecal(const char *filename,bool texture )
{
FILE *tfile;
long i,j;
LOGFUNC;
- LOG(std::string("Loading decal...") + filename);
+ // Changing the filename so that its more os specific
+ char * FixedFN = ConvertFileName(filename);
+
+ LOG(std::string("Loading decal...") + FixedFN);
int oldvertexNum,oldTriangleNum;
oldvertexNum=vertexNum;
numdecals=0;
color=0;
- tfile=fopen( filename, "rb" );
+ tfile=fopen( FixedFN, "rb" );
// read model settings
// read the model data
- /*if(owner)dealloc(owner);
- if(possible)dealloc(possible);
- if(vertex)dealloc(vertex);
- if(normals)dealloc(normals);
- if(facenormals)dealloc(facenormals);
- if(Triangles)dealloc(Triangles);
- if(vArray)dealloc(vArray);*/
deallocate();
numpossible=0;
type = rawtype;
color=0;
- tfile=fopen( filename, "rb" );
+ tfile=fopen( ConvertFileName(filename), "rb" );
// read model settings
funpackf(tfile, "Bs Bs", &vertexNum, &TriangleNum);
// read the model data
- /*if(owner)dealloc(owner);
- if(possible)dealloc(possible);
- if(vertex)dealloc(vertex);
- if(normals)dealloc(normals);
- if(facenormals)dealloc(facenormals);
- if(Triangles)dealloc(Triangles);
- if(vArray)dealloc(vArray);*/
deallocate();
numpossible=0;
{
int i = 0, j = 0;
- if(owner)dealloc(owner);
+ if(owner)free(owner);
owner = 0;
- if(possible)dealloc(possible);
+ if(possible)free(possible);
possible = 0;
- if(vertex)dealloc(vertex);
+ if(vertex)free(vertex);
vertex = 0;
- if(normals)dealloc(normals);
+ if(normals)free(normals);
normals = 0;
- if(facenormals)dealloc(facenormals);
+ if(facenormals)free(facenormals);
facenormals = 0;
- if(Triangles)dealloc(Triangles);
+ if(Triangles)free(Triangles);
Triangles = 0;
- if(vArray)dealloc(vArray);
+ if(vArray)free(vArray);
vArray = 0;
{
for(j=0;j<3;j++)
{
- dealloc(decaltexcoords[i][j]);
+ free(decaltexcoords[i][j]);
}
- dealloc(decaltexcoords[i]);
+ free(decaltexcoords[i]);
}
- dealloc(decaltexcoords);
+ free(decaltexcoords);
}
decaltexcoords = 0;
{
for(i=0;i<max_model_decals;i++)
{
- dealloc(decalvertex[i]);
+ free(decalvertex[i]);
}
- dealloc(decalvertex);
+ free(decalvertex);
}
decalvertex = 0;
- dealloc(decaltype);
+ free(decaltype);
decaltype = 0;
- dealloc(decalopacity);
+ free(decalopacity);
decalopacity = 0;
- dealloc(decalrotation);
+ free(decalrotation);
decalrotation = 0;
- dealloc(decalalivetime);
+ free(decalalivetime);
decalalivetime = 0;
- dealloc(decalposition);
+ free(decalposition);
decalposition = 0;
};