Click or drag to resize
Ab4d.SharpEngine logo

GroupNode Class

GroupNode is a SceneNode that is used to group multiple SceneNodes and organize the SceneNode in a hierarchy. The Transformation that is applied to this GroupNode is also applied to all child SceneNode objects.
Inheritance Hierarchy

Namespace: Ab4d.SharpEngine.SceneNodes
Assembly: Ab4d.SharpEngine (in Ab4d.SharpEngine.dll) Version: 2.0.8956+4c7684e186ca1be74e7a284fbe739d9a1b843d3c
Syntax
C#
public class GroupNode : SceneNode, IList<SceneNode>, 
	ICollection<SceneNode>, IEnumerable<SceneNode>, IEnumerable, 
	IList, ICollection

The GroupNode type exposes the following members.

Constructors
 NameDescription
Public methodGroupNode(String)Initializes a new instance of the GroupNode class
Public methodGroupNode(IEnumerableSceneNode, String)Initializes a new instance of the GroupNode class
Top
Properties
 NameDescription
Public propertyChildrenLocked Gets or sets Boolean that specified is children collection is locked and can be changed only by the derived class. This is used by SceneNodes that are derived from GroupNode and create a fixed set of child SceneNodes that should not be changed by the user. Children can be locked by calling protected LockChildren method and unlocked by by calling protected UnlockChildren.
Public propertyCount 
Public propertyItem 
Public propertyVersion Gets a version number that is increased each time the child SceneNodes are changed (added, removed or replaced).
Top
Methods
 NameDescription
