This reference page is linked to from the following overview topics: Using the C++ Classes.
Node in a Directed Acyclic Graph.
#include <Node.h>
Public Types |
|
enum | Property
{ kIsSelectable, kIsSelected, kIsHighlighted, kIsAffected, kIsNotViewSelectable, kIsVisible, kIsAlternateVisible, kIsDeleted, kIsRemoved, kIsNotToBeSaved, kIsUserNode, kIsInternal, kIsIgnored, kIsAnimated, kIsOverlayUI, kIsOriginalLabel, kIsPersistent, kIsDemo, kIsLoadable, kIsNotToBeMerged, kIsUnderlay, kIsOffscreen, kIsCrossSection, kIsCrossSectionOutline, kIsManipulator, kIsEnvironment, kIsLocator, kIsSceneWidget, kIsModel, kIsNoRenderNode, kIsInherited } |
enum | { kDirtyChildren, kDirtyMatrix, kDirtyAppearance, kDirtyIsVisible, kDirtyIsSelected, kDirtyIsHighlighted, kDirtyIsAffected, kDirtyStructure, kDirtySomething, kDirtyQuietSomething, kLastDirty } |
typedef
aw::unordered_map < awString::IString, Node * > |
RefById |
typedef
aw::unordered_map < Node *, awString::IString > |
IdByRef |
typedef
aw::unordered_map < awString::IString, awLinear::AffineMatrix > |
NamedMatrix |
Public Member Functions |
|
Node () | |
Node (const Node &nodeToCopy) | |
virtual Node & | operator= (const Node &) |
We copy those member whose definition and
validity are strictly intrinsic to the individual node. |
|
virtual const awString::IString & | getOwnerType () const |
template<class T > | |
T * | as () |
virtual void | accept (NodeVisitor &) |
virtual void | traverse (NodeVisitor &) |
virtual bool | isLeafNode () const |
bool | hasChild (NodeRef) const |
bool | hasChildren () const |
const NodeSet & | getChildren () const |
NodeRef | getChild (int i) const |
int | getChildIndex (NodeRef) const |
int | childCount () const |
int | nonDeletedChildCount () const |
bool | hasParent (GroupRef) const |
bool | hasParents () const |
const GroupSet & | getParents () const |
int | parentCount () const |
GroupRef | getParent (int i) const |
GroupRef | getSingleParent () const |
Group * | getCollapseRoot () |
If the node is in the collapsed subgraph,
this method returns a collapse node that is a parent. |
|
virtual void | setCollapseRoot (Group *root) |
bool | hasUniqueId () const |
A node may or may not have an identifier.
|
|
void | clearUniqueId () |
void | setId (const awSupport::Id &id) |
const awSupport::Id & | getId () const |
void | setUniqueId (const awString::IString &idAsString) |
Sets/gets the id in IString form. |
|
const awString::IString & | getUniqueId () const |
virtual void | setLabel (const awString::IString &) |
virtual awString::IString | getLabel () const |
virtual bool | hasDefaultLabel () const |
void | setMaterial (const MaterialRef) |
awScene::MetaDataRef | getMetaData () |
void | setMetaData (awScene::MetaDataRef properties) |
bool | hasMaterial () const |
To get the material associated with this
node, go through appearance. |
|
AppearanceRef | getAppearance () const |
virtual MaterialRef | getBaseMaterial () const |
Return the base material for the node.
|
|
virtual const awString::IString & | getModelNodeId () const |
void | setOriginalNode (const NodeRef) |
A node can have a reference to its original
copy as well as to the model import that it camse from. |
|
NodeRef | getOriginalNode () const |
virtual void | setMatrix (const awLinear::AffineMatrix &) |
void | getMatrix (awLinear::AffineMatrix &) const |
void | adjustMatrixByNamed (awLinear::AffineMatrix &) const |
Post-multiple the named matrix with the
input matrix. |
|
void | setMatrixRelativeToOriginal (const awLinear::AffineMatrix &) |
Get and set the matrix relative to the
original matrix. |
|
void | getMatrixRelativeToOriginal (awLinear::AffineMatrix &) const |
virtual bool | getIsRelativeToOriginal () const |
bool | getIsMirroredRelativeToOriginal (const awLinear::AffineMatrix &, bool useSpecifiedMatrix) const |
See if a mirror like transformation was made
compared to the original. |
|
bool | hasRTOMatrix () const |
These are mostly used for I/O as they
explicitly get and set the matrix used for relative to original
computations. |
|
bool | removeRTOMatrix () |
void | setRTOMatrix (const awLinear::AffineMatrix &mat) |
bool | getRTOMatrix (awLinear::AffineMatrix &mat) const |
void | setOriginalMatrix (const awLinear::AffineMatrix &mat) |
bool | getOriginalMatrix (awLinear::AffineMatrix &mat) const |
void | setOriginalWorldMatrix (const awLinear::AffineMatrix &mat) |
bool | getOriginalWorldMatrix (awLinear::AffineMatrix &mat) const |
void | preMultMatrixBy (const awLinear::AffineMatrix &) |
Apply the given matrix to the existing one.
|
|
void | getWorldTransform (awLinear::AffineMatrix &, bool inclusive) const |
Return the cumulative transform from the
root to the given node. |
|
bool | removeNamedMatrix (const awString::IString &name) |
Dealing with named matrices. |
|
void | setNamedMatrix (const awString::IString &name, const awLinear::AffineMatrix &mat) |
bool | getNamedMatrix (const awString::IString &name, awLinear::AffineMatrix &mat) const |
bool | hasNamedMatrix (const awString::IString &name) const |
bool | hasNamedMatrices () const |
void | copyNamedMatrices (const Node &other) |
void | applyNamedWorldTransform (const awString::IString &name, const awLinear::AffineMatrix &mat) |
void | getWorldTransformNoNamed (awLinear::AffineMatrix &, bool inclusive) const |
bool | setWorldTransformInclusive (const awLinear::AffineMatrix &) |
Compute the local matrix and set it so that
getWorldTransform(,true) would return the value specified in this
call. |
|
void | setObjectPivot (const awLinear::Point &) |
Set and get the pivot in object or world
space. |
|
void | getObjectPivot (awLinear::Point &) const |
void | getWorldPivot (awLinear::Point &) const |
void | setWorldPivot (const awLinear::Point &) |
void | setUseNodePivot (bool use) |
bool | useNodePivot () const |
void | setPivotAxis (const awLinear::Normal &x, const awLinear::Normal &y, const awLinear::Normal &z) |
void | getPivotAxis (awLinear::Normal &x, awLinear::Normal &y, awLinear::Normal &z) const |
void | setWorldPivotAxis (const awLinear::Normal &x, const awLinear::Normal &y, const awLinear::Normal &z) |
void | getWorldPivotAxis (awLinear::Normal &x, awLinear::Normal &y, awLinear::Normal &z) const |
virtual bool | isWorldVisible () const |
Returns true if the node and all of it's
parents are visible, alternative visible and not deleted. |
|
virtual bool | isDisplayed () const |
isDisplayed returns true iff both the
visibility and the alternate visibility flag are both set. |
|
virtual void | setIsVisible (bool isVisible) |
bool | getIsVisible () const |
void | setVisibilityMask (VisibilityMask mask) |
VisibilityMask | getVisibilityMask () const |
virtual void | setIsAlternateVisible (bool isVisible) |
bool | getIsAlternateVisible () const |
bool | hasProperty (int p, bool includeSubgraph=false) const |
bool | setProperty (int p, bool state, bool propagateToSubgraph=false) |
int | getWorldInfo () const |
void | setIsDeleted (bool isDeleted) |
bool | getIsDeleted () const |
void | setIsRemoved (bool isRemoved) |
The node is marked 'isRemoved' if it should
be removed from the scene completely. |
|
bool | getIsRemoved () const |
bool | hasForeignChildren () const |
Does this node have children that belong to
another import node? If either the node itself or its children do
not have import node, treat them as our own children. |
|
void | getBoundingBox (awSupport::BoundingBox &bb) const |
A node's sense of bounding box includes the
bounds of any descendants it may have. |
|
void | getBoundingBoxCenter (awLinear::Point &) const |
void | setBoundingBox (awSupport::BoundingBox &bb) |
Manually sets the bounding box for this
node. |
|
const awSupport::BoundingBox & | updateBoundingBox (bool fromBridge=true) |
Update of this node's bounding box and all
of its descendants as necessary, and returns the updated bounding
box in worldspace. |
|
void | dirtyBoundingBox (bool propagateToParents=true, bool propagateToChildren=true) |
Invalidates the current bounding box.
|
|
bool | isDirty () const |
bool | isDirty (int) const |
virtual void | setDirty (int, bool dirty, bool propagate=true, Node *dirtySource=NULL) |
virtual void | setAllDirty (bool dirty) |
Node * | getLastDirtySource (bool recursive) |
Get the information that triggers the dirty
callback. |
|
int | getLastDirtyFlag () |
void | setQuietDirtyPropagation (bool quiet) |
bool | getQuietDirtyPropagation () const |
void | setMaintainSceneHierarchy (bool maintain, bool propagate) |
The node is flagged to maintain hierarchy
below it as coming from the scene, or coming from the imported
file. |
|
bool | getMaintainSceneHierarchy () const |
bool | isMaintainSceneHierarchyFlagConsistent () const |
void | fixMaintainSceneHierarchy () |
virtual bool | needToMaintainSceneHierarchy () const |
Look at the children and parents, and let us
know if this node should be marked as "maintain" or not. |
|
void | setMaintainSceneHierarchyIfNeeded () |
NodeSignalRef | getDirtySignal () const |
Attach to one or more of these signals to be
notified when:
|
|
NodeSignalRef | getBoundingBoxSignal () const |
NodeSignalRef | getDeletionSignal () const |
NodeSignalRef | getBridgeChangedSignal () const |
void | releaseBridgeChangedSignal () |
Release the signal when it is not needed for
trying to free its memory. |
|
NodeSignalRef | get3DTriggerSignal () const |
Get a signal object for this node. |
|
bool | has3DTriggerSignal () |
Check if there is a 3D trigger signal
already, if there is the node can be triggered. |
|
bool | send3DTriggerSignal () |
const char * | getNodeType () const |
virtual int | convertOptimizedPatchIndex (int, int) const |
For the optimization. |
|
BridgeRef | getBridge () const |
void | setBridge (BridgeRef bridge) |
template<class T > | |
T * | getBridgeAs () const |
void | setIsDemo (bool isDemo) |
bool | getIsDemo () const |
Static Public Member Functions |
|
static NodeRef | getNodeById (const awString::IString &) |
Nodes with unique id's can be indexed by
these. |
|
static int | getNodesById (const NodeIdSet &ids, NodeSet &nodes) |
static void | copyOurRefsByIds (RefById &) |
static const awSupport::Id & | getSceneGraphRootId () |
static const awSupport::Id & | getOrthoGraphRootId () |
static const awSupport::Id & | getBackplateGraphRootId () |
static const awString::IString & | getOriginalCopyId () |
static awSupport::Id | generateUniqueId (const awString::IString &fromThisId) |
static awString::IString | getLabelFromId (const awSupport::Id &id) |
static awString::IString | getShortBaseId (const awSupport::Id &id) |
Protected Member Functions |
|
virtual | ~Node () |
Reference counted objects shouldn't exist on
the stack. |
|
void | sendDeletionSignal () |
void | insertParent (GroupRef) |
bool | removeParent (Group *) |
void | setLastDirtySource (Node *source) |
void | setLastDirtyFlag (int flag) |
void | setDirtyParents (int flag) |
virtual void | parentTransformDirty () |
virtual void | onOwnedObjectDirty (awSupport::OwnedObject *object) |
virtual void | onPropertyChange (int p, bool newState) |
Protected Attributes |
|
friend | Group |
friend | LodCollapse |
NodeSet | myChildren |
Group * | myCollapseRoot |
typedef aw::unordered_map< awString::IString, awLinear::AffineMatrix > NamedMatrix |
enum Property |
{ kIsSelectable, kIsSelected, kIsHighlighted, kIsAffected, kIsNotViewSelectable, kIsVisible, kIsAlternateVisible, kIsDeleted, kIsRemoved, kIsNotToBeSaved, kIsUserNode, kIsInternal, kIsIgnored, kIsAnimated, kIsOverlayUI, kIsOriginalLabel, kIsPersistent, kIsDemo, kIsLoadable, kIsNotToBeMerged, kIsUnderlay, kIsOffscreen, kIsCrossSection, kIsCrossSectionOutline, kIsManipulator, kIsEnvironment, kIsLocator, kIsSceneWidget, kIsModel, kIsNoRenderNode, kIsInherited };
anonymous enum |
They're just an expedient for bootstrapping the use of the new awScene. There's not much point in making them private and giving them accessors, since they'll be gone when awScene is multithreaded.
Note, in the mean time, that our sense of dirtiness here is 'local'. Having dirty children doth not a dirty parent make.
Node | ( | ) |
virtual ~Node | ( | ) | [protected, virtual] |
Reference counted objects shouldn't exist on the stack.
We copy those member whose definition and validity are strictly intrinsic to the individual node.
This exludes parent/child relations (extrinsic), and unique id's which are invalid if two nodes share them.
Reimplemented in LodGroup.
virtual const awString::IString& getOwnerType | ( | ) | const [virtual] |
Implements Owner.
T * as | ( | ) |
{ return dynamic_cast<T *>( this ); }
virtual void accept | ( | NodeVisitor & | ) | [virtual] |
Reimplemented in CircleGeometry, DecalLocator, Geometry, Group, ImageGeometry, Import, Light, LineGeometry, LodCollapse, LodGroup, MeshGeometry, PointGeometry, RpcGeometry, and TextGeometry.
virtual void traverse | ( | NodeVisitor & | ) | [virtual] |
Reimplemented in LodCollapse.
virtual bool isLeafNode | ( | ) | const [virtual] |
Reimplemented in DecalLocator, Group, Light, and LodGroup.
bool hasChild | ( | NodeRef | ) | const |
bool hasChildren | ( | ) | const |
const NodeSet& getChildren | ( | ) | const |
NodeRef getChild | ( | int | i | ) | const |
int getChildIndex | ( | NodeRef | ) | const |
int childCount | ( | ) | const |
int nonDeletedChildCount | ( | ) | const |
bool hasParent | ( | GroupRef | ) | const |
bool hasParents | ( | ) | const |
const GroupSet& getParents | ( | ) | const |
int parentCount | ( | ) | const |
GroupRef getParent | ( | int | i | ) | const |
GroupRef getSingleParent | ( | ) | const |
Group* getCollapseRoot | ( | ) |
If the node is in the collapsed subgraph, this method returns a collapse node that is a parent.
virtual void setCollapseRoot | ( | Group * | root | ) | [virtual] |
Reimplemented in Group, and LodCollapse.
bool hasUniqueId | ( | ) | const |
A node may or may not have an identifier.
If it does, then the identifier must be unique among all existing nodes.
void clearUniqueId | ( | ) |
void setId | ( | const awSupport::Id & | id | ) |
const awSupport::Id& getId | ( | ) | const |
void setUniqueId | ( | const awString::IString & | idAsString | ) |
Sets/gets the id in IString form.
const awString::IString& getUniqueId | ( | ) | const |
static NodeRef getNodeById | ( | const awString::IString & | ) | [static] |
Nodes with unique id's can be indexed by these.
static void copyOurRefsByIds | ( | RefById & | ) | [static] |
static const awSupport::Id& getSceneGraphRootId | ( | ) | [static] |
static const awSupport::Id& getOrthoGraphRootId | ( | ) | [static] |
static const awSupport::Id& getBackplateGraphRootId | ( | ) | [static] |
static const awString::IString& getOriginalCopyId | ( | ) | [static] |
static awSupport::Id generateUniqueId | ( | const awString::IString & | fromThisId | ) | [static] |
static awString::IString getLabelFromId | ( | const awSupport::Id & | id | ) | [static] |
static awString::IString getShortBaseId | ( | const awSupport::Id & | id | ) | [static] |
virtual void setLabel | ( | const awString::IString & | ) | [virtual] |
Reimplemented in DecalLocator.
virtual awString::IString getLabel | ( | ) | const [virtual] |
Reimplemented in DecalLocator.
virtual bool hasDefaultLabel | ( | ) | const [virtual] |
Reimplemented in DecalLocator.
void setMaterial | ( | const MaterialRef | ) |
awScene::MetaDataRef getMetaData | ( | ) |
void setMetaData | ( | awScene::MetaDataRef | properties | ) |
bool hasMaterial | ( | ) | const |
To get the material associated with this node, go through appearance.
AppearanceRef getAppearance | ( | ) | const |
virtual MaterialRef getBaseMaterial | ( | ) | const [virtual] |
virtual const awString::IString& getModelNodeId | ( | ) | const [virtual] |
Reimplemented in DecalLocator.
void setOriginalNode | ( | const NodeRef | ) |
A node can have a reference to its original copy as well as to the model import that it camse from.
NodeRef getOriginalNode | ( | ) | const |
virtual void setMatrix | ( | const awLinear::AffineMatrix & | ) | [virtual] |
void getMatrix | ( | awLinear::AffineMatrix & | ) | const |
void adjustMatrixByNamed | ( | awLinear::AffineMatrix & | ) | const |
Post-multiple the named matrix with the input matrix.
void setMatrixRelativeToOriginal | ( | const awLinear::AffineMatrix & | ) |
Get and set the matrix relative to the original matrix.
void getMatrixRelativeToOriginal | ( | awLinear::AffineMatrix & | ) | const |
virtual bool getIsRelativeToOriginal | ( | ) | const [virtual] |
Reimplemented in Group, Import, and MeshGeometry.
bool getIsMirroredRelativeToOriginal | ( | const awLinear::AffineMatrix & | , |
bool | useSpecifiedMatrix | ||
) | const |
See if a mirror like transformation was made compared to the original.
If useSpecifiedMatrix is true, the matrix given is assumed to be the world space inclusive transformation for the object in question.
bool hasRTOMatrix | ( | ) | const |
These are mostly used for I/O as they explicitly get and set the matrix used for relative to original computations.
bool removeRTOMatrix | ( | ) |
void setRTOMatrix | ( | const awLinear::AffineMatrix & | mat | ) |
bool getRTOMatrix | ( | awLinear::AffineMatrix & | mat | ) | const |
void setOriginalMatrix | ( | const awLinear::AffineMatrix & | mat | ) |
bool getOriginalMatrix | ( | awLinear::AffineMatrix & | mat | ) | const |
void setOriginalWorldMatrix | ( | const awLinear::AffineMatrix & | mat | ) |
bool getOriginalWorldMatrix | ( | awLinear::AffineMatrix & | mat | ) | const |
void preMultMatrixBy | ( | const awLinear::AffineMatrix & | ) |
Apply the given matrix to the existing one.
void getWorldTransform | ( | awLinear::AffineMatrix & | , |
bool | inclusive | ||
) | const |
Return the cumulative transform from the root to the given node.
The target node's matrix is included only if the inclusive parameter is true. Note: This assumes a single path to the root from the given node. If any nodes are instanced along the path the result may not be as expected.
Named matrices are included in this value, as if they were above the full hierarchy, in the order in which they appear in the list.
bool removeNamedMatrix | ( | const awString::IString & | name | ) |
Dealing with named matrices.
These are added to the world space transform of the object, in order in which they appear in the list. So, if the object has three named matrices, nm1, nm2, nm3, the world space matrix will be the hierarchy world space matrix * nm3 * nm2 * nm1
void setNamedMatrix | ( | const awString::IString & | name, |
const awLinear::AffineMatrix & | mat | ||
) |
bool getNamedMatrix | ( | const awString::IString & | name, |
awLinear::AffineMatrix & | mat | ||
) | const |
bool hasNamedMatrix | ( | const awString::IString & | name | ) | const |
bool hasNamedMatrices | ( | ) | const |
void copyNamedMatrices | ( | const Node & | other | ) |
void applyNamedWorldTransform | ( | const awString::IString & | name, |
const awLinear::AffineMatrix & | mat | ||
) |
void getWorldTransformNoNamed | ( | awLinear::AffineMatrix & | , |
bool | inclusive | ||
) | const |
bool setWorldTransformInclusive | ( | const awLinear::AffineMatrix & | ) |
Compute the local matrix and set it so that getWorldTransform(,true) would return the value specified in this call.
Return false if the current exclusive transformation for this node is not invertible. Named matrices are included.
void setObjectPivot | ( | const awLinear::Point & | ) |
Set and get the pivot in object or world space.
The default for the object space pivot is the origin.
void getObjectPivot | ( | awLinear::Point & | ) | const |
void getWorldPivot | ( | awLinear::Point & | ) | const |
void setWorldPivot | ( | const awLinear::Point & | ) |
void setUseNodePivot | ( | bool | use | ) |
bool useNodePivot | ( | ) | const |
void setPivotAxis | ( | const awLinear::Normal & | x, |
const awLinear::Normal & | y, | ||
const awLinear::Normal & | z | ||
) |
void getPivotAxis | ( | awLinear::Normal & | x, |
awLinear::Normal & | y, | ||
awLinear::Normal & | z | ||
) | const |
void setWorldPivotAxis | ( | const awLinear::Normal & | x, |
const awLinear::Normal & | y, | ||
const awLinear::Normal & | z | ||
) |
void getWorldPivotAxis | ( | awLinear::Normal & | x, |
awLinear::Normal & | y, | ||
awLinear::Normal & | z | ||
) | const |
virtual bool isWorldVisible | ( | ) | const [virtual] |
Returns true if the node and all of it's parents are visible, alternative visible and not deleted.
virtual bool isDisplayed | ( | ) | const [virtual] |
isDisplayed returns true iff both the visibility and the alternate visibility flag are both set.
Reimplemented in DecalLocator, and Locator.
virtual void setIsVisible | ( | bool | isVisible | ) | [virtual] |
Reimplemented in Light.
bool getIsVisible | ( | ) | const |
void setVisibilityMask | ( | VisibilityMask | mask | ) |
VisibilityMask getVisibilityMask | ( | ) | const |
virtual void setIsAlternateVisible | ( | bool | isVisible | ) | [virtual] |
Reimplemented in Light.
bool getIsAlternateVisible | ( | ) | const |
bool hasProperty | ( | int | p, |
bool | includeSubgraph =
false |
||
) | const |
bool setProperty | ( | int | p, |
bool | state, | ||
bool | propagateToSubgraph =
false |
||
) |
int getWorldInfo | ( | ) | const |
void setIsDeleted | ( | bool | isDeleted | ) |
bool getIsDeleted | ( | ) | const |
void setIsRemoved | ( | bool | isRemoved | ) |
The node is marked 'isRemoved' if it should be removed from the scene completely.
bool getIsRemoved | ( | ) | const |
bool hasForeignChildren | ( | ) | const |
Does this node have children that belong to another import node? If either the node itself or its children do not have import node, treat them as our own children.
void getBoundingBox | ( | awSupport::BoundingBox & | bb | ) | const |
A node's sense of bounding box includes the bounds of any descendants it may have.
Note, if the node is set to ignored, a default bounded bounding box and bounding box center will be returned.
The bounding box is in worldspace.
void getBoundingBoxCenter | ( | awLinear::Point & | ) | const |
void setBoundingBox | ( | awSupport::BoundingBox & | bb | ) |
Manually sets the bounding box for this node.
const awSupport::BoundingBox& updateBoundingBox | ( | bool | fromBridge = true |
) |
Update of this node's bounding box and all of its descendants as necessary, and returns the updated bounding box in worldspace.
void dirtyBoundingBox | ( | bool | propagateToParents =
true , |
bool | propagateToChildren =
true |
||
) |
Invalidates the current bounding box.
bool isDirty | ( | ) | const |
bool isDirty | ( | int | ) | const |
virtual void setDirty | ( | int | , |
bool | dirty, | ||
bool | propagate = true , |
||
Node * | dirtySource =
NULL |
||
) | [virtual] |
virtual void setAllDirty | ( | bool | dirty | ) | [virtual] |
Reimplemented in CircleGeometry, ImageGeometry, Locator, LodCollapse, LodGroup, PointGeometry, RpcGeometry, and TextGeometry.
Node* getLastDirtySource | ( | bool | recursive | ) |
Get the information that triggers the dirty callback.
Only guaranteed to be valid in NodeDirtyListener::onNodeDirty().
int getLastDirtyFlag | ( | ) |
void setQuietDirtyPropagation | ( | bool | quiet | ) |
bool getQuietDirtyPropagation | ( | ) | const |
void setMaintainSceneHierarchy | ( | bool | maintain, |
bool | propagate | ||
) |
The node is flagged to maintain hierarchy below it as coming from the scene, or coming from the imported file.
If a node is flagged as "do not maintain scene hierarchy", all of its descendents would have to be marked as such as well. If it's marked as "do maintain scene hierarchy", all of its ancestors need to be marked as such as well. This will be done automatically for you, unless you use the non-default value for the propagate flag. Note that setting the correct flag value is not automatic for the insertParent/insertChild/removeParent/removeChild operations. Methods "isMaintainSceneHierarchyFlagConsistent" and "fixMaintainSceneHierarchy" may come in handy for detecting and fixing any problems.
bool getMaintainSceneHierarchy | ( | ) | const |
bool isMaintainSceneHierarchyFlagConsistent | ( | ) | const |
void fixMaintainSceneHierarchy | ( | ) |
virtual bool needToMaintainSceneHierarchy | ( | ) | const [virtual] |
Look at the children and parents, and let us know if this node should be marked as "maintain" or not.
Return true if we really, really need that flag set. The "set...Check" behaves as the "set..." above if maintain is false. If maintain is true, it consults the "needTo..." to decide if it should set it or not. In the process, it may fix up the parents as well.
Reimplemented in Import, and LodCollapse.
void setMaintainSceneHierarchyIfNeeded | ( | ) |
NodeSignalRef getDirtySignal | ( | ) | const |
Attach to one or more of these signals to be notified when:
NodeSignalRef getBoundingBoxSignal | ( | ) | const |
NodeSignalRef getDeletionSignal | ( | ) | const |
NodeSignalRef getBridgeChangedSignal | ( | ) | const |
void releaseBridgeChangedSignal | ( | ) |
Release the signal when it is not needed for trying to free its memory.
NodeSignalRef get3DTriggerSignal | ( | ) | const |
Get a signal object for this node.
If a class needs to know when the node has changed, it should attatch itself to this signal. Will create it if there is none
bool has3DTriggerSignal | ( | ) |
Check if there is a 3D trigger signal already, if there is the node can be triggered.
bool send3DTriggerSignal | ( | ) |
const char* getNodeType | ( | ) | const |
virtual int convertOptimizedPatchIndex | ( | int | , |
int | |||
) | const [virtual] |
BridgeRef getBridge | ( | ) | const |
void setBridge | ( | BridgeRef | bridge | ) |
T * getBridgeAs | ( | ) | const [inline] |
{ return myBridge ? dynamic_cast<T *>( myBridge.get() ) : NULL; }
void setIsDemo | ( | bool | isDemo | ) |
bool getIsDemo | ( | ) | const |
void sendDeletionSignal | ( | ) | [protected] |
void insertParent | ( | GroupRef | ) | [protected] |
bool removeParent | ( | Group * | ) | [protected] |
void setLastDirtySource | ( | Node * | source | ) | [protected] |
void setLastDirtyFlag | ( | int | flag | ) | [protected] |
void setDirtyParents | ( | int | flag | ) | [protected] |
virtual void parentTransformDirty | ( | ) | [protected, virtual] |
Reimplemented in Light.
virtual void onOwnedObjectDirty | ( | awSupport::OwnedObject * | object | ) | [protected, virtual] |
virtual void onPropertyChange | ( | int | p, |
bool | newState | ||
) | [protected, virtual] |
Reimplemented in LodGroup.
friend Group
[protected] |
friend LodCollapse
[protected] |
NodeSet
myChildren
[protected] |
Group* myCollapseRoot
[protected] |