Commit 78b1d0f1 authored by hybrid's avatar hybrid

Better geometry support for Collada loader.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@1203 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 94e8a3e3
This diff is collapsed.
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "SMeshBuffer.h" #include "SMeshBuffer.h"
#include "ISceneManager.h" #include "ISceneManager.h"
#include "irrMap.h" #include "irrMap.h"
#include "CAttributes.h"
namespace irr namespace irr
{ {
...@@ -83,19 +84,25 @@ enum ECOLLADA_INPUT_SEMANTIC ...@@ -83,19 +84,25 @@ enum ECOLLADA_INPUT_SEMANTIC
struct SColladaInput struct SColladaInput
{ {
SColladaInput() SColladaInput()
: Semantic(ECIS_COUNT) : Semantic(ECIS_COUNT), Data(0), Offset(0), Set(0), Stride(1)
{ {
} }
ECOLLADA_INPUT_SEMANTIC Semantic; ECOLLADA_INPUT_SEMANTIC Semantic;
core::stringc Source; core::stringc Source;
f32* Data;
u32 Offset;
u32 Set;
u32 Stride;
}; };
//! Collada images //! Collada images
struct SColladaImage struct SColladaImage
{ {
core::stringc Filename;
core::stringc Id; core::stringc Id;
core::stringc Source;
core::dimension2di Dimension;
bool SourceIsFilename;
}; };
...@@ -299,6 +306,9 @@ private: ...@@ -299,6 +306,9 @@ private:
//! returns a collada input or none if not found //! returns a collada input or none if not found
SColladaInput* getColladaInput(ECOLLADA_INPUT_SEMANTIC input); SColladaInput* getColladaInput(ECOLLADA_INPUT_SEMANTIC input);
//! read Collada Id, uses id or name if id is missing
core::stringc readId(io::IXMLReaderUTF8* reader);
//! changes the XML URI into an internal id //! changes the XML URI into an internal id
void uriToId(core::stringc& str); void uriToId(core::stringc& str);
...@@ -313,6 +323,12 @@ private: ...@@ -313,6 +323,12 @@ private:
//! reads and bind materials as given by the symbol->target bind mapping //! reads and bind materials as given by the symbol->target bind mapping
void readBindMaterialSection(io::IXMLReaderUTF8* reader, const core::stringc & id); void readBindMaterialSection(io::IXMLReaderUTF8* reader, const core::stringc & id);
//! create an Irrlicht texture from the SColladaImage
video::ITexture* getTextureFromImage(core::stringc uri);
//! read a parameter and value
void readParameter(io::IXMLReaderUTF8* reader);
video::IVideoDriver* Driver; video::IVideoDriver* Driver;
scene::ISceneManager* SceneManager; scene::ISceneManager* SceneManager;
io::IFileSystem* FileSystem; io::IFileSystem* FileSystem;
...@@ -326,7 +342,7 @@ private: ...@@ -326,7 +342,7 @@ private:
u32 Version; u32 Version;
core::array<IColladaPrefab*> Prefabs; core::array<IColladaPrefab*> Prefabs;
core::array<SColladaParam> Parameters; core::array<SColladaParam> ColladaParameters;
core::array<SColladaImage> Images; core::array<SColladaImage> Images;
core::array<SColladaTexture> Textures; core::array<SColladaTexture> Textures;
core::array<SColladaMaterial> Materials; core::array<SColladaMaterial> Materials;
...@@ -334,6 +350,7 @@ private: ...@@ -334,6 +350,7 @@ private:
core::array<SColladaEffect> Effects; core::array<SColladaEffect> Effects;
core::map<core::stringc,u32> MaterialsToBind; core::map<core::stringc,u32> MaterialsToBind;
core::array< core::array<irr::scene::IMeshBuffer*> > MeshesToBind; core::array< core::array<irr::scene::IMeshBuffer*> > MeshesToBind;
io::CAttributes Parameters;
bool CreateInstances; bool CreateInstances;
}; };
...@@ -351,7 +368,7 @@ public: ...@@ -351,7 +368,7 @@ public:
scene::ISceneManager* mgr) = 0; scene::ISceneManager* mgr) = 0;
//! returns id of this prefab //! returns id of this prefab
virtual const c8* getId() = 0; virtual const core::stringc& getId() = 0;
}; };
......
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