summaryrefslogtreecommitdiffstats
path: root/3rdparty/assimp/code/OgreImporter.h
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/assimp/code/OgreImporter.h')
-rw-r--r--3rdparty/assimp/code/OgreImporter.h142
1 files changed, 0 insertions, 142 deletions
diff --git a/3rdparty/assimp/code/OgreImporter.h b/3rdparty/assimp/code/OgreImporter.h
deleted file mode 100644
index ee574726..00000000
--- a/3rdparty/assimp/code/OgreImporter.h
+++ /dev/null
@@ -1,142 +0,0 @@
-#include "BaseImporter.h"
-
-#include <vector>
-
-#include "OgreXmlHelper.h"
-#include "irrXMLWrapper.h"
-
-namespace Assimp
-{
-namespace Ogre
-{
-
-
-//Forward declarations:
-struct SubMesh;
-
-///For the moment just triangles, no other polygon types!
-struct Face
-{
- unsigned int VertexIndices[3];
-};
-
-///for a vertex->bone structur
-struct Weight
-{
- unsigned int BoneId;
- float Value;
-};
-
-/// Helper Class to describe an ogre-bone for the skeleton:
-/** All Id's are signed ints, because than we have -1 as a simple INVALID_ID Value (we start from 0 so 0 is a valid bone ID!*/
-struct Bone
-{
- int Id;
- int ParentId;
- std::string Name;
- aiVector3D Position;
- float RotationAngle;
- aiVector3D RotationAxis;
- std::vector<int> Children;
- aiMatrix4x4 BoneToWorldSpace;
-
- ///ctor
- Bone(): Id(-1), ParentId(-1), RotationAngle(0.0f) {}
- ///this operator is needed to sort the bones after Id's
- bool operator<(const Bone& rval) const
- {return Id<rval.Id; }
- ///this operator is needed to find a bone by its name in a vector<Bone>
- bool operator==(const std::string& rval) const
- {return Name==rval; }
- bool operator==(const aiString& rval) const
- {return Name==std::string(rval.data); }
-
- void CalculateBoneToWorldSpaceMatrix(std::vector<Bone>& Bones);
-
-};
-
-/// keyframe (bone transformation) from a track from a animation
-struct Keyframe
-{
- float Time;
- aiVector3D Position;
- aiQuaternion Rotation;
- aiVector3D Scaling;
-};
-
-///a track (keyframes for one bone) from an animation
-struct Track
-{
- std::string BoneName;
- std::vector<Keyframe> Keyframes;
-};
-
-///Describes an Ogre Animation
-struct Animation
-{
- std::string Name;
- float Length;
- std::vector<Track> Tracks;
-};
-
-///The Main Ogre Importer Class
-class OgreImporter : public BaseImporter
-{
-public:
- virtual bool CanRead( const std::string& pFile, IOSystem* pIOHandler, bool checkSig) const;
- virtual void InternReadFile( const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler);
- virtual void GetExtensionList(std::set<std::string>& extensions);
- virtual void SetupProperties(const Importer* pImp);
-private:
-
- /// Helper Functions to read parts of the XML File
- void ReadSubMesh(SubMesh& theSubMesh, XmlReader* Reader);//the submesh reference is the result value
-
- /// writes the results in Bones and Animations, Filename is not const, because its call-by-value and the function will change it!
- void LoadSkeleton(std::string FileName, std::vector<Bone> &Bones, std::vector<Animation> &Animations) const;
-
- /// converts the animations in aiAnimations and puts them into the scene
- void PutAnimationsInScene(const std::vector<Bone> &Bones, const std::vector<Animation> &Animations);
-
- /// uses the bone data to convert a SubMesh into a aiMesh which will be created and returned
- aiMesh* CreateAssimpSubMesh(const SubMesh &theSubMesh, const std::vector<Bone>& Bones) const;
-
- //creates the aiskeleton in current scene
- void CreateAssimpSkeleton(const std::vector<Bone> &Bones, const std::vector<Animation> &Animations);
-
- aiMaterial* LoadMaterial(const std::string MaterialName) const;
-
- ///Recursivly creates a filled aiNode from a given root bone
- aiNode* CreateAiNodeFromBone(int BoneId, const std::vector<Bone> &Bones, aiNode* ParentNode) const;
-
- //Now we don't have to give theses parameters to all functions
- std::string m_CurrentFilename;
- std::string m_MaterialLibFilename;
- IOSystem* m_CurrentIOHandler;
- aiScene *m_CurrentScene;
-};
-
-///A submesh from Ogre
-struct SubMesh
-{
- std::string Name;
- std::string MaterialName;
- std::vector<Face> FaceList;
- std::vector<aiVector3D> Positions; bool HasPositions;
- std::vector<aiVector3D> Normals; bool HasNormals;
- std::vector<aiVector3D> Uvs; unsigned int NumUvs;//nearly always 2d, but assimp has always 3d texcoords
- std::vector< std::vector<Weight> > Weights;//a list of bones for each vertex
- int MaterialIndex;///< The Index in the Assimp Materialarray from the material witch is attached to this submesh
- unsigned int BonesUsed;//the highest index of a bone from a bone weight, this is needed to create the assimp bone structur (converting from Vertex-Bones to Bone-Vertices)
-
- SubMesh(): HasPositions(false), HasNormals(false), NumUvs(0), MaterialIndex(-1), BonesUsed(0) {}//initialize everything
-};
-
-struct BoneAssignment
-{
- unsigned int BoneId;//this is, what we get from ogre
- std::string BoneName;//this is, what we need for assimp
-};
-
-}//namespace Ogre
-}//namespace Assimp