From: <sv...@ww...> - 2005-10-15 20:02:57
|
Author: mkrose Date: 2005-10-15 13:02:50 -0700 (Sat, 15 Oct 2005) New Revision: 1626 Modified: trunk/CSP/CSPSim/CHANGES.current trunk/CSP/CSPSim/Include/ObjectModel.h trunk/CSP/CSPSim/Source/ObjectModel.cpp Log: * Add an osg::Group to SceneModel ("DynamicGroup") that can be used for attached objects such as external stores. Browse at: https://www.zerobar.net/viewcvs/viewcvs.cgi?view=rev&rev=1626 Modified: trunk/CSP/CSPSim/CHANGES.current =================================================================== --- trunk/CSP/CSPSim/CHANGES.current 2005-10-15 19:55:47 UTC (rev 1625) +++ trunk/CSP/CSPSim/CHANGES.current 2005-10-15 20:02:50 UTC (rev 1626) @@ -8,6 +8,9 @@ animitions like gauge needles where the physics isn't worth modeling). Fix minor initialization glitch in AnimatedMomentarySwitch. + * Add an osg::Group to SceneModel ("DynamicGroup") that can be used for + attached objects such as external stores. + 2005-08-27: onsight * Link against sigc-2.0, not sigc-1.2 for debug builds under MSVC. Modified: trunk/CSP/CSPSim/Include/ObjectModel.h =================================================================== --- trunk/CSP/CSPSim/Include/ObjectModel.h 2005-10-15 19:55:47 UTC (rev 1625) +++ trunk/CSP/CSPSim/Include/ObjectModel.h 2005-10-15 20:02:50 UTC (rev 1626) @@ -192,6 +192,7 @@ private: osg::ref_ptr<osg::PositionAttitudeTransform> m_Transform; osg::ref_ptr<osg::PositionAttitudeTransform> m_CenterOfMassOffset; + osg::ref_ptr<osg::Group> m_DynamicGroup; osg::ref_ptr<osg::Group> m_Children; osg::ref_ptr<osg::Node> m_ModelCopy; osg::ref_ptr<osgText::Text> m_Label; @@ -213,6 +214,7 @@ simdata::Ref<ObjectModel> getModel() { return m_Model; } osg::Group* getRoot(); + osg::Group* getDynamicGroup(); void setPositionAttitude(simdata::Vector3 const &position, simdata::Quat const &attitude, simdata::Vector3 const &cm_offset); Modified: trunk/CSP/CSPSim/Source/ObjectModel.cpp =================================================================== --- trunk/CSP/CSPSim/Source/ObjectModel.cpp 2005-10-15 19:55:47 UTC (rev 1625) +++ trunk/CSP/CSPSim/Source/ObjectModel.cpp 2005-10-15 20:02:50 UTC (rev 1626) @@ -770,10 +770,17 @@ // create a working copy ModelCopy model_copy; + + simdata::Timer timer; + timer.start(); m_ModelCopy = model_copy(model_node); m_PitSwitch = model_copy.getPitSwitch(); + timer.stop(); CSP_LOG(APP, INFO, "Copied model, animation count = " << model_copy.getAnimationCallbacks().size()); + if (timer.elapsed() > 0.01) { + CSP_LOG(APP, WARNING, "Model copy took " << (timer.elapsed() * 1e+3) << " ms"); + } m_AnimationCallbacks.resize(model_copy.getAnimationCallbacks().size()); @@ -939,6 +946,14 @@ return m_Transform.get(); } +osg::Group *SceneModel::getDynamicGroup() { + if (!m_DynamicGroup) { + m_DynamicGroup = new osg::Group; + m_CenterOfMassOffset->addChild(m_DynamicGroup.get()); + } + return m_DynamicGroup.get(); +} + void SceneModel::addChild(simdata::Ref<SceneModelChild> const &child) { assert(child->getRoot()); if (!m_Children) { |