Public methodAdd 
Public methodAddRange 
Protected methodCheckAreChildrenLocked This method throws InvalidOperationException when AreChildrenLocked is true.
Protected methodCheckThread 
Public methodClear 
Public methodCollectAllChildrenT Searches the GroupNode's children and their children and adds the found SceneNodes of type T to the specified children List. When name is specified, then SceneNodes with that name are returned. Name can contain '*' that acts as a wildcard to match multiple SceneNode names. The following wildcard usages are valid: *, *XYZ, XZY*, *XYZ*, XY*Z. The search depth can be optionally specified by setting the searchDepth parameter (value 0 means searching only the immediate children of this GroupNode).
Public methodCollectRenderingItems
(Overrides SceneNodeCollectRenderingItems(RenderingContext))
Public methodContains 
Public methodCopyTo 
Protected methodDispose Dispose
(Overrides SceneNodeDispose(Boolean))
Public methodDisposeAllChildren DisposeAllChildren method disposes all child SceneNodes (and their child SceneNode objects) but does not dispose this GroupNode. When disposeMeshes and disposeMaterials parameters are true, then also all meshes and materials are disposed. When runSceneCleanup is true, this method also calls the Cleanup(Boolean, Boolean, Boolean, Boolean, Boolean) method to clean the released objects. To dispose only some children call DisposeChildren(Int32, Int32, Boolean, Boolean, Boolean, Boolean) method. See remarks for more info.
Public methodDisposeChildren DisposeChildren method disposes the child SceneNodes objects defined by the startIndex and count. When disposeMeshes and disposeMaterials parameters are true, then also all meshes and materials are disposed. When runSceneCleanup is true, this method also calls the Cleanup(Boolean, Boolean, Boolean, Boolean, Boolean) method to clean the released objects. To dispose all children call DisposeAllChildren(Boolean, Boolean, Boolean, Boolean) method. See remarks for more info.
Public methodDisposeWithAllChildren DisposeWithAllChildren method disposes all child SceneNodes (and their child SceneNode objects), disposes this GroupNode and removes it from its parent GroupNode (if any). When disposeMeshes and disposeMaterials parameters are true, then also all meshes and materials are disposed. When runSceneCleanup is true, this method also calls the Cleanup(Boolean, Boolean, Boolean, Boolean, Boolean) method to clean the released objects. To dispose only some children call DisposeChildren(Int32, Int32, Boolean, Boolean, Boolean, Boolean) method. See remarks for more info.
Public methodDumpHierarchy Writes string that contains details about all SceneNodes and their hierarchy to the console (when the application is debugged in Visual Studio the result is written to Output window or Immediate Window if started from there; in Rider the result is written to Debug Output window).
Public methodForEachChild(ActionSceneNode) Executes the specified Action for all child SceneNodes and their children.
Public methodForEachChild(ActionSceneNode, Matrix4x4) Executes the specified Action for all child SceneNodes and their children. The Action gets SceneNode and world transformation Matrix4x4 as parameter.
Public methodForEachChild(Matrix4x4, ActionSceneNode, Matrix4x4) Executes the specified Action for all child SceneNodes and their children. The Action gets SceneNode and world transformation Matrix4x4 as parameter.
Public methodForEachChild(String, ActionSceneNode, Matrix4x4) Searches the GroupNode's children and their children and executes the specified Action for all SceneNodes with the specified name.ž Name can contain '*' that acts as a wildcard to match multiple SceneNode names. The following wildcard usages are valid: *, *XYZ, XZY*, *XYZ*, XY*Z. The Action gets SceneNode and world transformation Matrix4x4 as parameter.
Public methodForEachChild(String, ActionSceneNode) Searches the GroupNode's children and their children and executes the specified Action for all SceneNodes with the specified name. Name can contain '*' that acts as a wildcard to match multiple SceneNode names. The following wildcard usages are valid: *, *XYZ, XZY*, *XYZ*, XY*Z.
Public methodForEachChild(String, Int32, ActionSceneNode, Matrix4x4) Searches the GroupNode's children and their children and executes the specified Action for all SceneNodes with the specified name. Name can contain '*' that acts as a wildcard to match multiple SceneNode names. The following wildcard usages are valid: *, *XYZ, XZY*, *XYZ*, XY*Z. The Action gets SceneNode and world transformation Matrix4x4 as parameter.
Public methodForEachChild(String, Int32, ActionSceneNode) Searches the GroupNode's children and their children and executes the specified Action for all SceneNodes with the specified name. Name can contain '*' that acts as a wildcard to match multiple SceneNode names. The following wildcard usages are valid: *, *XYZ, XZY*, *XYZ*, XY*Z.
Public methodForEachChild(String, Matrix4x4, ActionSceneNode, Matrix4x4) Searches the GroupNode's children and their children and executes the specified Action for all SceneNodes with the specified name.ž Name can contain '*' that acts as a wildcard to match multiple SceneNode names. The following wildcard usages are valid: *, *XYZ, XZY*, *XYZ*, XY*Z. The Action gets SceneNode and world transformation Matrix4x4 as parameter.
Public methodForEachChild(String, Int32, Matrix4x4, ActionSceneNode, Matrix4x4) Searches the GroupNode's children and their children and executes the specified Action for all SceneNodes with the specified name. Name can contain '*' that acts as a wildcard to match multiple SceneNode names. The following wildcard usages are valid: *, *XYZ, XZY*, *XYZ*, XY*Z. The Action gets SceneNode and world transformation Matrix4x4 as parameter.
Public methodForEachChildT(ActionT) Executes the specified Action for all child SceneNodes of type T and their children.
Public methodForEachChildT(ActionT, Matrix4x4) Executes the specified Action for all child SceneNodes of type T and their children. The Action gets SceneNode of type T and world transformation Matrix4x4 as parameter.
Public methodForEachChildT(Matrix4x4, ActionT, Matrix4x4) Executes the specified Action for all child SceneNodes of type T and their children. The Action gets SceneNode of type T and world transformation Matrix4x4 as parameter.
Public methodForEachChildT(String, ActionT, Matrix4x4) Searches the GroupNode's children and their children and executes the specified Action for all SceneNodes of type T with the specified name.ž Name can contain '*' that acts as a wildcard to match multiple SceneNode names. The following wildcard usages are valid: *, *XYZ, XZY*, *XYZ*, XY*Z. The Action gets SceneNode of type T and world transformation Matrix4x4 as parameter.
Public methodForEachChildT(String, ActionT) Searches the GroupNode's children and their children and executes the specified Action for all SceneNodes of type T with the specified name. Name can contain '*' that acts as a wildcard to match multiple SceneNode names. The following wildcard usages are valid: *, *XYZ, XZY*, *XYZ*, XY*Z.
Public methodForEachChildT(String, Int32, ActionT, Matrix4x4) Searches the GroupNode's children and their children and executes the specified Action for all SceneNodes of type T with the specified name. Name can contain '*' that acts as a wildcard to match multiple SceneNode names. The following wildcard usages are valid: *, *XYZ, XZY*, *XYZ*, XY*Z. The Action gets SceneNode of type T and world transformation Matrix4x4 as parameter.
Public methodForEachChildT(String, Int32, ActionT) Searches the GroupNode's children and their children and executes the specified Action for all SceneNodes of type T with the specified name. Name can contain '*' that acts as a wildcard to match multiple SceneNode names. The following wildcard usages are valid: *, *XYZ, XZY*, *XYZ*, XY*Z.
Public methodForEachChildT(String, Matrix4x4, ActionT, Matrix4x4) Searches the GroupNode's children and their children and executes the specified Action of type T for all SceneNodes with the specified name.ž Name can contain '*' that acts as a wildcard to match multiple SceneNode names. The following wildcard usages are valid: *, *XYZ, XZY*, *XYZ*, XY*Z. The Action gets SceneNode of type T and world transformation Matrix4x4 as parameter.
Public methodForEachChildT(String, Int32, Matrix4x4, ActionT, Matrix4x4) Searches the GroupNode's children and their children and executes the specified Action for all SceneNodes of type T with the specified name. Name can contain '*' that acts as a wildcard to match multiple SceneNode names. The following wildcard usages are valid: *, *XYZ, XZY*, *XYZ*, XY*Z. The Action gets SceneNode of type T and world transformation Matrix4x4 as parameter.
Public methodGetAllChildren(String, Int32) Searches the GroupNode's children and their children and returns a List of SceneNodes. When name is specified, then SceneNodes with that name are returned. Name can contain '*' that acts as a wildcard to match multiple SceneNode names. The following wildcard usages are valid: *, *XYZ, XZY*, *XYZ*, XY*Z. The search depth can be optionally specified by setting the searchDepth parameter (value 0 means searching only the immediate children of this GroupNode).
Public methodGetAllChildrenT(String, Int32) Searches the GroupNode's children and their children and returns a List of SceneNodes of type T. When name is specified, then SceneNodes with that name are returned. Name can contain '*' that acts as a wildcard to match multiple SceneNode names. The following wildcard usages are valid: *, *XYZ, XZY*, *XYZ*, XY*Z. The search depth can be optionally specified by setting the searchDepth parameter (value 0 means searching only the immediate children of this GroupNode).
Public methodGetById(Int32, Int32) Searches the GroupNode's children and their children and returns the SceneNode with the specified Id. If the scene node is not found then null is returned. The search depth can be optionally specified by setting the searchDepth parameter (value 0 means searching only the immediate children of this GroupNode).
Public methodGetByIdT(Int32, Int32) Searches the GroupNode's children and their children and returns the SceneNode of type T and with the specified Id. If the scene node is not found then null is returned. The search depth can be optionally specified by setting the searchDepth parameter (value 0 means searching only the immediate children of this GroupNode).
Public methodGetChild(Int32) 
Public methodGetChild(String, Int32) Searches the GroupNode's children and their children and returns the SceneNode with the specified name. Name can contain '*' that acts as a wildcard. In this case the first SceneNode that matches the wildcard is returned. The following wildcard usages are valid: *, *XYZ, XZY*, *XYZ*, XY*Z. If the scene node is not found then null is returned. The search depth can be optionally specified by setting the searchDepth parameter (value 0 means searching only the immediate children of this GroupNode).
Public methodGetChildT(String, Int32) Searches the GroupNode's children and their children and returns the SceneNode of type T and with the specified name. Name can contain '*' that acts as a wildcard. In this case the first SceneNode that matches the wildcard is returned. The following wildcard usages are valid: *, *XYZ, XZY*, *XYZ*, XY*Z. If the scene node is not found then null is returned. The search depth can be optionally specified by setting the searchDepth parameter (value 0 means searching only the immediate children of this GroupNode).
Public methodGetEachChild Gets an IEnumerable of SceneNode of all child SceneNodes and their children.
Public methodGetEnumerator 
Public methodGetHierarchyText Returns string that contains details about all this and child SceneNodes and their hierarchy.
Public methodGetLocalBoundingBox Gets the BoundingBox of all the child SceneNodes in local coordinates. The BoundingBox is transformed by transformation on this SceneNode but not by parent's transformations. When updateIfDirty parameter is true (by default) then the DirtyFlags of all child SceneNodes are checked and the Update method is called in case the mesh is dirty. When updateIfDirty parameter is false then the current value of protected localBoundingBox field is returned.
(Overrides SceneNodeGetLocalBoundingBox(Boolean))
Public methodGetOverviewText
(Overrides SceneNodeGetOverviewText(StringBuilder, Boolean, Boolean, Boolean, Boolean, Boolean, Boolean, Boolean, Boolean, Boolean))
Public methodIndexOf 
Public methodInsert 
Protected methodLockChildren LockChildren method locks Children collection and prevents changing it. This is used by SceneNodes that are derived from GroupNode and create a fixed set of child SceneNodes that should not be changed by the user.
Public methodNotifyAllChildSceneNodesChange Add the changeType to all child SceneNodes. This does not change this SceneNode's dirty flags.
Protected methodOnChildrenChanged(NotifyCollectionChangedAction, SceneNode) OnChildrenChangedChanged
Protected methodOnChildrenChanged(NotifyCollectionChangedAction, IListSceneNode) OnChildrenChangedChanged
Protected methodOnInitializeSceneResources Initializes resources with the specified Scene and GpuDevice. This method can be override and is called from InitializeSceneResources(Scene) method.
(Overrides InitializedSceneComponentOnInitializeSceneResources(Scene, VulkanDevice))
Protected methodOnIsVisibleChanged
(Overrides SceneNodeOnIsVisibleChanged(Boolean))
Public methodRemove(SceneNode) Removes the specified SceneNode from the children collection. This method also recalculates the bounding box from all remaining children. When many children are removed, then it is recommended to call Remove(SceneNode, Boolean) and then UpdateBoundingBox.
Public methodRemove(SceneNode, Boolean) Removes the specified SceneNode from the children collection. If updateBoundingBox is false (useful when removing multiple SceneNodes), then the UpdateBoundingBox method must be called after all the SceneNodes are removed.
Public methodRemoveAt(Int32) Removes the child SceneNode at the specified index from the children collection. This method also recalculates the bounding box from all remaining children. When many children are removed, then it is recommended to call RemoveAt(Int32, Boolean) and then UpdateBoundingBox.
Public methodRemoveAt(Int32, Boolean) Removes the child SceneNode at the specified index from the children collection. If updateBoundingBox is false (useful when removing multiple SceneNodes), then the UpdateBoundingBox method must be called after all the SceneNodes are removed.
Protected methodUnlockChildren UnlockChildren method unlocks Children collection and allows changing it.
Public methodUpdateBoundingBox UpdateBoundingBox calculates the local bounding box again from the bounding boxes of the children.
Protected methodUpdateLocalBoundingBox
(Overrides SceneNodeUpdateLocalBoundingBox)
Top
Events
 NameDescription
Public eventChildrenChanged Occurs when list of Children has changed.
Top
Extension Methods
 NameDescription
Public Extension MethodDumpHierarchy Dumps the hierarchy of the GroupNode and its children.
(Defined by Extensions)
Top
See Also