Hi,

here is a patch for the head/osg-branch. But unfortunately it does not work here. It seems, that
   FGGroundCache::get_agl(double t, const SGVec3d& dpt, double max_altoff,
                      SGVec3d& contact, SGVec3d& normal, SGVec3d& vel,
                      int *type, const SGMaterial** material, double *agl)
does not return the material.

Does anyone know, if this is not supported in osg?

Or is it OS-dependent?

Maik


Maik Justus schrieb am 22.12.2006 19:02:
Hi,

osg and plib branch differ in some details. My patch works only on the plib-branch. I hope I find the time to patch the head/osg-branch tonight.

Maik

? df.bat
? gear.diff
? gear.osg.diff
Index: flight.cxx
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/FDM/flight.cxx,v
retrieving revision 1.29
diff -u -p -r1.29 flight.cxx
--- flight.cxx  29 Oct 2006 19:30:24 -0000      1.29
+++ flight.cxx  22 Dec 2006 21:10:58 -0000
@@ -883,6 +883,39 @@ 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;
+  SGVec3d _contact, _normal, _vel;
+  bool ret = ground_cache.get_agl(t, SGVec3d(pt), 2.0, _contact, _normal,
+                                  _vel, type, &material, agl);
+  sgdCopyVec3(contact, _contact.data());
+  sgdCopyVec3(normal, _normal.data());
+  sgdCopyVec3(vel, _vel.data());
+  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;
+    *isSolid = true;
+  }
+  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  22 Dec 2006 21:11:03 -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.22
diff -u -p -r1.22 Airplane.cpp
--- YASim/Airplane.cpp  22 Dec 2006 18:02:17 -0000      1.22
+++ YASim/Airplane.cpp  22 Dec 2006 21:11:08 -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);
     }
Index: YASim/FGFDM.cpp
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/FDM/YASim/FGFDM.cpp,v
retrieving revision 1.45
diff -u -p -r1.45 FGFDM.cpp
--- YASim/FGFDM.cpp     18 Dec 2006 21:22:20 -0000      1.45
+++ YASim/FGFDM.cpp     22 Dec 2006 21:11:11 -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  22 Dec 2006 21:11:12 -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  22 Dec 2006 21:11:12 -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      22 Dec 2006 21:11:13 -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      22 Dec 2006 21:11:13 -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    22 Dec 2006 21:11:13 -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    22 Dec 2006 21:11:14 -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     22 Dec 2006 21:11:15 -0000
@@ -13,7 +13,12 @@
 #include "Rotorpart.hpp"
 #include "Glue.hpp"
 #include "Ground.hpp"
-
+/*
+#include <stdio.h>
+#include <iostream>
+#include <sstream>
+#include <simgear/debug/logstream.hxx>
+*/
 #include "Model.hpp"
 namespace yasim {
 
@@ -307,8 +312,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 +503,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.37
diff -u -p -r1.37 YASim.cxx
--- YASim/YASim.cxx     9 Dec 2006 20:37:59 -0000       1.37
+++ YASim/YASim.cxx     22 Dec 2006 21:11:17 -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

Reply via email to