aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/others/irrlicht-1.8.1/source/Irrlicht/CCSMLoader.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/others/irrlicht-1.8.1/source/Irrlicht/CCSMLoader.h')
-rw-r--r--src/others/irrlicht-1.8.1/source/Irrlicht/CCSMLoader.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/others/irrlicht-1.8.1/source/Irrlicht/CCSMLoader.h b/src/others/irrlicht-1.8.1/source/Irrlicht/CCSMLoader.h
new file mode 100644
index 0000000..5e850c8
--- /dev/null
+++ b/src/others/irrlicht-1.8.1/source/Irrlicht/CCSMLoader.h
@@ -0,0 +1,82 @@
1// Copyright (C) 2002-2012 Nikolaus Gebhardt
2// This file is part of the "Irrlicht Engine".
3// For conditions of distribution and use, see copyright notice in irrlicht.h
4//
5// This Loader has been originally written by Saurav Mohapatra. I (Nikolaus Gebhardt)
6// modified some minor things and integrated it into Irrlicht 0.9. Thanks a lot
7// to Saurav Mohapatra for his work on this and that he gave me his permission to
8// add it into Irrlicht.
9// I did some changes to Saurav Mohapatra's loader, so I'm writing this down here:
10// - Replaced all dependencies to STL and stdio with irr:: methods/constructs.
11// - Moved everything into namespace irr::scene
12// - Replaced logging with Irrlicht's internal logger.
13// - Removed dependency to IrrlichtDevice
14// - Moved all internal structures into CCSMLoader.cpp
15// - Made the texture root parameter dependent on a ISceneManager string parameter
16// - removed exceptions
17// - Implemented CCCSMLoader as IMeshLoader
18// - Fixed some problems with memory leaks
19// - Fixed bounding box calculation
20//
21// The original readme of this file looks like this:
22//
23// This component provides a loader for the Cartography shop 4.x .csm maps for Irrlicht Engine.
24// This is a part of the M_TRIX Project.
25// This is licensed under the ZLib/LibPNG license
26// The IrrCSM library is written by Saurav Mohapatra.
27//
28// Features
29//
30// The IrrCSM library features the following capabilities
31//
32// * Loads the .csm 4.0 and 4.1 files transparently
33// * Presents the loaded file as irr::scene::IAnimatedMesh for easy creation of IOctreeSceneNode
34// * Loads the textures given the correct texture root. hence map and textures can be in separate directories
35//
36// For more informations go to http://www.geocities.com/standard_template/irrcsm/downloads.html
37
38#ifndef __CSM_LOADER_H_INCLUDED__
39#define __CSM_LOADER_H_INCLUDED__
40
41#include "irrArray.h"
42#include "IMesh.h"
43#include "irrString.h"
44#include "IFileSystem.h"
45#include "IMeshLoader.h"
46
47namespace irr
48{
49namespace scene
50{
51 class CSMFile;
52 class ISceneManager;
53
54 class CCSMLoader : public scene::IMeshLoader
55 {
56 public:
57
58 CCSMLoader(ISceneManager* manager, io::IFileSystem* fs);
59
60 //! returns true if the file maybe is able to be loaded by this class
61 //! based on the file extension (e.g. ".bsp")
62 virtual bool isALoadableFileExtension(const io::path& filename) const;
63
64 //! creates/loads an animated mesh from the file.
65 virtual IAnimatedMesh* createMesh(io::IReadFile* file);
66
67 private:
68
69 scene::IMesh* createCSMMesh(io::IReadFile* file);
70
71 scene::IMesh* createIrrlichtMesh(const CSMFile* csmFile,
72 const core::stringc& textureRoot, const io::path& lmprefix);
73
74 io::IFileSystem* FileSystem;
75 scene::ISceneManager* SceneManager;
76 };
77
78} // end namespace
79} // end namespace
80
81#endif
82