Commit 2df80134 authored by hybrid's avatar hybrid

Fixed color problem in loader and added to Makefile.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@933 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 1d7eea60
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// This file is part of the "Irrlicht Engine". // This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h // For conditions of distribution and use, see copyright notice in irrlicht.h
#include "IrrCompileConfig.h" #include "IrrCompileConfig.h"
#ifdef _IRR_COMPILE_WITH_IRR_MESH_LOADER_ #ifdef _IRR_COMPILE_WITH_IRR_MESH_LOADER_
#include "CIrrMeshFileLoader.h" #include "CIrrMeshFileLoader.h"
...@@ -24,9 +24,8 @@ namespace scene ...@@ -24,9 +24,8 @@ namespace scene
//! Constructor //! Constructor
CIrrMeshFileLoader::CIrrMeshFileLoader(video::IVideoDriver* driver, CIrrMeshFileLoader::CIrrMeshFileLoader(video::IVideoDriver* driver,
scene::ISceneManager* smgr, io::IFileSystem* fs) scene::ISceneManager* smgr, io::IFileSystem* fs)
: Driver(driver), SceneManager(smgr), FileSystem(fs) : Driver(driver), SceneManager(smgr), FileSystem(fs)
{ {
} }
...@@ -41,7 +40,7 @@ CIrrMeshFileLoader::~CIrrMeshFileLoader() ...@@ -41,7 +40,7 @@ CIrrMeshFileLoader::~CIrrMeshFileLoader()
bool CIrrMeshFileLoader::isALoadableFileExtension(const c8* fileName) bool CIrrMeshFileLoader::isALoadableFileExtension(const c8* fileName)
{ {
return strstr(fileName, ".xml") || return strstr(fileName, ".xml") ||
strstr(fileName, ".irrmesh"); strstr(fileName, ".irrmesh");
} }
...@@ -92,7 +91,7 @@ IAnimatedMesh* CIrrMeshFileLoader::readMesh(io::IXMLReader* reader) ...@@ -92,7 +91,7 @@ IAnimatedMesh* CIrrMeshFileLoader::readMesh(io::IXMLReader* reader)
core::stringc bbSectionName = "boundingBox"; core::stringc bbSectionName = "boundingBox";
core::stringc bufferSectionName = "buffer"; core::stringc bufferSectionName = "buffer";
core::stringc meshSectionName = "mesh"; core::stringc meshSectionName = "mesh";
if (!reader->isEmptyElement()) if (!reader->isEmptyElement())
while(reader->read()) while(reader->read())
{ {
...@@ -141,7 +140,7 @@ IAnimatedMesh* CIrrMeshFileLoader::readMesh(io::IXMLReader* reader) ...@@ -141,7 +140,7 @@ IAnimatedMesh* CIrrMeshFileLoader::readMesh(io::IXMLReader* reader)
//! reads a mesh sections and creates a mesh buffer from it //! reads a mesh sections and creates a mesh buffer from it
IMeshBuffer* CIrrMeshFileLoader::readMeshBuffer(io::IXMLReader* reader) IMeshBuffer* CIrrMeshFileLoader::readMeshBuffer(io::IXMLReader* reader)
{ {
IMeshBuffer* buffer = 0; IMeshBuffer* buffer = 0;
SMeshBuffer* sbuffer1 = 0; SMeshBuffer* sbuffer1 = 0;
SMeshBufferLightMap* sbuffer2 = 0; SMeshBufferLightMap* sbuffer2 = 0;
SMeshBufferTangents* sbuffer3 = 0; SMeshBufferTangents* sbuffer3 = 0;
...@@ -159,7 +158,7 @@ IMeshBuffer* CIrrMeshFileLoader::readMeshBuffer(io::IXMLReader* reader) ...@@ -159,7 +158,7 @@ IMeshBuffer* CIrrMeshFileLoader::readMeshBuffer(io::IXMLReader* reader)
int indexCount = 0; int indexCount = 0;
video::SMaterial material; video::SMaterial material;
if (!reader->isEmptyElement()) if (!reader->isEmptyElement())
while(reader->read()) while(reader->read())
{ {
...@@ -189,7 +188,7 @@ IMeshBuffer* CIrrMeshFileLoader::readMeshBuffer(io::IXMLReader* reader) ...@@ -189,7 +188,7 @@ IMeshBuffer* CIrrMeshFileLoader::readMeshBuffer(io::IXMLReader* reader)
core::stringc vertexTypeName1 = "standard"; core::stringc vertexTypeName1 = "standard";
core::stringc vertexTypeName2 = "2tcoords"; core::stringc vertexTypeName2 = "2tcoords";
core::stringc vertexTypeName3 = "tangents"; core::stringc vertexTypeName3 = "tangents";
const wchar_t* vertexType = reader->getAttributeValue(L"type"); const wchar_t* vertexType = reader->getAttributeValue(L"type");
vertexCount = reader->getAttributeValueAsInt(L"vertexCount"); vertexCount = reader->getAttributeValueAsInt(L"vertexCount");
...@@ -309,36 +308,36 @@ void CIrrMeshFileLoader::readMeshBuffer(io::IXMLReader* reader, int vertexCount, ...@@ -309,36 +308,36 @@ void CIrrMeshFileLoader::readMeshBuffer(io::IXMLReader* reader, int vertexCount,
for (int i=0; i<vertexCount && *p; ++i) for (int i=0; i<vertexCount && *p; ++i)
{ {
// position // position
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Pos.X = readFloat(&p); vtx.Pos.X = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Pos.Y = readFloat(&p); vtx.Pos.Y = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Pos.Z = readFloat(&p); vtx.Pos.Z = readFloat(&p);
// normal // normal
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Normal.X = readFloat(&p); vtx.Normal.X = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Normal.Y = readFloat(&p); vtx.Normal.Y = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Normal.Z = readFloat(&p); vtx.Normal.Z = readFloat(&p);
// color // color
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
sscanf(p, "%08x", &vtx.Color); sscanf(p, "%08x", &vtx.Color.color);
skipCurrentNoneWhiteSpace(&p); skipCurrentNoneWhiteSpace(&p);
// tcoord1 // tcoord1
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.TCoords.X = readFloat(&p); vtx.TCoords.X = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.TCoords.Y = readFloat(&p); vtx.TCoords.Y = readFloat(&p);
sbuffer->Vertices.push_back(vtx); sbuffer->Vertices.push_back(vtx);
} }
...@@ -357,43 +356,43 @@ void CIrrMeshFileLoader::readMeshBuffer(io::IXMLReader* reader, int vertexCount, ...@@ -357,43 +356,43 @@ void CIrrMeshFileLoader::readMeshBuffer(io::IXMLReader* reader, int vertexCount,
for (int i=0; i<vertexCount && *p; ++i) for (int i=0; i<vertexCount && *p; ++i)
{ {
// position // position
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Pos.X = readFloat(&p); vtx.Pos.X = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Pos.Y = readFloat(&p); vtx.Pos.Y = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Pos.Z = readFloat(&p); vtx.Pos.Z = readFloat(&p);
// normal // normal
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Normal.X = readFloat(&p); vtx.Normal.X = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Normal.Y = readFloat(&p); vtx.Normal.Y = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Normal.Z = readFloat(&p); vtx.Normal.Z = readFloat(&p);
// color // color
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
sscanf(p, "%08x", &vtx.Color); sscanf(p, "%08x", &vtx.Color.color);
skipCurrentNoneWhiteSpace(&p); skipCurrentNoneWhiteSpace(&p);
// tcoord1 // tcoord1
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.TCoords.X = readFloat(&p); vtx.TCoords.X = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.TCoords.Y = readFloat(&p); vtx.TCoords.Y = readFloat(&p);
// tcoord2 // tcoord2
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.TCoords2.X = readFloat(&p); vtx.TCoords2.X = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.TCoords2.Y = readFloat(&p); vtx.TCoords2.Y = readFloat(&p);
sbuffer->Vertices.push_back(vtx); sbuffer->Vertices.push_back(vtx);
} }
...@@ -412,54 +411,54 @@ void CIrrMeshFileLoader::readMeshBuffer(io::IXMLReader* reader, int vertexCount, ...@@ -412,54 +411,54 @@ void CIrrMeshFileLoader::readMeshBuffer(io::IXMLReader* reader, int vertexCount,
for (int i=0; i<vertexCount && *p; ++i) for (int i=0; i<vertexCount && *p; ++i)
{ {
// position // position
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Pos.X = readFloat(&p); vtx.Pos.X = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Pos.Y = readFloat(&p); vtx.Pos.Y = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Pos.Z = readFloat(&p); vtx.Pos.Z = readFloat(&p);
// normal // normal
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Normal.X = readFloat(&p); vtx.Normal.X = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Normal.Y = readFloat(&p); vtx.Normal.Y = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Normal.Z = readFloat(&p); vtx.Normal.Z = readFloat(&p);
// color // color
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
sscanf(p, "%08x", &vtx.Color); sscanf(p, "%08x", &vtx.Color.color);
skipCurrentNoneWhiteSpace(&p); skipCurrentNoneWhiteSpace(&p);
// tcoord1 // tcoord1
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.TCoords.X = readFloat(&p); vtx.TCoords.X = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.TCoords.Y = readFloat(&p); vtx.TCoords.Y = readFloat(&p);
// tangent // tangent
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Tangent.X = readFloat(&p); vtx.Tangent.X = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Tangent.Y = readFloat(&p); vtx.Tangent.Y = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Tangent.Z = readFloat(&p); vtx.Tangent.Z = readFloat(&p);
// binormal // binormal
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Binormal.X = readFloat(&p); vtx.Binormal.X = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Binormal.Y = readFloat(&p); vtx.Binormal.Y = readFloat(&p);
findNextNoneWhiteSpace(&p); findNextNoneWhiteSpace(&p);
vtx.Binormal.Z = readFloat(&p); vtx.Binormal.Z = readFloat(&p);
sbuffer->Vertices.push_back(vtx); sbuffer->Vertices.push_back(vtx);
} }
...@@ -489,7 +488,7 @@ void CIrrMeshFileLoader::skipSection(io::IXMLReader* reader, bool reportSkipping ...@@ -489,7 +488,7 @@ void CIrrMeshFileLoader::skipSection(io::IXMLReader* reader, bool reportSkipping
#ifdef _DEBUG #ifdef _DEBUG
if (reportSkipping) if (reportSkipping)
os::Printer::log("irrMesh unknown element:", core::stringc(reader->getNodeName()).c_str()); os::Printer::log("irrMesh unknown element:", core::stringc(reader->getNodeName()).c_str());
#endif #endif
++tagCounter; ++tagCounter;
} }
......
...@@ -19,7 +19,7 @@ VERSION = 1.4alpha ...@@ -19,7 +19,7 @@ VERSION = 1.4alpha
# #
#List of object files, separated based on engine architecture #List of object files, separated based on engine architecture
IRRMESHOBJ = CSkinnedMesh.o CBSPMeshFileLoader.o CMD2MeshFileLoader.o CMD3MeshFileLoader.o CMS3DMeshFileLoader.o CB3DMeshFileLoader.o CBoneSceneNode.o CBSPMeshFileLoader.o C3DSMeshFileLoader.o COgreMeshFileLoader.o COBJMeshFileLoader.o CAnimatedMeshMD2.o CAnimatedMeshMD3.o CMD3MeshFileLoader.o CAnimatedMeshSceneNode.o CColladaFileLoader.o CCSMLoader.o CDMFLoader.o CLMTSMeshFileLoader.o CMeshSceneNode.o CMY3DMeshFileLoader.o COCTLoader.o CQ3LevelMesh.o CXMeshFileLoader.o CQuake3ShaderSceneNode.o CColladaMeshWriter.o CIrrMeshWriter.o IRRMESHOBJ = CSkinnedMesh.o CBSPMeshFileLoader.o CMD2MeshFileLoader.o CMD3MeshFileLoader.o CMS3DMeshFileLoader.o CB3DMeshFileLoader.o CBoneSceneNode.o CBSPMeshFileLoader.o C3DSMeshFileLoader.o COgreMeshFileLoader.o COBJMeshFileLoader.o CAnimatedMeshMD2.o CAnimatedMeshMD3.o CMD3MeshFileLoader.o CAnimatedMeshSceneNode.o CColladaFileLoader.o CCSMLoader.o CDMFLoader.o CLMTSMeshFileLoader.o CMeshSceneNode.o CMY3DMeshFileLoader.o COCTLoader.o CQ3LevelMesh.o CXMeshFileLoader.o CQuake3ShaderSceneNode.o CColladaMeshWriter.o CIrrMeshWriter.o CIrrMeshFileLoader.o
IRROBJ = CBillboardSceneNode.o CCameraFPSSceneNode.o CCameraMayaSceneNode.o CCameraSceneNode.o CDummyTransformationSceneNode.o CEmptySceneNode.o CGeometryCreator.o CLightSceneNode.o CMeshManipulator.o CMetaTriangleSelector.o COctTreeSceneNode.o COctTreeTriangleSelector.o CSceneCollisionManager.o CSceneManager.o CShadowVolumeSceneNode.o CSkyBoxSceneNode.o CSkyDomeSceneNode.o CTerrainSceneNode.o CTerrainTriangleSelector.o CCubeSceneNode.o CSphereSceneNode.o CTextSceneNode.o CTriangleBBSelector.o CTriangleSelector.o CWaterSurfaceSceneNode.o CMeshCache.o CDefaultSceneNodeAnimatorFactory.o CDefaultSceneNodeFactory.o IRROBJ = CBillboardSceneNode.o CCameraFPSSceneNode.o CCameraMayaSceneNode.o CCameraSceneNode.o CDummyTransformationSceneNode.o CEmptySceneNode.o CGeometryCreator.o CLightSceneNode.o CMeshManipulator.o CMetaTriangleSelector.o COctTreeSceneNode.o COctTreeTriangleSelector.o CSceneCollisionManager.o CSceneManager.o CShadowVolumeSceneNode.o CSkyBoxSceneNode.o CSkyDomeSceneNode.o CTerrainSceneNode.o CTerrainTriangleSelector.o CCubeSceneNode.o CSphereSceneNode.o CTextSceneNode.o CTriangleBBSelector.o CTriangleSelector.o CWaterSurfaceSceneNode.o CMeshCache.o CDefaultSceneNodeAnimatorFactory.o CDefaultSceneNodeFactory.o
IRRPARTICLEOBJ = CParticleAnimatedMeshSceneNodeEmitter.o CParticleBoxEmitter.o CParticleCylinderEmitter.o CParticleMeshEmitter.o CParticlePointEmitter.o CParticleRingEmitter.o CParticleSphereEmitter.o CParticleAttractionAffector.o CParticleFadeOutAffector.o CParticleGravityAffector.o CParticleRotationAffector.o CParticleSystemSceneNode.o IRRPARTICLEOBJ = CParticleAnimatedMeshSceneNodeEmitter.o CParticleBoxEmitter.o CParticleCylinderEmitter.o CParticleMeshEmitter.o CParticlePointEmitter.o CParticleRingEmitter.o CParticleSphereEmitter.o CParticleAttractionAffector.o CParticleFadeOutAffector.o CParticleGravityAffector.o CParticleRotationAffector.o CParticleSystemSceneNode.o
IRRANIMOBJ = CSceneNodeAnimatorCollisionResponse.o CSceneNodeAnimatorDelete.o CSceneNodeAnimatorFlyCircle.o CSceneNodeAnimatorFlyStraight.o CSceneNodeAnimatorFollowSpline.o CSceneNodeAnimatorRotation.o CSceneNodeAnimatorTexture.o IRRANIMOBJ = CSceneNodeAnimatorCollisionResponse.o CSceneNodeAnimatorDelete.o CSceneNodeAnimatorFlyCircle.o CSceneNodeAnimatorFlyStraight.o CSceneNodeAnimatorFollowSpline.o CSceneNodeAnimatorRotation.o CSceneNodeAnimatorTexture.o
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment