source: Revenant/yamlprovider/src/yamldepositsynthreader.cpp@ 8125274

port/mars-tycoon
Last change on this file since 8125274 was 80a6a52, checked in by Jonathan Neufeld <support@…>, 3 years ago

Get to a compile state for terrain procedural generation

  • Property mode set to 100755
File size: 2.6 KB
Line 
1#include "yamldepositsynthreader.h"
2
3#include "yamlext.h"
4
5namespace genesis
6{
7 YAMLDepositSynthCfgReader::YAMLDepositSynthCfgReader(std::istream & input)
8 : _docs(YAML::LoadAll(input)), _i(_docs.begin()) {}
9
10 YAMLDepositSynthCfgReader::~YAMLDepositSynthCfgReader() {}
11
12 bool YAMLDepositSynthCfgReader::load( geoworld::DepositSynthesizerSettings & settings )
13 {
14 using namespace geoworld;
15
16 if (_i == _docs.end())
17 return false;
18
19 const YAML::Node ndDoc = *_i++;
20
21 try
22 {
23 const YAML::Node
24 & ndLayers = ndDoc["strata"],
25 & ndDeposits = ndDoc["deposits"],
26 & ndVein = ndDoc["vein"],
27 & ndDike = ndDoc["dike"],
28 & ndLaccolith = ndDoc["laccolith"],
29 & ndSpherePack = ndDoc["chunking"];
30
31 ndLayers["count"] >> settings.layers.count;
32 ndLayers["classes"] >> settings.layers.classes;
33 ndLayers["coarseness"] >> settings.layers.coarseness;
34 ndLayers["silica"] >> YAML::MappedRange< unsigned char > (settings.layers.silica,
35 YAML::StringMapSchema< unsigned char > (
36 "na", Silica_NA,
37 "felsic", Silica_Felsic,
38 "inter-felsic", Silica_InterFelsic,
39 "intermediate", Silica_Intermediate,
40 "mafic", Silica_Mafic,
41 "ultra-mafic", Silica_UltraMafic,
42 NULL
43 )
44 );
45 ndLayers["thickness"] >> settings.layers.thickness.base;
46 ndLayers["thickfactor"] >> settings.layers.thickness.curve;
47 ndLayers["thickscale"] >> settings.layers.thickness.scale;
48
49 ndDeposits["frequency"] >> settings.minerals.frequency;
50 ndDeposits["neighborhood"] >> settings.minerals.neighborhood;
51 ndDeposits["abundancefactor"] >> settings.minerals.abundance.curve;
52 ndDeposits["sizefactor"] >> settings.minerals.deposit.curve;
53 ndDeposits["sizebase"] >> settings.minerals.deposit.base;
54 ndDeposits["nesting"] >> settings.minerals.deposit.nesting;
55
56 ndVein["deviation"] >> settings.minerals.deposit.vein.deviation;
57 ndVein["detail"] >> settings.minerals.deposit.vein.detail;
58 ndVein["erraticness"] >> settings.minerals.deposit.vein.erratic;
59
60 ndDike["orthogonality"] >> settings.minerals.deposit.dike.orthogonality;
61 ndDike["deviation"] >> settings.minerals.deposit.dike.deviation;
62
63 ndLaccolith["tailsize"] >> settings.minerals.deposit.laccolith.tail;
64
65 ndSpherePack["leafsize"] >> settings.minerals.spherepack.limit;
66 ndSpherePack["smallest"] >> settings.minerals.spherepack.minimum;
67 ndSpherePack["iterations"] >> settings.minerals.spherepack.maxtier;
68 ndSpherePack["initialsize"] >> settings.minerals.spherepack.sizeflux;
69 ndSpherePack["branches"] >> settings.minerals.spherepack.kidflux;
70
71 return true;
72 }
73 catch (YAML::RepresentationException &)
74 {
75 return false;
76 }
77 }
78
79}
Note: See TracBrowser for help on using the repository browser.