]> git.lizzy.rs Git - irrlicht.git/blob - source/Irrlicht/CB3DMeshWriter.h
454b7a6e43f4755aa70e1efee081537f82f0996c
[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     virtual EMESH_WRITER_TYPE getType() const _IRR_OVERRIDE_;\r
31 \r
32         //! writes a mesh\r
33     virtual bool writeMesh(io::IWriteFile* file, scene::IMesh* mesh, s32 flags=EMWF_NONE) _IRR_OVERRIDE_;\r
34 \r
35 private:\r
36         u32 Size;\r
37 \r
38     void writeJointChunk(io::IWriteFile* file, ISkinnedMesh* mesh , ISkinnedMesh::SJoint* joint);\r
39     u32 getJointChunkSize(const ISkinnedMesh* mesh, ISkinnedMesh::SJoint* joint);\r
40     core::array<ISkinnedMesh::SJoint*> getRootJoints(const ISkinnedMesh* mesh);\r
41 \r
42     u32 getUVlayerCount(IMesh *mesh);\r
43     ISkinnedMesh* getSkinned (IMesh *mesh);\r
44 \r
45         void write(io::IWriteFile* file, const void *ptr, const u32 bytes);\r
46 \r
47 };\r
48 \r
49 } // end namespace\r
50 } // end namespace\r
51 \r
52 #endif\r