Class TAbstractLightNode

Unit

Declaration

type TAbstractLightNode = class(TAbstractChildNode)

Description

Base class for all the light nodes.

Hierarchy

Overview

Methods

Protected procedure BeforeTraverse(StateStack: TX3DGraphTraverseStateStack); override;
Protected procedure MiddleTraverse(StateStack: TX3DGraphTraverseStateStack); override;
Protected procedure GroupBeforeTraverse(const State: TX3DGraphTraverseState; var WasPointingDeviceSensor: Boolean); override;
Public constructor Create(const AX3DName: string = ''; const ABaseUrl: String = ''); override;
Public function CreateLightInstance(State: TX3DGraphTraverseState): TLightInstance;
Public procedure UpdateLightInstanceState( var LightInstance: TLightInstance; State: TX3DGraphTraverseState);
Public procedure UpdateLightInstance( var LightInstance: TLightInstance); virtual;
Public function Scope: TLightScope; virtual;
Public function Transform: TMatrix4;
Public function InverseTransform: TMatrix4;
Public function TransformationChange: TNodeTransformationChange; override;
Public procedure CreateNode; override;
Public class function ClassX3DType: String; override;
Public procedure SetEffects(const Value: array of TEffectNode);

Properties

Public property FdAmbientIntensity: TSFFloat read FFdAmbientIntensity;
Public property AmbientIntensity: Single read GetAmbientIntensity write SetAmbientIntensity;
Public property FdColor: TSFColor read FFdColor;
Public property Color: TCastleColorRGB read GetColor write SetColor;
Public property FdGlobal: TSFBool read FFdGlobal;
Public property Global: Boolean read GetGlobal write SetGlobal;
Public property FdIntensity: TSFFloat read FFdIntensity;
Public property Intensity: Single read GetIntensity write SetIntensity;
Public property FdOn: TSFBool read FFdOn;
Public property IsOn: Boolean read GetIsOn write SetIsOn;
Public property FdEffects: TMFNode read FFdEffects;
Public property FdShadowVolumes: TSFBool read FFdShadowVolumes;
Public property ShadowVolumes: Boolean read GetShadowVolumes write SetShadowVolumes;

Description

Methods

Protected procedure BeforeTraverse(StateStack: TX3DGraphTraverseStateStack); override;

This item has no description. Showing description inherited from TX3DNode.BeforeTraverse.

Override these methods to determine what happens when given node is traversed during Traverse call. The main use of this is to operate on TX3DGraphTraverseStateStack.

Remember to always call inherited when overriding. In BeforeTraverse and MiddleTraverse you should call inherited at the beginning, in AfterTraverse inherited should be called at the end.

Besides changing StateStack.Top fields, you can do push/pop on the stack. Remember that if you do StateStack.Push in BeforeTraverse, and then you must call StateStack.Pop in AfterTraverse.

Protected procedure MiddleTraverse(StateStack: TX3DGraphTraverseStateStack); override;

This item has no description.

Protected procedure GroupBeforeTraverse(const State: TX3DGraphTraverseState; var WasPointingDeviceSensor: Boolean); override;

This item has no description. Showing description inherited from TX3DNode.GroupBeforeTraverse.

React when this node is processed as an immediate child of a grouping node, within grouping node's BeforeTraverse.

Public constructor Create(const AX3DName: string = ''; const ABaseUrl: String = ''); override;

This item has no description. Showing description inherited from TX3DNode.Create.

Constructor. Initializes various properties:

  • Name, BaseUrl are initialized from given parameters.

  • The Fields, Events lists are filled in every descendant, to have all the fields/events defined by the specification.

  • DefaultContainerField, and other node-specific stuff, is filled in descendants. This is actually implemented in CreateNode, that is called at the end of this constructor.

Public function CreateLightInstance(State: TX3DGraphTraverseState): TLightInstance;

Create TLightInstance record describing this light node under given State.

Public procedure UpdateLightInstanceState( var LightInstance: TLightInstance; State: TX3DGraphTraverseState);

Update TLightInstance record when lighting State changes. Assumes that LightInstance.Node = Self.

