}
//----------------------------------------------------------------------------
- void PropertyInterpolator::reset(const SGPropertyNode* target)
+ void PropertyInterpolator::reset(const SGPropertyNode& target)
{
_cur_t = 0;
setTarget(target);
}
//----------------------------------------------------------------------------
- double PropertyInterpolator::update(SGPropertyNode* prop, double dt)
+ double PropertyInterpolator::update(SGPropertyNode& prop, double dt)
{
if( _cur_t == 0 )
init(prop);
//----------------------------------------------------------------------------
PropertyInterpolator::PropertyInterpolator():
_duration(1),
- _cur_t(-1)
+ _cur_t(0)
{
setEasingFunction(0);
}
//----------------------------------------------------------------------------
- void NumericInterpolator::setTarget(const SGPropertyNode* target)
+ void NumericInterpolator::setTarget(const SGPropertyNode& target)
{
- _end = target->getDoubleValue();
+ _end = target.getDoubleValue();
}
//----------------------------------------------------------------------------
- void NumericInterpolator::init(const SGPropertyNode* prop)
+ void NumericInterpolator::init(const SGPropertyNode& prop)
{
// If unable to get start value, immediately change to target value
- double value_start = prop->getType() == props::NONE
+ double value_start = prop.getType() == props::NONE
? _end
- : prop->getDoubleValue();
+ : prop.getDoubleValue();
_diff = _end - value_start;
}
//----------------------------------------------------------------------------
- void NumericInterpolator::write(SGPropertyNode* prop, double t)
+ void NumericInterpolator::write(SGPropertyNode& prop, double t)
{
double cur = _end - (1 - t) * _diff;
- if( prop->getType() == props::INT || prop->getType() == props::LONG )
- prop->setLongValue( static_cast<long>(std::floor(cur + 0.5)) );
+ if( prop.getType() == props::INT || prop.getType() == props::LONG )
+ prop.setLongValue( static_cast<long>(std::floor(cur + 0.5)) );
else
- prop->setDoubleValue(cur);
+ prop.setDoubleValue(cur);
}
} // namespace simgear