Class TAbstractX3DGroupingNode

Unit

Declaration

type TAbstractX3DGroupingNode = class(TAbstractGroupingNode)

Description

Base node that contains children nodes, in X3D and VRML 2.0.

Hierarchy

Overview

Methods

Public procedure CreateNode; override;
Public procedure AddChildren(const Children: array of TAbstractChildNode; const AllowDuplicates: Boolean = true); overload;
Public procedure AddChildren(const Child: TAbstractChildNode; const AllowDuplicates: Boolean = true); overload;
Public procedure RemoveChildren(const Children: array of TAbstractChildNode); overload;
Public procedure RemoveChildren(const Child: TAbstractChildNode); overload;
Public procedure ClearChildren;
Public procedure SetChildren(const Value: array of TAbstractChildNode);

Properties

Public property EventAddChildren: TMFNodeEvent read FEventAddChildren;
Public property EventRemoveChildren: TMFNodeEvent read FEventRemoveChildren;
Public property FdChildren: TMFNode read FFdChildren;
Public property FdBboxCenter: TSFVec3f read FFdBboxCenter;
Public property FdBboxSize: TSFVec3f read FFdBboxSize;
Public property FdVisible: TSFBool read FFdVisible;
Public property FdBBoxDisplay: TSFBool read FFdBBoxDisplay;
Public property BBox: TBox3D read GetBBox write SetBBox;
Public property Visible: Boolean read GetVisible write SetVisible;
Public property BboxDisplay: Boolean read GetBboxDisplay write SetBboxDisplay;

Description

Methods

Public procedure CreateNode; override;
 
Public procedure AddChildren(const Children: array of TAbstractChildNode; const AllowDuplicates: Boolean = true); overload;

Add the nodes as children.

By default, adding the same node multiple times makes the node present on the list multiple times. This AddChildren behavior is consistent with how FdChildren.Add(Child) behaves, and consistent with how RemoveChildren works (it removes only a single copy in case of duplicates). Our engine allows duplicates on the children list — you can specify them in the X3D file, or you can add them using FdChildren.Add.

If you specify AllowDuplicates = False, then adding a node that already exists on the children list is ignored. This has a tiny performance hit (we need to check for existence first), but it is consistent with how X3D event "addChildren" should behave according to the spec. The X3D specification doesn't allow duplicates on the children list.

This propagates the changes appropriately to the parent TCastleSceneCore, calling TCastleSceneCore.ChangedAll or something similar.

Public procedure AddChildren(const Child: TAbstractChildNode; const AllowDuplicates: Boolean = true); overload;
 
Public procedure RemoveChildren(const Children: array of TAbstractChildNode); overload;

Remove the nodes from the children list. Removing a node that does not exist on the children list is ignored.

If a node exists on the current children list multiple times, then a single occurrence of this node is removed, for each occurrence of this node in the parameters list.

This propagates the changes appropriately to the parent TCastleSceneCore, calling TCastleSceneCore.ChangedAll or something similar.

Public procedure RemoveChildren(const Child: TAbstractChildNode); overload;
 
Public procedure ClearChildren;

Clear all children from the list. This automatically propagates the changes appropriately to the parent TCastleSceneCore.

Public procedure SetChildren(const Value: array of TAbstractChildNode);
 

Properties

Public property EventAddChildren: TMFNodeEvent read FEventAddChildren;
 
Public property EventRemoveChildren: TMFNodeEvent read FEventRemoveChildren;
 
Public property FdChildren: TMFNode read FFdChildren;
 
Public property FdBboxCenter: TSFVec3f read FFdBboxCenter;
 
Public property FdBboxSize: TSFVec3f read FFdBboxSize;
 
Public property FdVisible: TSFBool read FFdVisible;
 
Public property FdBBoxDisplay: TSFBool read FFdBBoxDisplay;
 
Public property BBox: TBox3D read GetBBox write SetBBox;

You can provide a manually-calculated bounding box of the group here, for optimization purposes. Leave this field as empty (TBox3D.Empty) to let the engine calculate best bounding box automatically.

This field is ignored for now.

See the X3D Grouping component docs: https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/group.html , section "10.2.2 Bounding boxes ".

Public property Visible: Boolean read GetVisible write SetVisible;

Is this group visible (not implemented yet).

While this is not implemented for an entire X3D group, note that you can use TAbstractShapeNode.Render to toggle visibility of each shape.

Public property BboxDisplay: Boolean read GetBboxDisplay write SetBboxDisplay;

Is the bounding box of this group visible (not implemented yet).

While this is not implemented for an X3D group, note that you can use TDebugTransformBox to easily display bounding box of a whole TCastleTransform.


Generated by PasDoc 0.16.0.