Make it possible to use a property reference for the solid property of a material. e.g.: <solid><property>/sim/ice</property></solid>
This commit is contained in:
parent
06ecfe1927
commit
33b0c39dbd
@ -1,37 +0,0 @@
|
||||
// Copyright (C) 2008 - 2012 Mathias Froehlich - Mathias.Froehlich@web.de
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Library General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Library General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
//
|
||||
|
||||
#include <simgear_config.h>
|
||||
|
||||
#include "BVHMaterial.hxx"
|
||||
|
||||
namespace simgear {
|
||||
|
||||
BVHMaterial::BVHMaterial() :
|
||||
_solid(true),
|
||||
_friction_factor(1),
|
||||
_rolling_friction(0.02),
|
||||
_bumpiness(0),
|
||||
_load_resistance(1e30)
|
||||
{
|
||||
}
|
||||
|
||||
BVHMaterial::~BVHMaterial()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
@ -19,19 +19,24 @@
|
||||
#define BVHMaterial_hxx
|
||||
|
||||
#include <simgear/structure/SGReferenced.hxx>
|
||||
#include <simgear/props/props.hxx>
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
namespace simgear {
|
||||
|
||||
class BVHMaterial : public SGReferenced {
|
||||
public:
|
||||
BVHMaterial();
|
||||
virtual ~BVHMaterial();
|
||||
BVHMaterial() = default;
|
||||
virtual ~BVHMaterial() = default;
|
||||
|
||||
/**
|
||||
* Return if the surface material is solid, if it is not solid, a fluid
|
||||
* can be assumed, that is usually water.
|
||||
*/
|
||||
bool get_solid () const { return _solid; }
|
||||
bool get_solid () const {
|
||||
return _solid_is_prop ? _solid_property->getBoolValue() : _solid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the friction factor for that material
|
||||
@ -55,21 +60,26 @@ public:
|
||||
|
||||
protected:
|
||||
// True if the material is solid, false if it is a fluid
|
||||
bool _solid;
|
||||
bool _solid = true;
|
||||
|
||||
// the friction factor of that surface material
|
||||
double _friction_factor;
|
||||
double _friction_factor = 1.0;
|
||||
|
||||
// the rolling friction of that surface material
|
||||
double _rolling_friction;
|
||||
double _rolling_friction = 0.02;
|
||||
|
||||
// the bumpiness of that surface material
|
||||
double _bumpiness;
|
||||
double _bumpiness = 0.0;
|
||||
|
||||
// the load resistance of that surface material
|
||||
double _load_resistance;
|
||||
double _load_resistance = 1e30;
|
||||
|
||||
// Placeholder for the solid property, if defined
|
||||
SGPropertyNode_ptr _solid_property;
|
||||
bool _solid_is_prop = false;
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
#,endif
|
||||
|
@ -39,7 +39,6 @@ set(SOURCES
|
||||
BVHStaticNode.cxx
|
||||
BVHStaticTriangle.cxx
|
||||
BVHSubTreeCollector.cxx
|
||||
BVHMaterial.cxx
|
||||
BVHTransform.cxx
|
||||
)
|
||||
|
||||
|
@ -385,7 +385,13 @@ SGMaterial::read_properties(const SGReaderWriterOptions* options,
|
||||
}
|
||||
|
||||
// surface values for use with ground reactions
|
||||
_solid = props->getBoolValue("solid", _solid);
|
||||
string propval = props->getStringValue("solid/property", "");
|
||||
if (propval != "") {
|
||||
_solid_property = prop_root->getNode(propval, true);
|
||||
_solid_is_prop =true;
|
||||
} else {
|
||||
_solid = props->getBoolValue("solid", _solid);
|
||||
}
|
||||
_friction_factor = props->getDoubleValue("friction-factor", _friction_factor);
|
||||
_rolling_friction = props->getDoubleValue("rolling-friction", _rolling_friction);
|
||||
_bumpiness = props->getDoubleValue("bumpiness", _bumpiness);
|
||||
|
Loading…
Reference in New Issue
Block a user