00001 #ifndef RELATIONALNODE_H 00002 #define RELATIONALNODE_H 00003 00004 #include "Types.h" 00005 #include "Error.h" 00006 #include "TransformNode.h" 00007 00008 using namespace std; 00009 00010 namespace RenderTools { 00011 00012 class RelationalNode : public TransformNode { 00013 public: 00014 00015 RelationalNode( void ); 00016 virtual ~RelationalNode( void ); 00017 00018 static PropertyPtr create( const XMLNodePtr & xml = XMLNodePtr() ); 00019 virtual void createProperties( void ); 00020 virtual const string getTypeName( bool ofComponent = false ) const; 00021 virtual void onPropertyEvent( const PropertyEvent & e ); 00022 virtual void onInitialize( void ); 00023 virtual void onTransform( const Mat4 & global ); 00024 00025 const RelationalNodeContainerPtr getParents( void ) const; 00026 const RelationalNodePtr getParent( int i = 0 ) const; 00027 bool hasParent( const RelationalNodePtr model ) const; 00028 void gatherUniqueChildren( const RelationalNodePtr model, RelationalNodeList & unique ) const; 00029 const RelationalNodeContainerPtr getChildren( void ) const; 00030 const RelationalNodePtr getChild( string name ) const; 00031 const RelationalNodePtr getChild( unsigned int ) const; 00032 const RelationalNodePtr getChild( const RelationalNodePtr ) const; 00033 const RelationalNodePtr getChild( string name, RelationalNodeList & path ) const; 00034 const RelationalNodePtr getChild( const RelationalNodePtr, RelationalNodeList & path ) const; 00035 bool hasChild( const RelationalNodePtr model ) const; 00036 bool removeParent( const RelationalNodePtr model, bool send ); 00037 bool removeParent( int i, bool send ); 00038 bool addParent( const RelationalNodePtr ptr, bool send ); 00039 bool removeChild( const RelationalNodePtr model, bool send ); 00040 bool removeChild( int i, bool send ); 00041 bool addChild( const RelationalNodePtr ptr, bool send ); 00042 00043 protected: 00044 RelationalNodeContainerPtr m_parents; 00045 RelationalNodeContainerPtr m_children; 00046 }; 00047 00048 };//namespace RenderTools 00049 00050 #endif 00051
1.5.8