Castle Game Engine: X3DNodes: Class TAbstractPositionalLightNode

# Class TAbstractPositionalLightNode
Description | Hierarchy | Fields | Methods | Properties
## Unit X3DNodes ## Declaration `type TAbstractPositionalLightNode = class(TAbstractLightNode)` ## Description no description available, TAbstractLightNode description follows Base class for all VRML / X3D light nodes. Note that even the old VRML 1.0 light nodes inherit from this. Although they interpret some bits differently ("ambientIntensity" < 0 has special meaning). But most of the fields behave identically, they only have different default values. ## Hierarchy TPersistent TNonRefCountedInterfacedPersistent TX3DFileItem TX3DNode TAbstractNode TAbstractChildNode TAbstractLightNode TAbstractPositionalLightNode ## Overview ### Methods
| `procedure CreateNode; override;`
| `function DistanceNeededForAttenuation: boolean;`
| `function CalculateAttenuation(const DistanceToLight: Single): Single; overload;`
| `function CalculateAttenuation(const DistanceToLight: Double): Double; overload;`
| `function HasAttenuation: boolean;`
| `function HasRadius: boolean; virtual;`
| `procedure UpdateLightInstance(var LightInstance: TLightInstance); override;`
| `function Position: TVector4Single; override;`
### Properties
| `property FdAttenuation: TSFVec3f read FFdAttenuation;`
| `property Attenuation: TVector3Single read GetAttenuation write SetAttenuation;`
| `property FdLocation: TSFVec3f read FFdLocation;`
| `property Location: TVector3Single read GetLocation write SetLocation;`
| `property FdRadius: TSFFloat read FFdRadius;`
| `property Radius: Single read GetRadius write SetRadius;`
## Description ### Methods
| `procedure CreateNode; override;`
| `function DistanceNeededForAttenuation: boolean;`
Calculate light intensity drop because of the distance to the light. This follows the equation `1/max( attenuation[0] + ... )` from the VRML/X3D specification, it is the same as OpenGL attenuation. Since calculating the DistanceToLight for the Attenuation method may be time-consuming in some situations, you can check `DistanceNeededForAttenuation` first. When the `DistanceNeededForAttenuation` returns `False`, then the value of DistanceToLight parameter is ignored (you can pass anything). The DistanceToLight should be a distance in the light source local coordinate system. TODO: although our renderers currently ignore this: ray-tracer uses global coord system, OpenGL (fixed-function and shader) renderer uses eye coord system (should be equal to global coord system for normal cameras).
| `function CalculateAttenuation(const DistanceToLight: Single): Single; overload;`
| `function CalculateAttenuation(const DistanceToLight: Double): Double; overload;`
| `function HasAttenuation: boolean;`
Is attenuation relevant. When `False`, you know that Attenuation function always returns 1, so there's no point in using it at all.
| `function HasRadius: boolean; virtual;`
Should the "radius" field be taken into account.
| `procedure UpdateLightInstance(var LightInstance: TLightInstance); override;`
| `function Position: TVector4Single; override;`
### Properties
| `property FdAttenuation: TSFVec3f read FFdAttenuation;`
| `property Attenuation: TVector3Single read GetAttenuation write SetAttenuation;`
| `property FdLocation: TSFVec3f read FFdLocation;`
| `property Location: TVector3Single read GetLocation write SetLocation;`
| `property FdRadius: TSFFloat read FFdRadius;`
| `property Radius: Single read GetRadius write SetRadius;`
Generated by PasDoc 0.13.0 on 2015-06-15 04:43:15