]> git.tdb.fi Git - r2c2.git/blob - source/libr2c2/terraintype.cpp
ce9551feb152551763dc6ed8795b5bc1862e84c5
[r2c2.git] / source / libr2c2 / terraintype.cpp
1 #include <stdexcept>
2 #include "terraintype.h"
3
4 using namespace std;
5 using namespace Msp;
6
7 namespace R2C2 {
8
9 TerrainType::TerrainType(const ArticleNumber &an):
10         ObjectType(an),
11         tile_size(1),
12         elevation_granularity(0.1)
13 { }
14
15 const TerrainType::SurfaceType &TerrainType::get_surface_type(unsigned i) const
16 {
17         if(i>=surface_types.size())
18                 throw out_of_range("TerrainType::get_surface_type");
19         return surface_types[i];
20 }
21
22
23 TerrainType::SurfaceType::SurfaceType():
24         r(0.8),
25         g(0.8),
26         b(0.8)
27 { }
28
29
30 TerrainType::Loader::Loader(TerrainType &tt):
31         DataFile::ObjectLoader<TerrainType>(tt)
32 {
33         add("elevation_granularity", &TerrainType::elevation_granularity);
34         add("surface", &Loader::surface);
35         add("tile_size", &TerrainType::tile_size);
36 }
37
38 void TerrainType::Loader::surface()
39 {
40         SurfaceType srf;
41         load_sub(srf);
42         obj.surface_types.push_back(srf);
43 }
44
45
46 TerrainType::SurfaceType::Loader::Loader(SurfaceType &st):
47         DataFile::ObjectLoader<SurfaceType>(st)
48 {
49 }
50
51 } // namespace R2C2