This will set LightInstance.Transform properties, and recalculate all LightInstance properties based on Transform.

Public procedure UpdateLightInstance( var LightInstance: TLightInstance); virtual;

Update TLightInstance record when lighting location/direction (and other properties precalculated on TLightInstance) change. Assumes that LightInstance.Node = Self.

Public function Scope: TLightScope; virtual;

Light scope. Default implementation returns lsGlobal or lsLocal, depending on "global" field value (this follows VRML/X3D >= 2.0 rules).

Public function Transform: TMatrix4;

Transformation of this light node, to world space. This accounts for transformation to scene space (TCastleScene) and then to viewport root (TCastleViewport.Items) space.

Beware: In X3D, light nodes can be instantiated many times within the scene, with different transformations, so this transformation property should not be used in general.

Use this only if you you know that light node occurs only once within the scene. For example shadow maps assume this, see [https://castle-engine.io/x3d_extensions.php#section_ext_shadow_maps .

For this to work, we multiply transformation from last traverse (BeforeTraverse collects transformation to space) and then use TCastleTransform.WorldTransform.

Public function InverseTransform: TMatrix4;

This item has no description.

Public function TransformationChange: TNodeTransformationChange; override;

This item has no description.

Public procedure CreateNode; override;

Create node fields and events.

Public class function ClassX3DType: String; override;

This item has no description. Showing description inherited from TX3DNode.ClassX3DType.

Node type name in VRML/X3D, for this class. Normal VRML/X3D node classes should override this to return something non-empty, and then X3DType automatically will return the same value.

Empty for classes that don't have a hardcoded VRML/X3D node name, like a special TX3DUnknownNode. Such special classes should override then X3DType to return actual non-empty name there.

You usually should call X3DType. The only use of this method is that it works on classes (it's "class function"), without needing at actual instance.

Public procedure SetEffects(const Value: array of TEffectNode);

This item has no description.

Properties

Public property FdAmbientIntensity: TSFFloat read FFdAmbientIntensity;

Internal wrapper for property AmbientIntensity. This wrapper API may change, we advise to access simpler AmbientIntensity instead, if it is defined (TODO: for now, some field types do not have a simpler counterpart).

Public property AmbientIntensity: Single read GetAmbientIntensity write SetAmbientIntensity;

This item has no description.

Public property FdColor: TSFColor read FFdColor;

Internal wrapper for property Color. This wrapper API may change, we advise to access simpler Color instead, if it is defined (TODO: for now, some field types do not have a simpler counterpart).

Public property Color: TCastleColorRGB read GetColor write SetColor;

This item has no description.

Public property FdGlobal: TSFBool read FFdGlobal;

Internal wrapper for property Global. This wrapper API may change, we advise to access simpler Global instead, if it is defined (TODO: for now, some field types do not have a simpler counterpart).

Public property Global: Boolean read GetGlobal write SetGlobal;

This item has no description.

Public property FdIntensity: TSFFloat read FFdIntensity;

Internal wrapper for property Intensity. This wrapper API may change, we advise to access simpler Intensity instead, if it is defined (TODO: for now, some field types do not have a simpler counterpart).

Public property Intensity: Single read GetIntensity write SetIntensity;

This item has no description.

Public property FdOn: TSFBool read FFdOn;

Internal wrapper for property IsOn. This wrapper API may change, we advise to access simpler IsOn instead, if it is defined (TODO: for now, some field types do not have a simpler counterpart).

Public property IsOn: Boolean read GetIsOn write SetIsOn;

This item has no description.

Public property FdEffects: TMFNode read FFdEffects;

Internal wrapper for property Effects. This wrapper API may change, we advise to access simpler Effects instead, if it is defined (TODO: for now, some field types do not have a simpler counterpart).

Public property FdShadowVolumes: TSFBool read FFdShadowVolumes;

Internal wrapper for property ShadowVolumes. This wrapper API may change, we advise to access simpler ShadowVolumes instead, if it is defined (TODO: for now, some field types do not have a simpler counterpart).

Public property ShadowVolumes: Boolean read GetShadowVolumes write SetShadowVolumes;

This item has no description.


Generated by PasDoc 0.16.0-snapshot.