Rev Author Line No. Line
23 ovan 1 #include "loader.h"
2 #include "../compile.h"
3  
4 #include "mesh_3ds.h"
5 #include "mesh_txt.h"
6 #include "texture_bmp.h"
7 #include "texture_png.h"
8 #include "texture_jpeg.h"
9 #include "texture_tiff.h"
10 #include <iostream>
11  
12 namespace sleek
13 {
14     namespace loader
15     {
16         loader::loader(std::shared_ptr<io::filesystem> f)
17             : fs(f)
18         {
19             if(!fs)
20             {
21                 std::cout << "no filesystem\n";
22                 return;
23             }
24  
25             #ifdef mesh_loader_3ds_support
26             mesh.push_back(new meshloader_3ds());
27             #endif
28  
29             #ifdef mesh_loader_txt_support
30             mesh.push_back(new meshloader_txt());
31             #endif
32  
33             #ifdef texture_loader_bmp_support
34             texture.push_back(new textureloader_bmp());
35             #endif
36  
37             #ifdef texture_loader_png_support
38             texture.push_back(new textureloader_png());
39             #endif
40  
41             #ifdef texture_loader_jpeg_support
42             texture.push_back(new textureloader_jpeg());
43             #endif
44  
45             #ifdef texture_loader_tiff_support
46             texture.push_back(new textureloader_tiff());
47             #endif
48         }
49         loader::~loader()
50         {
51         }
52         std::shared_ptr<driver::MeshBuffer> loader::loadMesh(const std::string &filename) const noexcept
53         {
54             if(!fs)
55                 return nullptr;
56  
57             for(auto e : mesh)
58                 if(e->match(filename))
59                     return e->read(fs.get(), filename);
60  
61             return nullptr;
62         }
63         std::shared_ptr<driver::texture> loader::loadTexture(const std::string &filename) const noexcept
64         {
65             if(!fs)
66                 return nullptr;
67  
68             for(auto e : texture)
69                 if(e->match(filename))
70                     return e->read(fs.get(), filename);
71  
72             return nullptr;
73         }
74         bool loader::writeMesh(std::shared_ptr<driver::MeshBuffer> data, const std::string &filename) const noexcept
75         {
76             if(!fs || !data)
77                 return false;
78  
79             for(auto e : mesh)
80                 if(e->match(filename))
81                     return e->write(fs.get(), data.get(), filename);
82  
83             return false;
84         }
85         bool loader::writeTexture(std::shared_ptr<driver::texture> data, const std::string &filename) const noexcept
86         {
87             if(!fs || !data)
88                 return false;
89  
90             for(auto e : texture)
91                 if(e->match(filename))
92                     return e->write(fs.get(), data.get(), filename);
93  
94             return false;
95         }
96     }
97 }