}
}
- if (textures.size() == 0 && texturesets.size() == 0) {
+ if (textures.empty() && texturesets.empty()) {
SGPath tpath("Textures");
tpath.append("Terrain");
tpath.append("unknown.rgb");
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
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);
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");
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;
}
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;
}
makeChild(texProp, "filter")
->setStringValue(mipmap ? "linear-mipmap-linear" : "nearest");
makeChild(texProp, "wrap-s")
- ->setStringValue(wrapu ? "repeat" : "clamp");
+ ->setStringValue(wrapu ? "repeat" : "clamp-to-edge");
makeChild(texProp, "wrap-t")
- ->setStringValue(wrapv ? "repeat" : "clamp");
+ ->setStringValue(wrapv ? "repeat" : "clamp-to-edge");
}
makeChild(effectParamProp, "xsize")->setDoubleValue(xsize);
makeChild(effectParamProp, "ysize")->setDoubleValue(ysize);