From: <sv...@ww...> - 2005-01-22 14:51:50
|
Author: delta Date: 2005-01-22 06:51:41 -0800 (Sat, 22 Jan 2005) New Revision: 1451 Modified: trunk/CSP/CSPSim/CHANGES.current trunk/CSP/CSPSim/Include/Animation.h Log: * Minor cleanup on Animation class. Browse at: https://www.zerobar.net/viewcvs/viewcvs.cgi?view=rev&rev=1451 Modified: trunk/CSP/CSPSim/CHANGES.current =================================================================== --- trunk/CSP/CSPSim/CHANGES.current 2005-01-19 12:41:32 UTC (rev 1450) +++ trunk/CSP/CSPSim/CHANGES.current 2005-01-22 14:51:41 UTC (rev 1451) @@ -1,6 +1,9 @@ Version 0.4.0 (in progress) =========================== +2005-01-22: delta + * Minor cleanup on Animation class. + 2005-01-17: delta * Minor changes in LandingGear class exposing the drag value. Also, gear dynamics now takes into account of the extension. Modified: trunk/CSP/CSPSim/Include/Animation.h =================================================================== --- trunk/CSP/CSPSim/Include/Animation.h 2005-01-19 12:41:32 UTC (rev 1450) +++ trunk/CSP/CSPSim/Include/Animation.h 2005-01-22 14:51:41 UTC (rev 1451) @@ -100,6 +100,15 @@ * by multiple SceneModel instances. */ class Animation: public simdata::Object { +private: + + simdata::Key m_ModelID; + std::string m_ChannelName; + int m_LOD; + float m_Limit0; + float m_Limit1; + float m_Gain; + protected: /** * Small template class to reduce & simplify writing. @@ -146,16 +155,6 @@ virtual ~Callback_A(){} }; -private: - - simdata::Key m_ModelID; - std::string m_ChannelName; - int m_LOD; - float m_Limit0; - float m_Limit1; - float m_Gain; - -protected: float m_Default; virtual AnimationCallback *newCallback(osg::Node *node, AnimationCallback *callback) const { @@ -165,6 +164,11 @@ callback->setChannelName(m_ChannelName); return callback; } + template <class A, class C> AnimationCallback *newCallback_(osg::Node *node) const { + AnimationCallback *callback = Animation::newCallback(node, new C(dynamic_cast<const A* const>(this))); + callback->setDefault(m_Default); + return callback; + } virtual AnimationCallback *newCallback(osg::NodeCallback* node_callback, AnimationCallback *callback) const { assert(node_callback); assert(callback); @@ -172,7 +176,11 @@ callback->setChannelName(m_ChannelName); return callback; } - + template <class A, class C> AnimationCallback *newCallback_(osg::NodeCallback *nodeCallback) const { + AnimationCallback *callback = Animation::newCallback(nodeCallback, new C(dynamic_cast<const A* const>(this))); + callback->setDefault(m_Default); + return callback; + } public: BEGIN_SIMDATA_XML_VIRTUAL_INTERFACE(Animation) SIMDATA_XML("model_id", Animation::m_ModelID, true) @@ -187,21 +195,13 @@ Animation(); virtual ~Animation() {} + // typically, this method will call newCallback_ virtual AnimationCallback *newCallback(osg::Node *node) const = 0; - template <class A, class C> AnimationCallback *newCallback_(osg::Node *node) const { - AnimationCallback *callback = Animation::newCallback(node, new C(dynamic_cast<const A* const>(this))); - callback->setDefault(m_Default); - return callback; - } virtual AnimationCallback *newCallback(osg::NodeCallback *nodeCallback) const { CSP_LOG(OBJECT, WARNING, typeid(*this).name() << ": nested callback not implemented" ); return 0; } - template <class A, class C> AnimationCallback *newCallback_(osg::NodeCallback *nodeCallback) const { - AnimationCallback *callback = Animation::newCallback(nodeCallback, new C(dynamic_cast<const A* const>(this))); - callback->setDefault(m_Default); - return callback; - } + const std::string &getChannelName() const { return m_ChannelName; } const simdata::Key &getModelID() const { return m_ModelID; } float getLimit0() const { return m_Limit0; } |