* Resets animation timer to zero and prepares for interpolation to new
* target value.
*/
- void reset(const SGPropertyNode* target);
+ void reset(const SGPropertyNode& target);
/**
* Set easing function to be used for interpolation.
* else time is negative indicating the remaining time until
* finished)
*/
- double update(SGPropertyNode* prop, double dt);
+ double update(SGPropertyNode& prop, double dt);
const std::string& getType() const { return _type; }
- /**
- * Create new animation for given property.
- *
- * @param prop Property to be animated
- * @param target Property containing target value
- */
- template<class Derived>
- static PropertyInterpolator* create(const SGPropertyNode* target)
- {
- assert(target);
-
- PropertyInterpolator* interp = new Derived;
- interp->reset(target);
-
- return interp;
- }
-
protected:
friend class PropertyInterpolationMgr;
PropertyInterpolator();
- virtual void setTarget(const SGPropertyNode* target) = 0;
- virtual void init(const SGPropertyNode* prop) = 0;
- virtual void write(SGPropertyNode* prop, double t) = 0;
+ virtual void setTarget(const SGPropertyNode& target) = 0;
+ virtual void init(const SGPropertyNode& prop) = 0;
+ virtual void write(SGPropertyNode& prop, double t) = 0;
};
class NumericInterpolator:
double _end,
_diff;
- virtual void setTarget(const SGPropertyNode* target);
- virtual void init(const SGPropertyNode* prop);
- virtual void write(SGPropertyNode* prop, double t);
+ virtual void setTarget(const SGPropertyNode& target);
+ virtual void init(const SGPropertyNode& prop);
+ virtual void write(SGPropertyNode& prop, double t);
};
} // namespace simgear