From: <cn...@us...> - 2008-12-31 00:30:53
|
Revision: 121 http://hgengine.svn.sourceforge.net/hgengine/?rev=121&view=rev Author: cnlohr Date: 2008-12-31 00:30:44 +0000 (Wed, 31 Dec 2008) Log Message: ----------- make Meshes use MercuryFile *'s Modified Paths: -------------- Mercury2/src/HGMDLMesh.cpp Mercury2/src/HGMDLMesh.h Mercury2/src/HGMDLModel.cpp Mercury2/src/HGMDLModel.h Modified: Mercury2/src/HGMDLMesh.cpp =================================================================== --- Mercury2/src/HGMDLMesh.cpp 2008-12-31 00:12:56 UTC (rev 120) +++ Mercury2/src/HGMDLMesh.cpp 2008-12-31 00:30:44 UTC (rev 121) @@ -1,34 +1,41 @@ #include <HGMDLMesh.h> -void HGMDLMesh::LoadFromFile(FILE* hgmdl) +void HGMDLMesh::LoadFromFile(MercuryFile* hgmdl) { uint32_t nameLength; - fread(&nameLength, sizeof(uint32_t), 1, hgmdl); + //fread(&nameLength, sizeof(uint32_t), 1, hgmdl); + hgmdl->Read( &nameLength, sizeof( uint32_t ) ); if (nameLength > 0) { char* name = new char[nameLength+1]; name[nameLength] = 0; - fread(name, nameLength, 1, hgmdl); + hgmdl->Read( name, nameLength ); + //fread(name, nameLength, 1, hgmdl); m_name = name; } - fread(&m_cachable, sizeof(bool), 1, hgmdl); + hgmdl->Read( &m_cachable, sizeof( char ) ); + //fread(&m_cachable, sizeof(bool), 1, hgmdl); uint32_t dataLength; - fread(&dataLength, sizeof(uint32_t), 1, hgmdl); + //fread(&dataLength, sizeof(uint32_t), 1, hgmdl); + hgmdl->Read( &dataLength, sizeof( uint32_t ) ); if (dataLength > 0) { m_vertexData.Allocate( dataLength/sizeof(float) ); //they are all floats - fread(m_vertexData.Buffer(), dataLength, 1, hgmdl); + //fread(m_vertexData.Buffer(), dataLength, 1, hgmdl); + hgmdl->Read( m_vertexData.Buffer(), dataLength ); } uint16_t numIndices; - fread(&numIndices, sizeof(uint16_t), 1, hgmdl); + //fread(&numIndices, sizeof(uint16_t), 1, hgmdl); + hgmdl->Read( &numIndices, sizeof( uint16_t ) ); if (numIndices > 0) { m_indexData.Allocate( numIndices ); - fread(m_indexData.Buffer(), numIndices*sizeof(uint16_t), 1, hgmdl); + //fread(m_indexData.Buffer(), numIndices*sizeof(uint16_t), 1, hgmdl); + hgmdl->Read( m_indexData.Buffer(), numIndices*sizeof(uint16_t) ); } } Modified: Mercury2/src/HGMDLMesh.h =================================================================== --- Mercury2/src/HGMDLMesh.h 2008-12-31 00:12:56 UTC (rev 120) +++ Mercury2/src/HGMDLMesh.h 2008-12-31 00:30:44 UTC (rev 121) @@ -2,11 +2,12 @@ #define HGMDLMESH_H #include <MercuryVBO.h> +#include <MercuryFile.h> class HGMDLMesh : public MercuryVBO { public: - void LoadFromFile(FILE* hgmdl); + void LoadFromFile(MercuryFile* hgmdl); private: MString m_name; bool m_cachable; Modified: Mercury2/src/HGMDLModel.cpp =================================================================== --- Mercury2/src/HGMDLModel.cpp 2008-12-31 00:12:56 UTC (rev 120) +++ Mercury2/src/HGMDLModel.cpp 2008-12-31 00:30:44 UTC (rev 121) @@ -6,18 +6,25 @@ { if ( !node.Attribute("file").empty() ) { - FILE* f = fopen( node.Attribute("file").c_str(), "rb" ); + //FILE* f = fopen( node.Attribute("file").c_str(), "rb" ); + MercuryFile * f = FILEMAN.Open( node.Attribute("file") ); + if( !f ) + { + printf( "Could not open file: \"%s\" for model\n", node.Attribute("file").c_str() ); + return; + } LoadModel( f ); - fclose( f ); + delete f; } } -void HGMDLModel::LoadModel(FILE* hgmdl) +void HGMDLModel::LoadModel(MercuryFile* hgmdl) { char fingerPrint[5]; fingerPrint[4] = 0; - fread(fingerPrint, 4, 1, hgmdl); + hgmdl->Read( fingerPrint, 4 ); + MString p(fingerPrint); if (p != "MBMF") { @@ -26,7 +33,8 @@ } uint32_t version; - fread(&version, 4, 1, hgmdl); + //fread(&version, 4, 1, hgmdl); + hgmdl->Read( &version, 4 ); if (version != 200) { @@ -35,7 +43,8 @@ } uint16_t numMeshes; - fread(&numMeshes, sizeof(uint16_t), 1, hgmdl); + + hgmdl->Read( &numMeshes, sizeof( uint16_t ) ); for (uint16_t i = 0; i < numMeshes; ++i) { MAutoPtr< HGMDLMesh > mesh( new HGMDLMesh() ); Modified: Mercury2/src/HGMDLModel.h =================================================================== --- Mercury2/src/HGMDLModel.h 2008-12-31 00:12:56 UTC (rev 120) +++ Mercury2/src/HGMDLModel.h 2008-12-31 00:30:44 UTC (rev 121) @@ -3,6 +3,7 @@ #include <MercuryAsset.h> #include <HGMDLMesh.h> +#include <MercuryFile.h> #include <vector> @@ -12,7 +13,7 @@ virtual void LoadFromXML(const XMLNode& node); - void LoadModel(FILE* hgmdl); + void LoadModel(MercuryFile* hgmdl); static HGMDLModel* Generate(); virtual void Render(MercuryNode* node); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |