More consistent indentation.

This commit is contained in:
ThorstenB
2012-03-17 10:02:43 +01:00
parent ca97e67511
commit eff0c610e2

View File

@@ -121,218 +121,216 @@ SGMaterial::read_properties(const SGReaderWriterOptions* options,
const SGPropertyNode *props,
SGPropertyNode *prop_root)
{
std::vector<bool> dds;
std::vector<SGPropertyNode_ptr> textures = props->getChildren("texture");
for (unsigned int i = 0; i < textures.size(); i++)
{
string tname = textures[i]->getStringValue();
if (tname.empty()) {
tname = "unknown.rgb";
}
SGPath tpath("Textures.high");
tpath.append(tname);
string fullTexPath = SGModelLib::findDataFile(tpath.str(), options);
if (fullTexPath.empty()) {
tpath = SGPath("Textures");
tpath.append(tname);
fullTexPath = SGModelLib::findDataFile(tpath.str(), options);
}
if (tpath.lower_extension() == "dds") {
dds.push_back(true);
} else {
dds.push_back(false);
}
if (!fullTexPath.empty() ) {
_internal_state st( NULL, fullTexPath, false, options );
_status.push_back( st );
}
}
std::vector<SGPropertyNode_ptr> texturesets = props->getChildren("texture-set");
for (unsigned int i = 0; i < texturesets.size(); i++)
{
_internal_state st( NULL, false, options );
std::vector<SGPropertyNode_ptr> textures = texturesets[i]->getChildren("texture");
for (unsigned int j = 0; j < textures.size(); j++)
std::vector<bool> dds;
std::vector<SGPropertyNode_ptr> textures = props->getChildren("texture");
for (unsigned int i = 0; i < textures.size(); i++)
{
string tname = textures[j]->getStringValue();
if (tname.empty()) {
tname = "unknown.rgb";
}
string tname = textures[i]->getStringValue();
SGPath tpath("Textures.high");
tpath.append(tname);
string fullTexPath = SGModelLib::findDataFile(tpath.str(), options);
if (fullTexPath.empty()) {
tpath = SGPath("Textures");
tpath.append(tname);
fullTexPath = SGModelLib::findDataFile(tpath.str(), options);
}
if (j == 0) {
if (tpath.lower_extension() == "dds") {
dds.push_back(true);
} else {
dds.push_back(false);
}
}
st.add_texture(fullTexPath, textures[j]->getIndex());
}
if (!st.texture_paths.empty() ) {
_status.push_back( st );
}
}
if (textures.size() == 0 && texturesets.size() == 0) {
SGPath tpath("Textures");
tpath.append("Terrain");
tpath.append("unknown.rgb");
_internal_state st( NULL, tpath.str(), true, options );
_status.push_back( st );
}
std::vector<SGPropertyNode_ptr> masks = props->getChildren("object-mask");
for (unsigned int i = 0; i < masks.size(); i++)
{
string omname = masks[i]->getStringValue();
if (! omname.empty()) {
SGPath ompath("Textures.high");
ompath.append(omname);
string fullMaskPath = SGModelLib::findDataFile(ompath.str(), options);
if (fullMaskPath.empty()) {
ompath = SGPath("Textures");
ompath.append(omname);
fullMaskPath = SGModelLib::findDataFile(ompath.str(), options);
}
if (fullMaskPath.empty()) {
SG_LOG(SG_GENERAL, SG_ALERT, "Cannot find texture file \""
<< ompath.str() << "\"");
}
else
{
osg::Image* image = osgDB::readImageFile(fullMaskPath, options);
if (image && image->valid())
{
osg::Texture2D* object_mask = new osg::Texture2D;
bool dds_mask = (ompath.lower_extension() == "dds");
if (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 the object mask
// vertically.
image->flipVertical();
}
object_mask->setImage(image);
// We force the filtering to be nearest, as the red channel (rotation)
// in particular, doesn't make sense to be interpolated between pixels.
object_mask->setFilter(osg::Texture::MIN_FILTER, osg::Texture::NEAREST);
object_mask->setFilter(osg::Texture::MAG_FILTER, osg::Texture::NEAREST);
object_mask->setDataVariance(osg::Object::STATIC);
object_mask->setWrap(osg::Texture::WRAP_S, osg::Texture::REPEAT);
object_mask->setWrap(osg::Texture::WRAP_T, osg::Texture::REPEAT);
_masks.push_back(object_mask);
if (tname.empty()) {
tname = "unknown.rgb";
}
SGPath tpath("Textures.high");
tpath.append(tname);
string fullTexPath = SGModelLib::findDataFile(tpath.str(), options);
if (fullTexPath.empty()) {
tpath = SGPath("Textures");
tpath.append(tname);
fullTexPath = SGModelLib::findDataFile(tpath.str(), options);
}
if (tpath.lower_extension() == "dds") {
dds.push_back(true);
} else {
dds.push_back(false);
}
if (!fullTexPath.empty() ) {
_internal_state st( NULL, fullTexPath, false, options );
_status.push_back( st );
}
}
}
}
xsize = props->getDoubleValue("xsize", 0.0);
ysize = props->getDoubleValue("ysize", 0.0);
wrapu = props->getBoolValue("wrapu", true);
wrapv = props->getBoolValue("wrapv", true);
mipmap = props->getBoolValue("mipmap", true);
light_coverage = props->getDoubleValue("light-coverage", 0.0);
wood_coverage = props->getDoubleValue("wood-coverage", 0.0);
tree_height = props->getDoubleValue("tree-height-m", 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);
std::vector<SGPropertyNode_ptr> texturesets = props->getChildren("texture-set");
for (unsigned int i = 0; i < texturesets.size(); i++)
{
_internal_state st( NULL, false, options );
std::vector<SGPropertyNode_ptr> textures = texturesets[i]->getChildren("texture");
for (unsigned int j = 0; j < textures.size(); j++)
{
string tname = textures[j]->getStringValue();
if (tname.empty()) {
tname = "unknown.rgb";
}
const SGPropertyNode* treeTexNode = props->getChild("tree-texture");
if (treeTexNode) {
string treeTexPath = props->getStringValue("tree-texture");
SGPath tpath("Textures.high");
tpath.append(tname);
string fullTexPath = SGModelLib::findDataFile(tpath.str(), options);
if (fullTexPath.empty()) {
tpath = SGPath("Textures");
tpath.append(tname);
fullTexPath = SGModelLib::findDataFile(tpath.str(), options);
}
if (j == 0) {
if (tpath.lower_extension() == "dds") {
dds.push_back(true);
} else {
dds.push_back(false);
}
}
st.add_texture(fullTexPath, textures[j]->getIndex());
}
if (!st.texture_paths.empty() ) {
_status.push_back( st );
}
}
if (textures.size() == 0 && texturesets.size() == 0) {
SGPath tpath("Textures");
tpath.append("Terrain");
tpath.append("unknown.rgb");
_internal_state st( NULL, tpath.str(), true, options );
_status.push_back( st );
}
if (! treeTexPath.empty()) {
SGPath treePath("Textures.high");
treePath.append(treeTexPath);
tree_texture = SGModelLib::findDataFile(treePath.str(), options);
if (tree_texture.empty()) {
treePath = SGPath("Textures");
treePath.append(treeTexPath);
tree_texture = SGModelLib::findDataFile(treePath.str(), options);
}
std::vector<SGPropertyNode_ptr> masks = props->getChildren("object-mask");
for (unsigned int i = 0; i < masks.size(); i++)
{
string omname = masks[i]->getStringValue();
if (! omname.empty()) {
SGPath ompath("Textures.high");
ompath.append(omname);
string fullMaskPath = SGModelLib::findDataFile(ompath.str(), options);
if (fullMaskPath.empty()) {
ompath = SGPath("Textures");
ompath.append(omname);
fullMaskPath = SGModelLib::findDataFile(ompath.str(), options);
}
if (fullMaskPath.empty()) {
SG_LOG(SG_GENERAL, SG_ALERT, "Cannot find texture file \""
<< ompath.str() << "\"");
}
else
{
osg::Image* image = osgDB::readImageFile(fullMaskPath, options);
if (image && image->valid())
{
osg::Texture2D* object_mask = new osg::Texture2D;
bool dds_mask = (ompath.lower_extension() == "dds");
if (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 the object mask
// vertically.
image->flipVertical();
}
object_mask->setImage(image);
// We force the filtering to be nearest, as the red channel (rotation)
// in particular, doesn't make sense to be interpolated between pixels.
object_mask->setFilter(osg::Texture::MIN_FILTER, osg::Texture::NEAREST);
object_mask->setFilter(osg::Texture::MAG_FILTER, osg::Texture::NEAREST);
object_mask->setDataVariance(osg::Object::STATIC);
object_mask->setWrap(osg::Texture::WRAP_S, osg::Texture::REPEAT);
object_mask->setWrap(osg::Texture::WRAP_T, osg::Texture::REPEAT);
_masks.push_back(object_mask);
}
}
}
}
}
// surface values for use with ground reactions
solid = props->getBoolValue("solid", true);
friction_factor = props->getDoubleValue("friction-factor", 1.0);
rolling_friction = props->getDoubleValue("rolling-friction", 0.02);
bumpiness = props->getDoubleValue("bumpiness", 0.0);
load_resistance = props->getDoubleValue("load-resistance", 1e30);
// Taken from default values as used in ac3d
ambient[0] = props->getDoubleValue("ambient/r", 0.2);
ambient[1] = props->getDoubleValue("ambient/g", 0.2);
ambient[2] = props->getDoubleValue("ambient/b", 0.2);
ambient[3] = props->getDoubleValue("ambient/a", 1.0);
xsize = props->getDoubleValue("xsize", 0.0);
ysize = props->getDoubleValue("ysize", 0.0);
wrapu = props->getBoolValue("wrapu", true);
wrapv = props->getBoolValue("wrapv", true);
mipmap = props->getBoolValue("mipmap", true);
light_coverage = props->getDoubleValue("light-coverage", 0.0);
wood_coverage = props->getDoubleValue("wood-coverage", 0.0);
tree_height = props->getDoubleValue("tree-height-m", 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);
diffuse[0] = props->getDoubleValue("diffuse/r", 0.8);
diffuse[1] = props->getDoubleValue("diffuse/g", 0.8);
diffuse[2] = props->getDoubleValue("diffuse/b", 0.8);
diffuse[3] = props->getDoubleValue("diffuse/a", 1.0);
const SGPropertyNode* treeTexNode = props->getChild("tree-texture");
if (treeTexNode) {
string treeTexPath = props->getStringValue("tree-texture");
specular[0] = props->getDoubleValue("specular/r", 0.0);
specular[1] = props->getDoubleValue("specular/g", 0.0);
specular[2] = props->getDoubleValue("specular/b", 0.0);
specular[3] = props->getDoubleValue("specular/a", 1.0);
if (! treeTexPath.empty()) {
SGPath treePath("Textures.high");
treePath.append(treeTexPath);
tree_texture = SGModelLib::findDataFile(treePath.str(), options);
emission[0] = props->getDoubleValue("emissive/r", 0.0);
emission[1] = props->getDoubleValue("emissive/g", 0.0);
emission[2] = props->getDoubleValue("emissive/b", 0.0);
emission[3] = props->getDoubleValue("emissive/a", 1.0);
if (tree_texture.empty()) {
treePath = SGPath("Textures");
treePath.append(treeTexPath);
tree_texture = SGModelLib::findDataFile(treePath.str(), options);
}
}
}
shininess = props->getDoubleValue("shininess", 1.0);
// surface values for use with ground reactions
solid = props->getBoolValue("solid", true);
friction_factor = props->getDoubleValue("friction-factor", 1.0);
rolling_friction = props->getDoubleValue("rolling-friction", 0.02);
bumpiness = props->getDoubleValue("bumpiness", 0.0);
load_resistance = props->getDoubleValue("load-resistance", 1e30);
if (props->hasChild("effect"))
effect = props->getStringValue("effect");
std::vector<SGPropertyNode_ptr> object_group_nodes =
((SGPropertyNode *)props)->getChildren("object-group");
for (unsigned int i = 0; i < object_group_nodes.size(); i++)
object_groups.push_back(new SGMatModelGroup(object_group_nodes[i]));
// Taken from default values as used in ac3d
ambient[0] = props->getDoubleValue("ambient/r", 0.2);
ambient[1] = props->getDoubleValue("ambient/g", 0.2);
ambient[2] = props->getDoubleValue("ambient/b", 0.2);
ambient[3] = props->getDoubleValue("ambient/a", 1.0);
// read glyph table for taxi-/runway-signs
std::vector<SGPropertyNode_ptr> glyph_nodes = props->getChildren("glyph");
for (unsigned int i = 0; i < glyph_nodes.size(); i++) {
const char *name = glyph_nodes[i]->getStringValue("name");
if (name)
glyphs[name] = new SGMaterialGlyph(glyph_nodes[i]);
}
// Read conditions node
const SGPropertyNode *conditionNode = props->getChild("condition");
if (conditionNode) {
condition = sgReadCondition(prop_root, conditionNode);
}
diffuse[0] = props->getDoubleValue("diffuse/r", 0.8);
diffuse[1] = props->getDoubleValue("diffuse/g", 0.8);
diffuse[2] = props->getDoubleValue("diffuse/b", 0.8);
diffuse[3] = props->getDoubleValue("diffuse/a", 1.0);
specular[0] = props->getDoubleValue("specular/r", 0.0);
specular[1] = props->getDoubleValue("specular/g", 0.0);
specular[2] = props->getDoubleValue("specular/b", 0.0);
specular[3] = props->getDoubleValue("specular/a", 1.0);
emission[0] = props->getDoubleValue("emissive/r", 0.0);
emission[1] = props->getDoubleValue("emissive/g", 0.0);
emission[2] = props->getDoubleValue("emissive/b", 0.0);
emission[3] = props->getDoubleValue("emissive/a", 1.0);
shininess = props->getDoubleValue("shininess", 1.0);
if (props->hasChild("effect"))
effect = props->getStringValue("effect");
std::vector<SGPropertyNode_ptr> object_group_nodes =
((SGPropertyNode *)props)->getChildren("object-group");
for (unsigned int i = 0; i < object_group_nodes.size(); i++)
object_groups.push_back(new SGMatModelGroup(object_group_nodes[i]));
// read glyph table for taxi-/runway-signs
std::vector<SGPropertyNode_ptr> glyph_nodes = props->getChildren("glyph");
for (unsigned int i = 0; i < glyph_nodes.size(); i++) {
const char *name = glyph_nodes[i]->getStringValue("name");
if (name)
glyphs[name] = new SGMaterialGlyph(glyph_nodes[i]);
}
// Read conditions node
const SGPropertyNode *conditionNode = props->getChild("condition");
if (conditionNode) {
condition = sgReadCondition(prop_root, conditionNode);
}
}
@@ -406,9 +404,9 @@ osg::Texture2D* SGMaterial::get_object_mask(SGTexturedTriangleBin triangleBin)
// so we index based on the texture index,
unsigned int i = triangleBin.getTextureIndex() % _status.size();
if (i < _masks.size()) {
return _masks[i];
return _masks[i];
} else {
return 0;
return 0;
}
}
@@ -459,12 +457,12 @@ void SGMaterial::buildEffectProperties(const SGReaderWriterOptions* options)
SGMaterialGlyph* SGMaterial::get_glyph (const string& name) const
{
map<string, SGSharedPtr<SGMaterialGlyph> >::const_iterator it;
it = glyphs.find(name);
if (it == glyphs.end())
return 0;
map<string, SGSharedPtr<SGMaterialGlyph> >::const_iterator it;
it = glyphs.find(name);
if (it == glyphs.end())
return 0;
return it->second;
return it->second;
}
@@ -480,10 +478,10 @@ SGMaterialGlyph::SGMaterialGlyph(SGPropertyNode *p) :
void
SGSetTextureFilter( int max) {
SGSceneFeatures::instance()->setTextureFilter( max);
SGSceneFeatures::instance()->setTextureFilter( max);
}
int
SGGetTextureFilter() {
return SGSceneFeatures::instance()->getTextureFilter();
return SGSceneFeatures::instance()->getTextureFilter();
}