]> git.mxchange.org Git - flightgear.git/commitdiff
Update/simplify property interpolation to latest SimGear changes
authorThomas Geymayer <tomgey@gmail.com>
Sun, 17 Mar 2013 22:48:42 +0000 (23:48 +0100)
committerThomas Geymayer <tomgey@gmail.com>
Sun, 17 Mar 2013 22:49:15 +0000 (23:49 +0100)
src/Main/fg_commands.cxx
src/Main/fg_init.cxx
src/Scripting/NasalSys.cxx

index 9d39d237dd883bff1ac3c177bbd710dd35287df7..4c3272916f56a3180e29b9d8457e697bb71cfecb 100644 (file)
@@ -44,7 +44,6 @@
 #include "fg_os.hxx"
 #include "fg_commands.hxx"
 #include "fg_props.hxx"
-#include "FGInterpolator.hxx"
 #include "globals.hxx"
 #include "logger.hxx"
 #include "util.hxx"
@@ -900,21 +899,10 @@ do_property_randomize (const SGPropertyNode * arg)
 static bool
 do_property_interpolate (const SGPropertyNode * arg)
 {
-  FGInterpolator* mgr =
-    static_cast<FGInterpolator*>
-    (
-      globals->get_subsystem_mgr()
-             ->get_group(SGSubsystemMgr::INIT)
-             ->get_subsystem("prop-interpolator")
-    );
-
-  if( !mgr )
-  {
-    SG_LOG(SG_GENERAL, SG_WARN, "No property interpolator available");
+  SGPropertyNode * prop = get_prop(arg);
+  if( !prop )
     return false;
-  }
 
-  SGPropertyNode * prop = get_prop(arg);
   simgear::PropertyList time_nodes = arg->getChildren("time");
   simgear::PropertyList rate_nodes = arg->getChildren("rate");
 
@@ -966,16 +954,13 @@ do_property_interpolate (const SGPropertyNode * arg)
     }
   }
 
-  mgr->interpolate
+  return prop->interpolate
   (
-    prop,
     arg->getStringValue("type", "numeric"),
     value_nodes,
     deltas,
     arg->getStringValue("easing", "linear")
   );
-
-  return true;
 }
 
 /**
index b0f8b511acb84900191f82f5b08d9e99ec115589..c0dfa0225b185183cabf71e7c56f824dcc766e97 100644 (file)
@@ -570,10 +570,10 @@ void fgCreateSubsystems() {
     // Initialize the property interpolator subsystem. Put into the INIT
     // group because the "nasal" subsystem may need it at GENERAL take-down.
     ////////////////////////////////////////////////////////////////////
-    globals->add_subsystem( "prop-interpolator",
-                            new FGInterpolator,
-                            SGSubsystemMgr::INIT );
-
+    FGInterpolator* interp = new FGInterpolator;
+    interp->setRealtimeProperty(fgGetNode("/sim/time/delta-realtime-sec", true));
+    globals->add_subsystem("prop-interpolator", interp, SGSubsystemMgr::INIT);
+    SGPropertyNode::setInterpolationMgr(interp);
 
     ////////////////////////////////////////////////////////////////////
     // Add the FlightGear property utilities.
index 58a9417dc5ebb65c7264447a36a740a662884ea9..b7bf068a5f7ff7956c232fdc52fb7b06d1f0c942 100644 (file)
@@ -45,7 +45,6 @@
 #include <Main/globals.hxx>
 #include <Main/util.hxx>
 #include <Main/fg_props.hxx>
-#include <Main/FGInterpolator.hxx>
 
 using std::map;
 
@@ -513,19 +512,6 @@ static naRef f_cmdarg(naContext c, naRef me, int argc, naRef* args)
 // value/delta numbers.
 static naRef f_interpolate(naContext c, naRef me, int argc, naRef* args)
 {
-  FGInterpolator* mgr =
-    static_cast<FGInterpolator*>
-    (
-      globals->get_subsystem_mgr()
-             ->get_group(SGSubsystemMgr::INIT)
-             ->get_subsystem("prop-interpolator")
-    );
-  if( !mgr )
-  {
-    SG_LOG(SG_GENERAL, SG_WARN, "No property interpolator available");
-    return naNil();
-  };
-
   SGPropertyNode* node;
   naRef prop = argc > 0 ? args[0] : naNil();
   if(naIsString(prop)) node = fgGetNode(naStr_data(prop), true);
@@ -549,15 +535,7 @@ static naRef f_interpolate(naContext c, naRef me, int argc, naRef* args)
     deltas.push_back(naNumValue(naVec_get(curve, 2*i+1)).num);
   }
 
-  mgr->interpolate
-  (
-    node,
-    "numeric",
-    value_nodes,
-    deltas,
-    "linear"
-  );
-
+  node->interpolate("numeric", value_nodes, deltas, "linear");
   return naNil();
 }