+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include "Math.hpp"
#include "BodyEnvironment.hpp"
#include "RigidBody.hpp"
-#include <simgear/scene/material/mat.hxx>
+#include <cfloat>
+#include <simgear/bvh/BVHMaterial.hxx>
#include <FDM/flight.hxx>
#include "Gear.hpp"
namespace yasim {
void Gear::setGlobalGround(double *global_ground, float* global_vel,
double globalX, double globalY,
- const SGMaterial *material)
+ const simgear::BVHMaterial *material)
{
int i;
double frictionFactor,rollingFriction,loadCapacity,loadResistance,bumpiness;
// Don't bother if it's not down
if(_extension < 1)
- return;
+ {
+ _wow = 0;
+ _frac = 0;
+ return;
+ }
// Dont bother if we are in the "wrong" ground
if (!((_onWater&&!_ground_isSolid)||(_onSolid&&_ground_isSolid))) {
- _wow = 0;
- _frac = 0;
+ _wow = 0;
+ _frac = 0;
_compressDist = 0;
_rollSpeed = 0;
_casterAngle = 0;
- return;
+ return;
}
// The ground plane transformed to the local frame.
float b = ground[3] - Math::dot3(tmp, ground)+BumpAltitude;
// Calculate the point of ground _contact.
- _frac = a/(a-b);
- if(b < 0) _frac = 1;
+ if(b < 0)
+ _frac = 1;
+ else
+ _frac = a/(a-b);
for(i=0; i<3; i++)
_contact[i] = _pos[i] + _frac*_cmpr[i];