X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fterraintype.cpp;fp=source%2Flibr2c2%2Fterraintype.cpp;h=ce9551feb152551763dc6ed8795b5bc1862e84c5;hb=2220ba2f11705ea9a4e480603d43ab7ed4cf5a89;hp=0000000000000000000000000000000000000000;hpb=e37f7bfbbee86eef3b1f6e338a21239905911608;p=r2c2.git diff --git a/source/libr2c2/terraintype.cpp b/source/libr2c2/terraintype.cpp new file mode 100644 index 0000000..ce9551f --- /dev/null +++ b/source/libr2c2/terraintype.cpp @@ -0,0 +1,51 @@ +#include +#include "terraintype.h" + +using namespace std; +using namespace Msp; + +namespace R2C2 { + +TerrainType::TerrainType(const ArticleNumber &an): + ObjectType(an), + tile_size(1), + elevation_granularity(0.1) +{ } + +const TerrainType::SurfaceType &TerrainType::get_surface_type(unsigned i) const +{ + if(i>=surface_types.size()) + throw out_of_range("TerrainType::get_surface_type"); + return surface_types[i]; +} + + +TerrainType::SurfaceType::SurfaceType(): + r(0.8), + g(0.8), + b(0.8) +{ } + + +TerrainType::Loader::Loader(TerrainType &tt): + DataFile::ObjectLoader(tt) +{ + add("elevation_granularity", &TerrainType::elevation_granularity); + add("surface", &Loader::surface); + add("tile_size", &TerrainType::tile_size); +} + +void TerrainType::Loader::surface() +{ + SurfaceType srf; + load_sub(srf); + obj.surface_types.push_back(srf); +} + + +TerrainType::SurfaceType::Loader::Loader(SurfaceType &st): + DataFile::ObjectLoader(st) +{ +} + +} // namespace R2C2