]> git.lizzy.rs Git - irrlicht.git/blob - source/Irrlicht/CLMTSMeshFileLoader.h
Fix some more problems with OSX build file.
[irrlicht.git] / source / Irrlicht / CLMTSMeshFileLoader.h
1 // Copyright (C) 2002-2012 Nikolaus Gebhardt\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 // I (Nikolaus Gebhardt) did some few changes to Jonas Petersen's original loader:\r
6 // - removed setTexturePath() and replaced with the ISceneManager::getStringParameter()-stuff.\r
7 // - added EAMT_LMTS enumeration value\r
8 // Thanks a lot to Jonas Petersen for his work\r
9 // on this and that he gave me his permission to add it into Irrlicht.\r
10 /*\r
11 \r
12 CLMTSMeshFileLoader.h\r
13 \r
14 LMTSMeshFileLoader\r
15 Written by Jonas Petersen (a.k.a. jox)\r
16 \r
17 Version 1.5 - 15 March 2005\r
18 \r
19 */\r
20 \r
21 #if !defined(__C_LMTS_MESH_FILE_LOADER_H_INCLUDED__)\r
22 #define __C_LMTS_MESH_FILE_LOADER_H_INCLUDED__\r
23 \r
24 #include "IMeshLoader.h"\r
25 #include "SMesh.h"\r
26 #include "IFileSystem.h"\r
27 #include "IVideoDriver.h"\r
28 \r
29 namespace irr\r
30 {\r
31 namespace scene\r
32 {\r
33 \r
34 class CLMTSMeshFileLoader : public IMeshLoader\r
35 {\r
36 public:\r
37 \r
38         CLMTSMeshFileLoader(io::IFileSystem* fs,\r
39                 video::IVideoDriver* driver, io::IAttributes* parameters);\r
40 \r
41         virtual ~CLMTSMeshFileLoader();\r
42 \r
43         virtual bool isALoadableFileExtension(const io::path& filename) const _IRR_OVERRIDE_;\r
44 \r
45         virtual IAnimatedMesh* createMesh(io::IReadFile* file) _IRR_OVERRIDE_;\r
46 \r
47 private:\r
48         void constructMesh(SMesh* mesh);\r
49         void loadTextures(SMesh* mesh);\r
50         void cleanup();\r
51 \r
52 // byte-align structures\r
53 #include "irrpack.h"\r
54 \r
55         struct SLMTSHeader\r
56         {\r
57                 u32 MagicID;\r
58                 u32 Version;\r
59                 u32 HeaderSize;\r
60                 u16 TextureCount;\r
61                 u16 SubsetCount;\r
62                 u32 TriangleCount;\r
63                 u16 SubsetSize;\r
64                 u16 VertexSize;\r
65         } PACK_STRUCT;\r
66 \r
67         struct SLMTSTextureInfoEntry\r
68         {\r
69                 c8 Filename[256];\r
70                 u16 Flags;\r
71         } PACK_STRUCT;\r
72 \r
73         struct SLMTSSubsetInfoEntry\r
74         {\r
75                 u32 Offset;\r
76                 u32 Count;\r
77                 u16 TextID1;\r
78                 u16 TextID2;\r
79         } PACK_STRUCT;\r
80 \r
81         struct SLMTSTriangleDataEntry\r
82         {\r
83                 f32 X;\r
84                 f32 Y;\r
85                 f32 Z;\r
86                 f32 U1;\r
87                 f32 V1;\r
88                 f32 U2;\r
89                 f32 V2;\r
90         } PACK_STRUCT;\r
91 \r
92 // Default alignment\r
93 #include "irrunpack.h"\r
94 \r
95         SLMTSHeader Header;\r
96         SLMTSTextureInfoEntry* Textures;\r
97         SLMTSSubsetInfoEntry* Subsets;\r
98         SLMTSTriangleDataEntry* Triangles;\r
99 \r
100         io::IAttributes* Parameters;\r
101         video::IVideoDriver* Driver;\r
102         io::IFileSystem* FileSystem;\r
103         bool FlipEndianess;\r
104 };\r
105 \r
106 } // end namespace scene\r
107 } // end namespace irr\r
108 \r
109 #endif // !defined(__C_LMTS_MESH_FILE_LOADER_H_INCLUDED__)\r