Class TAbstractShapeNode

Unit

Declaration

type TAbstractShapeNode = class(TAbstractChildNode, IAbstractBoundedObject)

Description

Base node type for all Shape nodes.

Hierarchy

Overview

Methods

Protected function DirectEnumerateActive(Func: TEnumerateChildrenFunction): Pointer; override;
Public constructor Create(const AX3DName: string = ''; const ABaseUrl: string = ''); override;
Public procedure BeforeTraverse(StateStack: TX3DGraphTraverseStateStack); override;
Public procedure AfterTraverse(StateStack: TX3DGraphTraverseStateStack); override;
Public function CommonSurfaceShader: TCommonSurfaceShaderNode; deprecated 'use TMaterialNode instead of TCommonSurfaceShaderNode (it has the same functionality and is standardized in X3D v4)';
Public procedure CreateNode; override;
Public class function ClassX3DType: string; override;

Properties

Public property Texture: TAbstractTextureNode read GetTexture write SetTexture;
Public property TextureTransform: TAbstractTextureTransformNode read GetTextureTransform write SetTextureTransform;
Public property Material: TAbstractMaterialNode read GetMaterial write SetMaterial;
Public property LineProperties: TLinePropertiesNode read GetLineProperties write SetLineProperties;
Public property FdAppearance: TSFNode read FFdAppearance;
Public property Appearance: TAppearanceNode read GetAppearance write SetAppearance;
Public property FdGeometry: TSFNode read FFdGeometry;
Public property Geometry: TAbstractGeometryNode read GetGeometry write SetGeometry;
Public property FdBboxCenter: TSFVec3f read FFdBboxCenter;
Public property BBox: TBox3D read GetBBox write SetBBox;
Public property FdBboxSize: TSFVec3f read FFdBboxSize;
Public property FdShading: TSFStringEnum read FFdShading;
Public property Shading: TShading read GetShading write SetShading;
Public property FdOctreeTriangles: TSFNode read FFdOctreeTriangles;
Public property OctreeTriangles: TKambiOctreePropertiesNode read GetOctreeTriangles write SetOctreeTriangles;
Public property FdRender: TSFBool read FFdRender;
Public property Render: Boolean read GetRender write SetRender;
Public property FdCollision: TSFStringEnum read FFdCollision;
Public property Collision: TShapeCollision read GetCollision write SetCollision;

Description

Methods

Protected function DirectEnumerateActive(Func: TEnumerateChildrenFunction): Pointer; override;
 
Public constructor Create(const AX3DName: string = ''; const ABaseUrl: string = ''); override;
 
Public procedure BeforeTraverse(StateStack: TX3DGraphTraverseStateStack); override;
 
Public procedure AfterTraverse(StateStack: TX3DGraphTraverseStateStack); override;
 
Public function CommonSurfaceShader: TCommonSurfaceShaderNode; deprecated 'use TMaterialNode instead of TCommonSurfaceShaderNode (it has the same functionality and is standardized in X3D v4)';

Warning: this symbol is deprecated: use TMaterialNode instead of TCommonSurfaceShaderNode (it has the same functionality and is standardized in X3D v4)

Find a suitable CommonSurfaceShader to be used when rendering this shape, or Nil.

Public procedure CreateNode; override;
 
Public class function ClassX3DType: string; override;
 

Properties

Public property Texture: TAbstractTextureNode read GetTexture write SetTexture;

The texture of this shape. This is a shortcut for accessing "texture" field of Apperance, that is TAppearanceNode(FdAppearance.Value).FdTexture.Value, checking whether nodes are set to appropriate types along the way.

When setting this to something non-nil, we make sure to also set Appearance to something non-nil.

Public property TextureTransform: TAbstractTextureTransformNode read GetTextureTransform write SetTextureTransform;

Texture transformation of this shape. Similar to Texture, this is just a comfortable property for getting and setting the appropriate Appearance field, checking class types along the way.

Public property Material: TAbstractMaterialNode read GetMaterial write SetMaterial;

Get / set the material of this shape. When setting this material to something non-nil, we make sure to also set Appearance to something non-nil.

Public property LineProperties: TLinePropertiesNode read GetLineProperties write SetLineProperties;

Line properties of this shape. This is a clean, type-safe way for accessing Appearance.lineProperties field of this shape.

Public property FdAppearance: TSFNode read FFdAppearance;
 
Public property Appearance: TAppearanceNode read GetAppearance write SetAppearance;
 
Public property FdGeometry: TSFNode read FFdGeometry;
 
Public property Geometry: TAbstractGeometryNode read GetGeometry write SetGeometry;
 
Public property FdBboxCenter: TSFVec3f read FFdBboxCenter;
 
Public property BBox: TBox3D read GetBBox write SetBBox;

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

Manually providing the bounding box makes sense if you can do it more efficiently than the engine. E.g. if the shape vertexes are animated, then the engine would have to recalcualate the perfect bounding box every frame. It is more efficient to calculate a bounding box of all possible animation frames, and store it here.

The glTF skinned animation automatically fills this field for the affected shapes.

Note: This property is not useful if you want to know the bounding box of a shape, calculated by the engine. This property only allows to override the automatic engine calculation.

To read the calculated bounding box, load the nodes to TCastleScene. You can then use Scene.BoundingBox, Scene.LocalBoundingBox, Scene.WorldBoundingBox to know bounding box of the scene. To get bounding box of a particular shape, enumerate TCastleSceneCore.Shapes to find the correct shape (using any criteria you want – note that the same TShapeNode may be reused multiple times), and then read TShape.BoundingBox, TShape.LocalBoundingBox.

Public property FdBboxSize: TSFVec3f read FFdBboxSize;
 
Public property FdShading: TSFStringEnum read FFdShading;
 
Public property Shading: TShading read GetShading write SetShading;
 
Public property FdOctreeTriangles: TSFNode read FFdOctreeTriangles;
 
Public property OctreeTriangles: TKambiOctreePropertiesNode read GetOctreeTriangles write SetOctreeTriangles;
 
Public property FdRender: TSFBool read FFdRender;
 
Public property Render: Boolean read GetRender write SetRender;

Is the shape visible. See https://castle-engine.io/x3d_implementation_shape_extensions.php#section_ext_shape_render

Public property FdCollision: TSFStringEnum read FFdCollision;
 
Public property Collision: TShapeCollision read GetCollision write SetCollision;
 

Generated by PasDoc 0.15.0.