diff options
Diffstat (limited to 'source/gameengine/SceneGraph/SG_ParentRelation.h')
-rw-r--r-- | source/gameengine/SceneGraph/SG_ParentRelation.h | 83 |
1 files changed, 30 insertions, 53 deletions
diff --git a/source/gameengine/SceneGraph/SG_ParentRelation.h b/source/gameengine/SceneGraph/SG_ParentRelation.h index ce45b42c148..493fcd0fc83 100644 --- a/source/gameengine/SceneGraph/SG_ParentRelation.h +++ b/source/gameengine/SceneGraph/SG_ParentRelation.h @@ -32,17 +32,18 @@ * * \section SG_ParentRelationSection SG_ParentRelation * - * This is an abstract interface class to the Scene Graph library. + * This is an abstract interface class to the Scene Graph library. * It allows you to specify how child nodes react to parent nodes. + * * Normally a child will use it's parent's transforms to compute - * it's own global transforms. How this is performed depends on - * the type of relation. For example if the parent is a vertex - * parent to this child then the child should not inherit any - * rotation information from the parent. Or if the parent is a - * 'slow parent' to this child then the child should react + * its own global transforms. How this is performed depends on + * the type of relation. For example if the parent is a vertex + * parent to this child then the child should only inherit + * location information from the parent. Or if the parent is a + * 'slow parent' to this child then the child should react * slowly to changes in the parent's position. The exact relation - * is left for you to implement by filling out this interface - * with concrete examples. + * is left for you to implement by filling out this interface + * with concrete examples. * * There is exactly one SG_ParentRelation per SG_Node. Subclasses * should not be value types and should be allocated on the heap. @@ -57,26 +58,16 @@ class SG_Spatial; class SG_ParentRelation { public : + /** - * Update the childs local and global coordinates - * based upon the parents global coordinates. - * You must also handle the case when this node has no - * parent (parent == NULL). Usually you should just - * copy the local coordinates of the child to the - * world coordinates. - */ - - virtual - bool - UpdateChildCoordinates( - SG_Spatial * child, - const SG_Spatial * parent, - bool& parentUpdated - ) = 0; - - virtual - ~SG_ParentRelation( - ) {}; + * Update the child's local and global coordinates based upon the parents global coordinates. + * You must also handle the case when this node has no parent (parent == NULL). + * Usually you should just copy the local coordinates of the child to the world coordinates. + */ + virtual bool UpdateChildCoordinates(SG_Spatial * child, const SG_Spatial * parent, bool& parentUpdated) = 0; + + /* Destructor */ + virtual ~SG_ParentRelation() {} /** * You must provide a way of duplicating an @@ -85,55 +76,41 @@ public : * on the heap. Responsibility for deleting the * duplicate resides with the caller of this method. */ - - virtual - SG_ParentRelation * - NewCopy( - ) = 0; + virtual SG_ParentRelation* NewCopy() = 0; /** * Vertex Parent Relation are special: they don't propagate rotation */ - virtual - bool - IsVertexRelation( - ) { + virtual bool IsVertexRelation() + { return false; } - + /** * Need this to see if we are able to adjust time-offset from the python api */ - virtual - bool - IsSlowRelation( - ) { + virtual bool IsSlowRelation() + { return false; } + protected : /** - * Protected constructors - * this class is not meant to be instantiated. + * Protected constructors this class is not meant to be instantiated. */ - - SG_ParentRelation( - ) { - }; + SG_ParentRelation() {} /** * Copy construction should not be implemented */ + SG_ParentRelation(const SG_ParentRelation &); + - SG_ParentRelation( - const SG_ParentRelation & - ); - - #ifdef WITH_CXX_GUARDEDALLOC MEM_CXX_CLASS_ALLOC_FUNCS("GE:SG_ParentRelation") #endif }; -#endif +#endif /* __SG_PARENTRELATION_H__ */ |