//----------------------------------------------------------------------------
void PropertyBasedMgr::shutdown()
{
+ _props->removeAllChildren();
_props->removeChangeListener(this);
}
_name_elements( name_elements ),
_element_factory( element_factory )
{
-
+ _props->setAttribute(SGPropertyNode::PRESERVE, true);
}
//----------------------------------------------------------------------------
_elements.resize(index + 1);
}
else if( _elements[index] )
+ {
SG_LOG
(
SG_GENERAL,
_name_elements << "[" << index << "] already exists!"
);
+ // Give anything holding a reference to this element to release it
+ _elements[index]->onDestroy();
+ }
+
PropertyBasedElementPtr el = _element_factory(child);
- el->setSelf( el );
_elements[index] = el;
elementCreated( el );
}
"can't removed unknown " << _name_elements << "[" << index << "]!"
);
else
+ {
// remove the element...
+ _elements[index]->onDestroy();
_elements[index].reset();
+ }
}
} // namespace simgear