summaryrefslogtreecommitdiffstats
path: root/src/graphics/common/modelfile.cpp
diff options
context:
space:
mode:
authorPiotr Dziwinski <piotrdz@gmail.com>2012-07-15 19:17:49 +0200
committerPiotr Dziwinski <piotrdz@gmail.com>2012-07-15 19:17:49 +0200
commit54f4da87923465a5387e2e854b58616647deb7af (patch)
treefc52b1866b29393be7d61a2341f04d430c078fdd /src/graphics/common/modelfile.cpp
parenteca6d26459200d2956d64ccf8a2713d96a82c989 (diff)
downloadcolobot-54f4da87923465a5387e2e854b58616647deb7af.tar.gz
colobot-54f4da87923465a5387e2e854b58616647deb7af.tar.bz2
colobot-54f4da87923465a5387e2e854b58616647deb7af.zip
Fix in model loading; simple model viewer
- fixed model loading code - added simple model viewer (model_test) in src/graphics/opengl/test - added system time stamp code - split the code in app/system modules to separate headers - added debug messages in model loading - minor fixes in OpenGL engine
Diffstat (limited to 'src/graphics/common/modelfile.cpp')
-rw-r--r--src/graphics/common/modelfile.cpp38
1 files changed, 32 insertions, 6 deletions
diff --git a/src/graphics/common/modelfile.cpp b/src/graphics/common/modelfile.cpp
index 8e509fe..22801e8 100644
--- a/src/graphics/common/modelfile.cpp
+++ b/src/graphics/common/modelfile.cpp
@@ -21,6 +21,7 @@
#include "common/iman.h"
#include "common/ioutils.h"
+#include "common/logger.h"
#include "common/stringutils.h"
#include "math/geometry.h"
@@ -205,8 +206,6 @@ Gfx::Material ReadBinaryMaterial(std::istream &stream)
/* power = */ IOUtils::ReadBinaryFloat(stream);
- /* padding? */ IOUtils::ReadBinary<2, unsigned int>(stream);
-
return result;
}
@@ -233,8 +232,6 @@ void WriteBinaryMaterial(Gfx::Material material, std::ostream &stream)
/* emissive.a */ IOUtils::WriteBinaryFloat(0.0f, stream);
/* power */ IOUtils::WriteBinaryFloat(0.0f, stream);
-
- /* padding? */ IOUtils::WriteBinary<2, unsigned int>(0, stream);
}
Gfx::ModelTriangle::ModelTriangle()
@@ -390,6 +387,8 @@ bool Gfx::CModelFile::ReadModel(std::istream &stream, bool edit, bool meta)
t.used = IOUtils::ReadBinary<1, char>(stream);
t.selected = IOUtils::ReadBinary<1, char>(stream);
+ /* padding */ IOUtils::ReadBinary<2, unsigned int>(stream);
+
t.p1 = ReadBinaryVertexTex2(stream);
t.p2 = ReadBinaryVertexTex2(stream);
t.p3 = ReadBinaryVertexTex2(stream);
@@ -422,16 +421,38 @@ bool Gfx::CModelFile::ReadModel(std::istream &stream, bool edit, bool meta)
triangle.min = t.min;
triangle.max = t.max;
triangle.state = t.state;
- sprintf(tex2Name, "dirty%.2d.tga", t.texNum2); // hardcoded as in the original code
+
+ if (t.texNum2 != 0)
+ sprintf(tex2Name, "dirty%.2d.tga", t.texNum2); // hardcoded as in the original code
+
triangle.tex2Name = std::string(tex2Name);
m_triangles.push_back(triangle);
- }
+ }
}
for (int i = 0; i < (int) m_triangles.size(); ++i)
+ {
m_triangles[i].tex1Name = StrUtils::Replace(m_triangles[i].tex1Name, "bmp", "tga");
+ GetLogger()->Info("ModelTriangle %d\n", i+1);
+ std::string s1 = m_triangles[i].p1.ToString();
+ GetLogger()->Info(" p1: %s\n", s1.c_str());
+ std::string s2 = m_triangles[i].p2.ToString();
+ GetLogger()->Info(" p2: %s\n", s2.c_str());
+ std::string s3 = m_triangles[i].p3.ToString();
+ GetLogger()->Info(" p3: %s\n", s3.c_str());
+
+ std::string d = m_triangles[i].material.diffuse.ToString();
+ std::string a = m_triangles[i].material.ambient.ToString();
+ std::string s = m_triangles[i].material.specular.ToString();
+ GetLogger()->Info(" mat: d: %s a: %s s: %s\n", d.c_str(), a.c_str(), s.c_str());
+
+ GetLogger()->Info(" tex1: %s tex2: %s\n", m_triangles[i].tex1Name.c_str(), m_triangles[i].tex2Name.c_str());
+ GetLogger()->Info(" min: %.2f max: %.2f\n", m_triangles[i].min, m_triangles[i].max);
+ GetLogger()->Info(" state: %ld\n", m_triangles[i].state);
+ }
+
/*
if (! edit)
{
@@ -769,6 +790,11 @@ void Gfx::CModelFile::Mirror()
}
}
+std::vector<Gfx::ModelTriangle>& Gfx::CModelFile::GetTriangles()
+{
+ return m_triangles;
+}
+
int Gfx::CModelFile::GetTriangleCount()
{
return m_triangles.size();