#include "fg_os.hxx"
#include "fg_commands.hxx"
#include "fg_props.hxx"
-#include "FGInterpolator.hxx"
#include "globals.hxx"
#include "logger.hxx"
#include "util.hxx"
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");
}
}
- mgr->interpolate
+ return prop->interpolate
(
- prop,
arg->getStringValue("type", "numeric"),
value_nodes,
deltas,
arg->getStringValue("easing", "linear")
);
-
- return true;
}
/**
// 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.
#include <Main/globals.hxx>
#include <Main/util.hxx>
#include <Main/fg_props.hxx>
-#include <Main/FGInterpolator.hxx>
using std::map;
// 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);
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();
}