]> git.mxchange.org Git - simgear.git/blobdiff - simgear/scene/material/mat.cxx
Work around apparent OSG 3.2.0 normal binding bug.
[simgear.git] / simgear / scene / material / mat.cxx
index 7a38c8fbcc447d6f982a10e7736072c80030384c..46af662b05166a22def634adb0e7a6821684dc20 100644 (file)
@@ -202,7 +202,7 @@ SGMaterial::read_properties(const SGReaderWriterOptions* options,
         }
     }
 
-    if (textures.size() == 0 && texturesets.size() == 0) {
+    if (textures.empty() && texturesets.empty()) {
         SGPath tpath("Textures");
         tpath.append("Terrain");
         tpath.append("unknown.rgb");
@@ -239,7 +239,7 @@ SGMaterial::read_properties(const SGReaderWriterOptions* options,
 
                     bool dds_mask = (ompath.lower_extension() == "dds");
 
-                    if (dds[i] != dds_mask) {
+                    if (i < dds.size() && dds[i] != dds_mask) {
                         // Texture format does not match mask format. This is relevant for
                         // the object mask, as DDS textures have an origin at the bottom
                         // left rather than top left. Therefore we flip a copy of the image
@@ -320,6 +320,11 @@ SGMaterial::read_properties(const SGReaderWriterOptions* options,
     building_large_max_width = props->getFloatValue("building-large-max-width-m", 75.0);
     building_large_min_depth = props->getFloatValue("building-large-min-depth-m", 50.0);
     building_large_max_depth = props->getFloatValue("building-large-max-depth-m", 75.0);
+
+    building_range = props->getDoubleValue("building-range-m", 10000.0);
+    
+    cos_object_max_density_slope_angle  = cos(props->getFloatValue("object-max-density-angle-deg", 20.0) * osg::PI/180.0);
+    cos_object_zero_density_slope_angle = cos(props->getFloatValue("object-zero-density-angle-deg", 30.0) * osg::PI/180.0);
         
     // Random vegetation properties
     wood_coverage = props->getDoubleValue("wood-coverage", 0.0);
@@ -327,6 +332,8 @@ SGMaterial::read_properties(const SGReaderWriterOptions* options,
     tree_width = props->getDoubleValue("tree-width-m", 0.0);
     tree_range = props->getDoubleValue("tree-range-m", 0.0);
     tree_varieties = props->getIntValue("tree-varieties", 1);
+    cos_tree_max_density_slope_angle  = cos(props->getFloatValue("tree-max-density-angle-deg", 30.0) * osg::PI/180.0);
+    cos_tree_zero_density_slope_angle = cos(props->getFloatValue("tree-zero-density-angle-deg", 45.0) * osg::PI/180.0);
 
     const SGPropertyNode* treeTexNode = props->getChild("tree-texture");
     
@@ -448,7 +455,7 @@ Effect* SGMaterial::get_effect(int i)
 
 Effect* SGMaterial::get_effect(const SGTexturedTriangleBin& triangleBin)
 {
-    if (_status.size() == 0) {
+    if (_status.empty()) {
         SG_LOG( SG_GENERAL, SG_WARN, "No effect available.");
         return 0;
     }
@@ -465,7 +472,7 @@ Effect* SGMaterial::get_effect()
 
 osg::Texture2D* SGMaterial::get_object_mask(const SGTexturedTriangleBin& triangleBin)
 {
-    if (_status.size() == 0) {
+    if (_status.empty()) {
         SG_LOG( SG_GENERAL, SG_WARN, "No mask available.");
         return 0;
     }