]> git.lizzy.rs Git - irrlicht.git/blob - source/Irrlicht/CB3DMeshWriter.h
4a74f2159e6f0d59b678cbc628860303ca7c63d8
[irrlicht.git] / source / Irrlicht / CB3DMeshWriter.h
1 // Copyright (C) 2014 Lauri Kasanen\r
2 // This file is part of the "Irrlicht Engine".\r
3 // For conditions of distribution and use, see copyright notice in irrlicht.h\r
4 \r
5 // Modified version with rigging/skinning support\r
6 \r
7 #ifndef __IRR_B3D_MESH_WRITER_H_INCLUDED__\r
8 #define __IRR_B3D_MESH_WRITER_H_INCLUDED__\r
9 \r
10 #include "IMeshWriter.h"\r
11 #include "IWriteFile.h"\r
12 #include "SB3DStructs.h"\r
13 #include "ISkinnedMesh.h"\r
14 \r
15 \r
16 \r
17 namespace irr\r
18 {\r
19 namespace scene\r
20 {\r
21 \r
22 //! class to write B3D mesh files\r
23 class CB3DMeshWriter : public IMeshWriter\r
24 {\r
25 public:\r
26 \r
27         CB3DMeshWriter();\r
28 \r
29         //! Returns the type of the mesh writer\r
30     EMESH_WRITER_TYPE getType() const override;\r
31 \r
32         //! writes a mesh\r
33     bool writeMesh(io::IWriteFile* file, scene::IMesh* mesh, s32 flags=EMWF_NONE) override;\r
34 \r
35 private:\r
36     void writeJointChunk(io::IWriteFile* file, ISkinnedMesh* mesh , ISkinnedMesh::SJoint* joint, f32 animationSpeedMultiplier);\r
37     u32 getJointChunkSize(const ISkinnedMesh* mesh, ISkinnedMesh::SJoint* joint);\r
38     core::array<ISkinnedMesh::SJoint*> getRootJoints(const ISkinnedMesh* mesh);\r
39 \r
40     u32 getUVlayerCount(IMesh *mesh);\r
41     ISkinnedMesh* getSkinned (IMesh *mesh);\r
42 \r
43     inline void writeVector2(io::IWriteFile* file, const core::vector2df& vec);\r
44     inline void writeVector3(io::IWriteFile* file, const core::vector3df& vec);\r
45     inline void writeQuaternion(io::IWriteFile* file, const core::quaternion& quat);\r
46     inline void writeColor(io::IWriteFile* file, const video::SColorf& color);\r
47     void writeSizeFrom(io::IWriteFile* file, const u32 from, const u32 adressToWrite);\r
48 };\r
49 \r
50 } // end namespace\r
51 } // end namespace\r
52 \r
53 #endif\r