#include "Canvas.hxx"
#include <simgear/canvas/MouseEvent.hxx>
-#include <simgear/misc/parse_color.hxx>
+#include <simgear/canvas/CanvasPlacement.hxx>
+#include <simgear/scene/util/parse_color.hxx>
#include <simgear/scene/util/RenderConstants.hxx>
#include <osg/Camera>
_dependent_canvases.erase(canvas);
}
+ //----------------------------------------------------------------------------
+ GroupPtr Canvas::createGroup(const std::string& name)
+ {
+ return boost::dynamic_pointer_cast<Group>
+ (
+ _root_group->createChild("group", name)
+ );
+ }
+
//----------------------------------------------------------------------------
void Canvas::enableRendering(bool force)
{
if( node->getParent()->getParent() == _node
&& node->getParent()->getNameString() == "placement" )
{
+ bool placement_dirty = false;
+ BOOST_FOREACH(Placements& placements, _placements)
+ {
+ BOOST_FOREACH(PlacementPtr& placement, placements)
+ {
+ // check if change can be directly handled by placement
+ if( placement->getProps() == node->getParent()
+ && !placement->childChanged(node) )
+ placement_dirty = true;
+ }
+ }
+
+ if( !placement_dirty )
+ return;
+
// prevent double updates...
for( size_t i = 0; i < _dirty_placements.size(); ++i )
{