Canvas cleanup and restructuring
- Add some methods for easier using the Canvas from C++ - Add some documentation to Nasal
This commit is contained in:
@@ -45,6 +45,49 @@ namespace simgear
|
||||
_elements[i]->update(delta_time_sec);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
PropertyBasedElementPtr
|
||||
PropertyBasedMgr::createElement(const std::string& name)
|
||||
{
|
||||
SGPropertyNode* node = _props->addChild(_name_elements, 0, false);
|
||||
if( !name.empty() )
|
||||
node->setStringValue("name", name);
|
||||
|
||||
return getElement( node->getIndex() );
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
PropertyBasedElementPtr PropertyBasedMgr::getElement(size_t index) const
|
||||
{
|
||||
if( index >= _elements.size() )
|
||||
return PropertyBasedElementPtr();
|
||||
|
||||
return _elements[index];
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
const SGPropertyNode* PropertyBasedMgr::getPropertyRoot() const
|
||||
{
|
||||
return _props;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
PropertyBasedMgr::PropertyBasedMgr( SGPropertyNode_ptr props,
|
||||
const std::string& name_elements,
|
||||
ElementFactory element_factory ):
|
||||
_props( props ),
|
||||
_name_elements( name_elements ),
|
||||
_element_factory( element_factory )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
PropertyBasedMgr::~PropertyBasedMgr()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void PropertyBasedMgr::childAdded( SGPropertyNode * parent,
|
||||
SGPropertyNode * child )
|
||||
@@ -103,27 +146,4 @@ namespace simgear
|
||||
_elements[index].reset();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
const SGPropertyNode* PropertyBasedMgr::getPropertyRoot() const
|
||||
{
|
||||
return _props;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
PropertyBasedMgr::PropertyBasedMgr( SGPropertyNode_ptr props,
|
||||
const std::string& name_elements,
|
||||
ElementFactory element_factory ):
|
||||
_props( props ),
|
||||
_name_elements( name_elements ),
|
||||
_element_factory( element_factory )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
PropertyBasedMgr::~PropertyBasedMgr()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
} // namespace simgear
|
||||
|
||||
@@ -39,12 +39,19 @@ namespace simgear
|
||||
|
||||
virtual void update (double delta_time_sec);
|
||||
|
||||
virtual void childAdded( SGPropertyNode * parent,
|
||||
SGPropertyNode * child );
|
||||
virtual void childRemoved( SGPropertyNode * parent,
|
||||
SGPropertyNode * child );
|
||||
/**
|
||||
* Create a new PropertyBasedElement
|
||||
*
|
||||
* @param name Name of the new element
|
||||
*/
|
||||
PropertyBasedElementPtr createElement(const std::string& name = "");
|
||||
|
||||
virtual void elementCreated(PropertyBasedElementPtr element) {}
|
||||
/**
|
||||
* Get an existing PropertyBasedElement by its index
|
||||
*
|
||||
* @param index Index of element node in property tree
|
||||
*/
|
||||
PropertyBasedElementPtr getElement(size_t index) const;
|
||||
|
||||
virtual const SGPropertyNode* getPropertyRoot() const;
|
||||
|
||||
@@ -75,6 +82,13 @@ namespace simgear
|
||||
ElementFactory element_factory );
|
||||
virtual ~PropertyBasedMgr() = 0;
|
||||
|
||||
virtual void childAdded( SGPropertyNode * parent,
|
||||
SGPropertyNode * child );
|
||||
virtual void childRemoved( SGPropertyNode * parent,
|
||||
SGPropertyNode * child );
|
||||
|
||||
virtual void elementCreated(PropertyBasedElementPtr element) {}
|
||||
|
||||
};
|
||||
|
||||
} // namespace simgear
|
||||
|
||||
Reference in New Issue
Block a user