From 1e4ba18284b7f2841d595214f3291defda4f052e Mon Sep 17 00:00:00 2001 From: Thomas Geymayer Date: Sun, 17 Mar 2013 23:48:42 +0100 Subject: [PATCH] Update/simplify property interpolation to latest SimGear changes --- src/Main/fg_commands.cxx | 21 +++------------------ src/Main/fg_init.cxx | 8 ++++---- src/Scripting/NasalSys.cxx | 24 +----------------------- 3 files changed, 8 insertions(+), 45 deletions(-) diff --git a/src/Main/fg_commands.cxx b/src/Main/fg_commands.cxx index 9d39d237d..4c3272916 100644 --- a/src/Main/fg_commands.cxx +++ b/src/Main/fg_commands.cxx @@ -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 - ( - 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; } /** diff --git a/src/Main/fg_init.cxx b/src/Main/fg_init.cxx index b0f8b511a..c0dfa0225 100644 --- a/src/Main/fg_init.cxx +++ b/src/Main/fg_init.cxx @@ -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. diff --git a/src/Scripting/NasalSys.cxx b/src/Scripting/NasalSys.cxx index 58a9417dc..b7bf068a5 100644 --- a/src/Scripting/NasalSys.cxx +++ b/src/Scripting/NasalSys.cxx @@ -45,7 +45,6 @@ #include
#include
#include
-#include
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 - ( - 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(); } -- 2.39.5