Hi,
small fix, use this diff instead of the gear.diff of my last mail (only
necessary if you compiler don't like the first one).
Maik
Maik Justus schrieb am 22.12.2006 00:30:
Hi,
I have improved the gear-properties "on water" further (so some tags
cited in my last mail have changed, see README.yasim). With the
enclosed patch you can define realistic floats.
See the enclosed patch for the dhc2f (Beaver). Maybe the drag of the
floats is a little bit to low. But I have no experience with real floats.
Don't forget to retract the gear before landing on water!
If you try this patch you should switch on the dynamic view to "feel"
the bumpiness of grass and water!
Maik
Maik Justus schrieb am 21.12.2006 02:14:
Hi
here is a patch that YASim gears make use of the ground properties
(friction, bumpiness, etc).
It enhances the gears, that you can define different gears for "on
water" and for "not on water".
And you can define "inverse-speed-spring-is-doubled", with this the
gear extends with increasing speed which can be used for lifting the
airplane out of the water with increasing speed. The friction at this
speed is reduced by "reduce-friction-by-speed" to simulate (fake?)
the reduced drag.
This patch is tested only a very bit on default scenery with only one
aircraft. It is probably not ready for cvs. (all enhancements for
water aircrafts are fully untested...) I hope I find the time to test
the beaver in the next days.
Maik
Maik Justus schrieb am 20.12.2006 01:19:
Hi Melchior,
thanks for the info. I will try to make use of this with the yasim
gears.
Maik
Index: flight.cxx
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/FDM/flight.cxx,v
retrieving revision 1.28
diff -u -p -r1.28 flight.cxx
--- flight.cxx 26 Jul 2006 14:18:06 -0000 1.28
+++ flight.cxx 21 Dec 2006 22:46:59 -0000
@@ -870,6 +870,34 @@ FGInterface::get_agl_m(double t, const d
return ret;
}
+bool
+FGInterface::get_agl_m(double t, const double pt[3],
+ double contact[3], double normal[3], double vel[3],
+ int *type, double *loadCapacity,
+ double *frictionFactor, double *agl,
+ double *rollingFritction, double *loadResistance,
+ double *bumpiness, bool *isSolid)
+{
+ const SGMaterial* material;
+ bool ret = ground_cache.get_agl(t, pt, 2.0, contact, normal, vel, type,
+ &material, agl);
+ if (material) {
+ *loadCapacity = material->get_load_resistence();
+ *frictionFactor = material->get_friction_factor();
+ *rollingFritction = material->get_rolling_friction();
+ *loadResistance = material->get_load_resistence();
+ *bumpiness = material->get_bumpiness();
+ *isSolid = material->get_solid();
+ } else {
+ *loadCapacity = DBL_MAX;
+ *frictionFactor = 1.0;
+ *rollingFritction = 0.02;
+ *loadResistance = DBL_MAX;
+ *bumpiness = 0.0;
+ }
+ return ret;
+}
+
// Legacy interface just kept because of JSBSim
bool
FGInterface::get_agl_ft(double t, const double pt[3],
Index: flight.hxx
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/FDM/flight.hxx,v
retrieving revision 1.13
diff -u -p -r1.13 flight.hxx
--- flight.hxx 11 Jun 2006 13:34:19 -0000 1.13
+++ flight.hxx 21 Dec 2006 22:47:04 -0000
@@ -1128,6 +1128,12 @@ public:
double contact[3], double normal[3], double vel[3],
int *type, double *loadCapacity,
double *frictionFactor, double *agl);
+ bool get_agl_m(double t, const double pt[3],
+ double contact[3], double normal[3], double vel[3],
+ int *type, double *loadCapacity,
+ double *frictionFactor, double *agl,
+ double *rollingFritction, double *loadResistance,
+ double *bumpiness,bool *isSolid);
bool get_agl_ft(double t, const double pt[3],
double contact[3], double normal[3], double vel[3],
int *type, double *loadCapacity,
Index: YASim/Airplane.cpp
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/FDM/YASim/Airplane.cpp,v
retrieving revision 1.20.2.1
diff -u -p -r1.20.2.1 Airplane.cpp
--- YASim/Airplane.cpp 18 Dec 2006 21:32:56 -0000 1.20.2.1
+++ YASim/Airplane.cpp 21 Dec 2006 22:47:16 -0000
@@ -602,6 +602,7 @@ void Airplane::compileContactPoints()
// I made these up
g->setStaticFriction(0.6f);
g->setDynamicFriction(0.5f);
+ g->setContactPoint(1);
_model.addGear(g);
}
@@ -740,8 +741,8 @@ void Airplane::solveGear()
* gr->gear->getDamping());
// These are pretty generic
- gr->gear->setStaticFriction(0.8f);
- gr->gear->setDynamicFriction(0.7f);
+ //gr->gear->setStaticFriction(0.8f);
+ //gr->gear->setDynamicFriction(0.7f);
}
}
Index: YASim/FGFDM.cpp
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/FDM/YASim/FGFDM.cpp,v
retrieving revision 1.44.2.1
diff -u -p -r1.44.2.1 FGFDM.cpp
--- YASim/FGFDM.cpp 18 Dec 2006 21:32:56 -0000 1.44.2.1
+++ YASim/FGFDM.cpp 21 Dec 2006 22:47:20 -0000
@@ -273,6 +273,10 @@ void FGFDM::startElement(const char* nam
g->setDynamicFriction(attrf(a, "dfric", 0.7));
g->setSpring(attrf(a, "spring", 1));
g->setDamping(attrf(a, "damp", 1));
+ if(attrb(a,"on-water"))g->setOnWater(1);
+ if(attrb(a,"on-solid"))g->setOnSolid(1);
+ g->setInverseSpeedSpringIsDoubled(attrf(a,
"inverse-speed-spring-is-doubled", 0));
+ g->setReduceFrictionByExtension(attrf(a,
"reduce-friction-by-extension", 0));
_airplane.addGear(g);
} else if(eq(name, "hook")) {
Hook* h = new Hook();
Index: YASim/FGGround.cpp
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/FDM/YASim/FGGround.cpp,v
retrieving revision 1.2
diff -u -p -r1.2 FGGround.cpp
--- YASim/FGGround.cpp 18 Feb 2005 12:40:39 -0000 1.2
+++ YASim/FGGround.cpp 21 Dec 2006 22:47:20 -0000
@@ -35,6 +35,29 @@ void FGGround::getGroundPlane(const doub
for(int i=0; i<3; i++) vel[i] = dvel[i];
}
+void FGGround::getGroundPlane(const double pos[3],
+ double plane[4], float vel[3],
+ int *type,
+ double *frictionFactor,
+ double *rollingFriction,
+ double *loadCapacity,
+ double *loadResistance,
+ double *bumpiness,
+ bool *isSolid)
+{
+ // Return values for the callback.
+ double agl;
+ double cp[3], dvel[3];
+ _iface->get_agl_m(_toff, pos, cp, plane, dvel,
+ type, loadCapacity, frictionFactor, &agl,
+ rollingFriction,loadResistance,bumpiness,isSolid);
+
+ // The plane below the actual contact point.
+ plane[3] = plane[0]*cp[0] + plane[1]*cp[1] + plane[2]*cp[2];
+
+ for(int i=0; i<3; i++) vel[i] = dvel[i];
+}
+
bool FGGround::caughtWire(const double pos[4][3])
{
return _iface->caught_wire_m(_toff, pos);
Index: YASim/FGGround.hpp
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/FDM/YASim/FGGround.hpp,v
retrieving revision 1.1
diff -u -p -r1.1 FGGround.hpp
--- YASim/FGGround.hpp 17 Feb 2005 10:37:26 -0000 1.1
+++ YASim/FGGround.hpp 21 Dec 2006 22:47:20 -0000
@@ -18,6 +18,16 @@ public:
virtual void getGroundPlane(const double pos[3],
double plane[4], float vel[3]);
+ virtual void getGroundPlane(const double pos[3],
+ double plane[4], float vel[3],
+ int *type,
+ double *frictionFactor,
+ double *rollingFriction,
+ double *loadCapacity,
+ double *loadResistance,
+ double *bumpiness,
+ bool *isSolid);
+
virtual bool caughtWire(const double pos[4][3]);
virtual bool getWire(double end[2][3], float vel[2][3]);
Index: YASim/Gear.cpp
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/FDM/YASim/Gear.cpp,v
retrieving revision 1.7
diff -u -p -r1.7 Gear.cpp
--- YASim/Gear.cpp 24 Nov 2005 17:35:42 -0000 1.7
+++ YASim/Gear.cpp 21 Dec 2006 22:47:21 -0000
@@ -4,6 +4,9 @@
#include "Gear.hpp"
namespace yasim {
+static const float YASIM_PI = 3.14159265358979323846;
+static const float maxGroundBumpAmplitude=0.5;
+ //Amplitude can be positive and negative
Gear::Gear()
{
@@ -19,6 +22,20 @@ Gear::Gear()
_extension = 1;
_castering = false;
_frac = 0;
+ _ground_type = 0;
+ _ground_frictionFactor = 1;
+ _ground_rollingFriction = 0.02;
+ _ground_loadCapacity = 1e30;
+ _ground_loadResistance = 1e30;
+ _ground_isSolid=1;
+ _ground_bumpiness = 0;
+ _onWater=0;
+ _onSolid=1;
+ _global_x=0.0;
+ _global_y=0.0;
+ _inverseSpeedSpringIsDoubled=0;
+ _reduceFrictionByExtension=0;
+ _isContactPoint=0;
for(i=0; i<3; i++)
_global_ground[i] = _global_vel[i] = 0;
@@ -78,11 +95,51 @@ void Gear::setCastering(bool c)
_castering = c;
}
-void Gear::setGlobalGround(double *global_ground, float* global_vel)
+void Gear::setContactPoint(bool c)
+{
+ _isContactPoint=c;
+}
+
+void Gear::setOnWater(bool c)
+{
+ _onWater = c;
+}
+
+void Gear::setOnSolid(bool c)
+{
+ _onSolid = c;
+}
+
+void Gear::setInverseSpeedSpringIsDoubled(float s)
+{
+ _inverseSpeedSpringIsDoubled=s;
+}
+
+void Gear::setReduceFrictionByExtension(float s)
+{
+ _reduceFrictionByExtension=s;
+}
+
+void Gear::setGlobalGround(double *global_ground, float* global_vel,
+ double globalX, double globalY,
+ int type, double frictionFactor,
+ double rollingFriction, double loadCapacity,
+ double loadResistance, double bumpiness,
+ bool isSolid)
{
int i;
for(i=0; i<4; i++) _global_ground[i] = global_ground[i];
for(i=0; i<3; i++) _global_vel[i] = global_vel[i];
+ _ground_type = type;
+ _ground_frictionFactor=frictionFactor;
+ _ground_rollingFriction=rollingFriction;
+ _ground_loadCapacity=loadCapacity;
+ _ground_loadResistance=loadResistance;
+ _ground_bumpiness=bumpiness;
+ _ground_isSolid=isSolid;
+ _global_x=globalX;
+ _global_y=globalY;
+
}
void Gear::getPosition(float* out)
@@ -159,6 +216,31 @@ bool Gear::getCastering()
return _castering;
}
+bool Gear::getGroundIsSolid()
+{
+ return _ground_isSolid;
+}
+
+float Gear::getBumbAltitude()
+{
+ if (_ground_bumpiness<0.001) return 0.0;
+ double x = _global_x*10;
+ double y = _global_y*10;
+ x-=Math::floor(x);
+ y-=Math::floor(y);
+ x*=2*YASIM_PI;
+ y*=2*YASIM_PI;
+ //now x and y are in the range of 0..2pi
+ //we need a function, that is periodically on 2pi and gives some
+ //height. This is not very fast, but for a beginning.
+ //maybe this should be done by interpolating between some precalculated
+ //values
+ float h= Math::sin(x)+Math::sin(7*x)+Math::sin(8*x)+Math::sin(13*x);
+ h+= Math::sin(2*y)+Math::sin(5*y)+Math::sin(9*y*x)+Math::sin(17*y);
+
+ return h *(1/8.)*_ground_bumpiness*maxGroundBumpAmplitude;
+}
+
void Gear::calcForce(RigidBody* body, State *s, float* v, float* rot)
{
// Init the return values
@@ -169,6 +251,15 @@ void Gear::calcForce(RigidBody* body, St
if(_extension < 1)
return;
+ if (!((_onWater&&!_ground_isSolid)||(_onSolid&&_ground_isSolid))) {
+ _wow = 0;
+ _frac = 0;
+ _compressDist = 0;
+ _rollSpeed = 0;
+ _casterAngle = 0;
+ return;
+ }
+
// The ground plane transformed to the local frame.
float ground[4];
s->planeGlobalToLocal(_global_ground, ground);
@@ -180,6 +271,12 @@ void Gear::calcForce(RigidBody* body, St
// First off, make sure that the gear "tip" is below the ground.
// If it's not, there's no force.
float a = ground[3] - Math::dot3(_pos, ground);
+ float BumbAltitude=0;
+ if (a<maxGroundBumpAmplitude)
+ {
+ BumbAltitude=getBumbAltitude();
+ a+=BumbAltitude;
+ }
_compressDist = -a;
if(a > 0) {
_wow = 0;
@@ -196,7 +293,7 @@ void Gear::calcForce(RigidBody* body, St
// above ground is negative.
float tmp[3];
Math::add3(_cmpr, _pos, tmp);
- float b = ground[3] - Math::dot3(tmp, ground);
+ float b = ground[3] - Math::dot3(tmp, ground)+BumbAltitude;
// Calculate the point of ground _contact.
_frac = a/(a-b);
@@ -219,7 +316,11 @@ void Gear::calcForce(RigidBody* body, St
// compression. (note the clamping of _frac to 1):
_frac = (_frac > 1) ? 1 : _frac;
float fmag = _frac*clen*_spring;
-
+ float inversespeed_multiplied_by_speed=0;
+ if (_inverseSpeedSpringIsDoubled>0.0000001) {
+
inversespeed_multiplied_by_speed=Math::mag3(cv)*_inverseSpeedSpringIsDoubled;
+ fmag*=1+inversespeed_multiplied_by_speed;
+ }
// Then the damping. Use the only the velocity into the ground
// (projection along "ground") projected along the compression
// axis. So Vdamp = ground*(ground dot cv) dot cmpr
@@ -284,11 +385,28 @@ void Gear::calcForce(RigidBody* body, St
_rollSpeed = vsteer;
_casterAngle = _rot;
}
-
- float fsteer = _brake * calcFriction(wgt, vsteer);
- float fskid = calcFriction(wgt, vskid);
+ float fsteer,fskid;
+ if(_ground_isSolid)
+ {
+ fsteer = (_brake * _ground_frictionFactor
+ +(1-_brake)*_ground_rollingFriction
+ )*calcFriction(wgt, vsteer);
+ fskid = calcFriction(wgt, vskid)*_ground_frictionFactor;
+ }
+ else
+ {
+ fsteer = _ground_frictionFactor *calcFrictionV2(wgt, vsteer);
+ fskid = calcFrictionV2(wgt, vskid)*_ground_frictionFactor;
+ }
if(vsteer > 0) fsteer = -fsteer;
if(vskid > 0) fskid = -fskid;
+
+ //reduce friction if wanted by _reduceFrictionByExtension
+ //float factor =
1-inversespeed_multiplied_by_speed*_reduceFrictionByExtension;
+ float factor = (1-_frac)*(1-_reduceFrictionByExtension)+_frac*1;
+ factor=Math::clamp(factor,0,1);
+ fsteer*=factor;
+ fskid*=factor;
// Phoo! All done. Add it up and get out of here.
Math::mul3(fsteer, steer, tmp);
@@ -308,5 +426,14 @@ float Gear::calcFriction(float wgt, floa
else return wgt * _dfric;
}
+float Gear::calcFrictionV2(float wgt, float v)
+{
+ // How slow is stopped? 10 cm/second?
+ const float STOP = 0.1f;
+ const float iSTOP = 1.0f/STOP;
+ v = Math::abs(v);
+ if(v < STOP) return v*iSTOP * wgt * _sfric;
+ else return wgt * _dfric*v*v*0.01;
+}
}; // namespace yasim
Index: YASim/Gear.hpp
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/FDM/YASim/Gear.hpp,v
retrieving revision 1.5
diff -u -p -r1.5 Gear.hpp
--- YASim/Gear.hpp 24 Nov 2005 17:35:42 -0000 1.5
+++ YASim/Gear.hpp 21 Dec 2006 22:47:22 -0000
@@ -39,8 +39,15 @@ public:
void setRotation(float rotation);
void setExtension(float extension);
void setCastering(bool castering);
- void setGlobalGround(double* global_ground, float* global_vel);
-
+ void setOnWater(bool c);
+ void setOnSolid(bool c);
+ void setInverseSpeedSpringIsDoubled(float s);
+ void setReduceFrictionByExtension(float s);
+ void setGlobalGround(double* global_ground, float* global_vel,
+ double globalX, double globalY,
+ int type, double frictionFactor,double rollingFriction,
+ double loadCapacity, double loadResistance, double bumpiness,
+ bool isSolid);
void getPosition(float* out);
void getCompression(float* out);
void getGlobalGround(double* global_ground);
@@ -54,6 +61,8 @@ public:
bool getCastering();
float getCasterAngle() { return _casterAngle; }
float getRollSpeed() { return _rollSpeed; }
+ float getBumbAltitude();
+ bool getGroundIsSolid();
// Takes a velocity of the aircraft relative to ground, a rotation
// vector, and a ground plane (all specified in local coordinates)
@@ -67,9 +76,12 @@ public:
float getWoW();
float getCompressFraction();
float getCompressDist() { return _compressDist; }
+ bool getIgnoreAtCrashDetection() {return
(!_ground_isSolid)&&(!_isContactPoint); }
+ void setContactPoint(bool c);
private:
float calcFriction(float wgt, float v);
+ float calcFrictionV2(float wgt, float v);
bool _castering;
float _pos[3];
@@ -90,6 +102,21 @@ private:
float _global_vel[3];
float _casterAngle;
float _rollSpeed;
+ bool _isContactPoint;
+ bool _onWater;
+ bool _onSolid;
+ float _inverseSpeedSpringIsDoubled;
+ float _reduceFrictionByExtension;
+
+ int _ground_type;
+ double _ground_frictionFactor;
+ double _ground_rollingFriction;
+ double _ground_loadCapacity;
+ double _ground_loadResistance;
+ double _ground_bumpiness;
+ bool _ground_isSolid;
+ double _global_x;
+ double _global_y;
};
}; // namespace yasim
Index: YASim/Ground.cpp
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/FDM/YASim/Ground.cpp,v
retrieving revision 1.1
diff -u -p -r1.1 Ground.cpp
--- YASim/Ground.cpp 17 Feb 2005 10:37:26 -0000 1.1
+++ YASim/Ground.cpp 21 Dec 2006 22:47:22 -0000
@@ -28,6 +28,19 @@ void Ground::getGroundPlane(const double
vel[2] = 0.0;
}
+void Ground::getGroundPlane(const double pos[3],
+ double plane[4], float vel[3],
+ int *type,
+ double *frictionFactor,
+ double *rollingFriction,
+ double *loadCapacity,
+ double *loadResistance,
+ double *bumpiness,
+ bool *isSolid)
+{
+ getGroundPlane(pos,plane,vel);
+}
+
bool Ground::caughtWire(const double pos[4][3])
{
return false;
Index: YASim/Ground.hpp
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/FDM/YASim/Ground.hpp,v
retrieving revision 1.1
diff -u -p -r1.1 Ground.hpp
--- YASim/Ground.hpp 17 Feb 2005 10:37:26 -0000 1.1
+++ YASim/Ground.hpp 21 Dec 2006 22:47:22 -0000
@@ -11,6 +11,16 @@ public:
virtual void getGroundPlane(const double pos[3],
double plane[4], float vel[3]);
+ virtual void getGroundPlane(const double pos[3],
+ double plane[4], float vel[3],
+ int *type,
+ double *frictionFactor,
+ double *rollingFriction,
+ double *loadCapacity,
+ double *loadResistance,
+ double *bumpiness,
+ bool *isSolid);
+
virtual bool caughtWire(const double pos[4][3]);
virtual bool getWire(double end[2][3], float vel[2][3]);
Index: YASim/Model.cpp
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/FDM/YASim/Model.cpp,v
retrieving revision 1.13
diff -u -p -r1.13 Model.cpp
--- YASim/Model.cpp 14 Sep 2006 18:18:33 -0000 1.13
+++ YASim/Model.cpp 21 Dec 2006 22:47:25 -0000
@@ -307,8 +307,26 @@ void Model::updateGround(State* s)
// Ask for the ground plane in the global coordinate system
double global_ground[4];
float global_vel[3];
- _ground_cb->getGroundPlane(pt, global_ground, global_vel);
- g->setGlobalGround(global_ground, global_vel);
+ int type;
+ double frictionFactor, rollingFriction, loadCapacity,
+ loadResistance, bumpiness;
+ bool isSolid;
+ //_ground_cb->getGroundPlane(pt, global_ground, global_vel);
+ _ground_cb->getGroundPlane(pt, global_ground, global_vel,
+ &type,&frictionFactor, &rollingFriction,
+ &loadCapacity,
&loadResistance,&bumpiness,&isSolid);
+ static int h=0;
+ /*
+ if (h++>100)
+ {
+ cout<<"t:"<<type<<"fF:"<<frictionFactor<<"rF:"<<rollingFriction
+ <<"lC:"<<loadCapacity<<"lR"<<loadResistance<<"b:"<<bumpiness<<"
\r";
+ h=0;
+ }
+ */
+ g->setGlobalGround(global_ground, global_vel, pt[0], pt[1],type,
+ frictionFactor, rollingFriction, loadCapacity, loadResistance,
+ bumpiness,isSolid);
}
for(i=0; i<_rotorgear.getRotors()->size(); i++) {
Rotor* r = (Rotor*)_rotorgear.getRotors()->get(i);
@@ -480,23 +498,26 @@ void Model::newState(State* s)
for(i=0; i<_gears.size(); i++) {
Gear* g = (Gear*)_gears.get(i);
- // Get the point of ground contact
- float pos[3], cmpr[3];
- g->getPosition(pos);
- g->getCompression(cmpr);
- Math::mul3(g->getCompressFraction(), cmpr, cmpr);
- Math::add3(cmpr, pos, pos);
-
- // The plane transformed to local coordinates.
- double global_ground[4];
- g->getGlobalGround(global_ground);
- float ground[4];
- s->planeGlobalToLocal(global_ground, ground);
- float dist = ground[3] - Math::dot3(pos, ground);
-
- // Find the lowest one
- if(dist < min)
- min = dist;
+ if (!g->getIgnoreAtCrashDetection())
+ {
+ // Get the point of ground contact
+ float pos[3], cmpr[3];
+ g->getPosition(pos);
+ g->getCompression(cmpr);
+ Math::mul3(g->getCompressFraction(), cmpr, cmpr);
+ Math::add3(cmpr, pos, pos);
+
+ // The plane transformed to local coordinates.
+ double global_ground[4];
+ g->getGlobalGround(global_ground);
+ float ground[4];
+ s->planeGlobalToLocal(global_ground, ground);
+ float dist = ground[3] - Math::dot3(pos, ground);
+
+ // Find the lowest one
+ if(dist < min)
+ min = dist;
+ }
}
_agl = min;
if(_agl < -1) // Allow for some integration slop
Index: YASim/YASim.cxx
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/FDM/YASim/YASim.cxx,v
retrieving revision 1.36.2.1
diff -u -p -r1.36.2.1 YASim.cxx
--- YASim/YASim.cxx 11 Dec 2006 19:49:18 -0000 1.36.2.1
+++ YASim/YASim.cxx 21 Dec 2006 22:47:35 -0000
@@ -477,6 +477,7 @@ void YASim::copyFromYASim()
node->setFloatValue("compression-m", g->getCompressDist());
node->setFloatValue("caster-angle-deg", g->getCasterAngle() * RAD2DEG);
node->setFloatValue("rollspeed-ms", g->getRollSpeed());
+ node->setBoolValue("ground-is-solid", g->getGroundIsSolid()!=0);
}
Hook* h = airplane->getHook();
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel