Unit X3DFields

Description

X3D fields (TX3DField and many descendants).

Uses

Overview

Classes, Interfaces, Objects and Records

Name Description
Class EX3DError Any error related to VRML/X3D.
Class EX3DFieldAssign  
Class EX3DFieldAssignInvalidClass  
Class EX3DNotFound Raised by various X3D methods searching for X3D items (nodes, fields, events and such) when given item cannot be found.
Class TX3DWriter Writer of VRML/X3D to stream.
Class TX3DReader Reading of VRML/X3D from stream.
Class TX3DFileItem Base class for any item within VRML/X3D file: a node, a field, a route, a prototype etc.
Class TX3DFileItemList  
Class TX3DFieldOrEvent Base class for VRML/X3D field or event.
Class TX3DField Base class for all VRML/X3D fields.
Class TX3DFieldList  
Class TX3DEvent X3D event.
Class TX3DEventList  
Class TSFBoolEvent  
Class TSFDoubleEvent  
Class TSFTimeEvent  
Class TSFFloatEvent  
Class TSFImageEvent  
Class TSFLongEvent  
Class TSFInt32Event  
Class TSFMatrix3dEvent  
Class TSFMatrix3fEvent  
Class TSFMatrix4dEvent  
Class TSFMatrix4fEvent  
Class TSFNodeEvent  
Class TSFRotationEvent  
Class TSFStringEvent  
Class TSFVec2dEvent  
Class TSFVec2fEvent  
Class TSFVec3dEvent  
Class TSFVec3fEvent  
Class TSFVec4dEvent  
Class TSFVec4fEvent  
Class TSFColorEvent  
Class TSFColorRGBAEvent  
Class TXFAnyEvent Universal input event that can receive value of any type.
Class TMFBoolEvent  
Class TMFDoubleEvent  
Class TMFTimeEvent  
Class TMFFloatEvent  
Class TMFLongEvent  
Class TMFInt32Event  
Class TMFMatrix3dEvent  
Class TMFMatrix3fEvent  
Class TMFMatrix4dEvent  
Class TMFMatrix4fEvent  
Class TMFNodeEvent  
Class TMFRotationEvent  
Class TMFStringEvent  
Class TMFVec2dEvent  
Class TMFVec2fEvent  
Class TMFVec3dEvent  
Class TMFVec3fEvent  
Class TMFVec4dEvent  
Class TMFVec4fEvent  
Class TMFColorEvent  
Class TMFColorRGBAEvent  
Class TX3DSingleField Copyright 2002-2017 Michalis Kamburelis.
Class TSFBitMask VRML 1.0 (deprecated) field representing a bitmask, where a number of "flags" can be "on" or "off".
Class TSFBool X3D field containing a single boolean value.
Class TSFEnum VRML 1.0 (deprecated) field representing an enumerated value, which means that you choose one (named) value from a set of possible values.
Class TSFFloat X3D field containing a floating-point value with Single precision.
Class TSFDouble X3D field containing a floating-point value with Double precision.
Class TSFTime X3D field containing a time, expressed as seconds that passed since some moment.
Class TSFImage X3D field containing an image that is "embedded" in the X3D file.
Class TSFLong X3D field containing an single integer 32-bit value.
Class TSFInt32 X3D field containing an single integer 32-bit value.
Class TSFGenericMatrix Generic class for an X3D field containing a single matrix value.
Class TSFMatrix3f X3D field containing a 3x3 matrix with Single precision.
Class TSFMatrix3d X3D field containing a 3x3 matrix with Double precision.
Class TSFMatrix4f X3D field containing a 4x4 matrix with Single precision.
Class TSFMatrix4d X3D field containing a 4x4 matrix with Double precision.
Class TSFMatrix VRML 1.0 SFMatrix field.
Class TSFRotation X3D field representing a 3D rotation around an arbitrary axis.
Class TSFString X3D field containing a single string.
Class TSFStringEnum X3D field that contains a value from a specified set.
Class TSFGenericVector X3D field containing a vector.
Class TSFVec2f X3D field containing a 2D vector with Single precision.
Class TSFVec3f X3D field containing a 3D vector with Single precision.
Class TSFColor X3D field containing an RGB color.
Class TSFVec4f X3D field containing a 4D vector with Single precision.
Class TSFColorRGBA X3D field containing an RGBA color (with an alpha).
Class TSFVec2d X3D field containing a 2D vector with Double precision.
Class TSFVec3d X3D field containing a 3D vector with Double precision.
Class TSFVec4d X3D field containing a 4D vector with Double precision.
Class TX3DMultField X3D field with a list of values.
Class TX3DSimpleMultField X3D field with a list of values.
Class TMFBool  
Class TMFLong  
Class TMFInt32  
Class TMFMatrix3f  
Class TMFMatrix3d  
Class TMFMatrix4f  
Class TMFMatrix4d  
Class TMFVec2f  
Class TMFVec3f  
Class TMFColor  
Class TMFVec4f  
Class TMFColorRGBA  
Class TMFVec2d  
Class TMFVec3d  
Class TMFVec4d  
Class TMFRotation  
Class TMFFloat  
Class TMFDouble  
Class TMFTime  
Class TMFString  
Class TX3DFieldsManager Stores information about available VRML/X3D field classes.

Functions and Procedures

function X3DFieldsManager: TX3DFieldsManager;
procedure DecodeX3DColor(const Pixel: LongWord; var G: Byte);
procedure DecodeX3DColor(const Pixel: LongWord; var GA: TVector2Byte);
procedure DecodeX3DColor(const Pixel: LongWord; var RGB: TVector3Byte);
procedure DecodeX3DColor(const Pixel: LongWord; var RGBA: TVector4Byte);
procedure DecodeX3DColor(const Pixel: LongInt; var G: Byte);
procedure DecodeX3DColor(const Pixel: LongInt; var GA: TVector2Byte);
procedure DecodeX3DColor(const Pixel: LongInt; var RGB: TVector3Byte);
procedure DecodeX3DColor(const Pixel: LongInt; var RGBA: TVector4Byte);
function X3DChangesToStr(const Changes: TX3DChanges): string;

Types

TSaveToXmlMethod = (...);
TX3DChange = (...);
TX3DChanges = set of TX3DChange;
TX3DFieldOrEventList = specialize TObjectList<TX3DFieldOrEvent>;
TX3DFieldClass = class of TX3DField;
TX3DEventReceive = procedure (Event: TX3DEvent; Value: TX3DField; const Time: TX3DTime) of object;
TX3DSingleFieldClass = class of TX3DSingleField;
TX3DSingleFieldList = specialize TObjectList<TX3DSingleField>;

Constants

X3DChangeToStr: array [TX3DChange] of string = ( 'Visible Geometry', 'Visible Non-Geometry', 'Redisplay', 'Transform', 'Coordinate', 'VRML 1.0 State (but not affecting geometry or Coordinate)', 'VRML 1.0 State (affecting geometry, but not Coordinate)', 'Material', 'Blending', 'Light active property', 'Light location/direction', 'Light for shadow volumes', 'Switch choice', 'Color node', 'Texture coordinate', 'Texture transform', 'Geometry', 'Environmental sensor bounds', 'Time stop/start/pause/resume', 'Viewpoint vectors', 'Viewpoint projection', 'Texture image', 'Texture renderer properties', 'TextureProperties node', 'Shadow caster', 'Generated texture update', 'FontStyle', 'HeadLight on', 'ClipPlane', 'X3DDragSensorNode.enabled', 'NavigationInfo', 'ScreenEffect.enabled', 'Background', 'Everything', 'Shadow maps', 'Wireframe');

Description

Functions and Procedures

function X3DFieldsManager: TX3DFieldsManager;
 
procedure DecodeX3DColor(const Pixel: LongWord; var G: Byte);

Decode color from integer value, following VRML/X3D SFImage specification.

procedure DecodeX3DColor(const Pixel: LongWord; var GA: TVector2Byte);
 
procedure DecodeX3DColor(const Pixel: LongWord; var RGB: TVector3Byte);
 
procedure DecodeX3DColor(const Pixel: LongWord; var RGBA: TVector4Byte);
 
procedure DecodeX3DColor(const Pixel: LongInt; var G: Byte);
 
procedure DecodeX3DColor(const Pixel: LongInt; var GA: TVector2Byte);
 
procedure DecodeX3DColor(const Pixel: LongInt; var RGB: TVector3Byte);
 
procedure DecodeX3DColor(const Pixel: LongInt; var RGBA: TVector4Byte);
 
function X3DChangesToStr(const Changes: TX3DChanges): string;
 

Types

TSaveToXmlMethod = (...);
 
Values
  • sxNone
  • sxAttribute
  • sxAttributeCustomQuotes
  • sxChildElement
TX3DChange = (...);

Possible things that happen when given field is changed. Used by TX3DField.ExecuteChanges.

Values
  • chVisibleGeometry: Something visible in the geometry changed. See vcVisibleGeometry. This means that VisibleChangeHere with vcVisibleGeometry included should be called.
  • chVisibleNonGeometry: Something visible changed, but not geometry. See vcVisibleNonGeometry. This means that VisibleChangeHere with vcVisibleNonGeometry included should be called.
  • chRedisplay: Call VisibleChangeHere to redisplay the scene.

    If you include one of the chVisibleGeometry or chVisibleNonGeometry then this flag (chRedisplay) makes no effect. Otherwise, this flag should be used if your change requires redisplay of the 3D view for some other reason.

  • chTransform: Transformation of children of this node changed.

    Caller will analyze the scene (your children) to know what this implicates, don't include other flags with this.

  • chCoordinate: Coordinate (both VRML 1.0 and >= 2.0) node "point" field changed.

    Caller will analyze the scene to know what this implicates, don't include other flags with this.

  • chVisibleVRML1State: Something visible in VRML 1.0 state node (that may be present in TX3DGraphTraverseState.VRML1State) changed, but not geometry. Excluding Coordinate node change (this one should go through chCoordinate only).

    This is allowed, and ignored, on nodes that are not part of VRML 1.0 state. (This is useful for alphaChannel field, that is declared in TAbstractGeometryNode, and so is part of some VRML 1.0 state nodes but is also part of VRML >= 2.0 nodes.)

    Caller will analyze the scene to know what this implicates, don't include other flags with this. Exception: you can (and should) include chUseBlending and chTextureImage for appropriate changes.

  • chGeometryVRML1State: Some visible geometry changed because of VRML 1.0 state node change. This is for VRML 1.0 state node changes, excluding non-geometry changes (these go to chVisibleVRML1State) and Coordinate changes (these go to chCoordinate).

    Caller will analyze the scene to know what this implicates, don't include other flags with this.

  • chMaterial2: Something visible in VRML >= 2.0 Material (or TwoSidedMaterial) changed.

    Caller will analyze the scene to know what this implicates, don't include other flags with this. Exception: you can (and should) include chUseBlending for appropriate Material changes.

  • chUseBlending: Something that may affect UseBlending calculation possibly changed. This is guaranteed to work only when used together with chVisibleVRML1State and chMaterial2. It's understood that only shapes that use given material need UseBlending recalculated.
  • chLightInstanceProperty: Light property that is also reflected in TLightInstance structure. Only allowed on node's descending from TAbstractLightNode.

    Caller will analyze the scene to know what this implicates, don't include other flags with this. Exception: include also chLightLocationDirection when appropriate.

  • chLightLocationDirection: Light's location and/or direction changed.

    Caller will analyze the scene to know what this implicates, don't include other flags with this. Exception: include also chLightInstanceProperty when appropriate.

  • chLightForShadowVolumes: TCastleSceneCore.MainLightForShadows possibly changed because of this change.

    Caller will analyze the scene to know what this implicates, don't include other flags with this.

  • chSwitch2: Switch.whichChoice changed, for VRML >= 2.0.

    Caller will analyze the scene to know what this implicates, don't include other flags with this.

  • chColorNode: X3DColorNode colors changed.

    Caller will analyze the scene to know what this implicates, don't include other flags with this.

  • chTextureCoordinate: X3DTextureCoordinateNode coords changed.

    Caller will analyze the scene to know what this implicates, don't include other flags with this.

  • chTextureTransform: VRML >= 2.0 TextureTransform changed. Not for multi-texture node changes, only the simple nodes changes.

    Caller will analyze the scene to know what this implicates, don't include other flags with this.

  • chGeometry: Geometry node visible (or collidable) changed.

    Caller will analyze the scene to know what this implicates, don't include other flags with this.

  • chEnvironmentalSensorBounds: X3DEnvironmentalSensorNode bounds (size/center) changed.

    Caller will analyze the scene to know what this implicates, don't include other flags with this.

  • chTimeStopStart: TimeDependent node is start/stop/pause/resume time changed.

    Caller will analyze the scene to know what this implicates, don't include other flags with this.

  • chViewpointVectors: Viewpoint vectors (position, direction, up, gravity up) changed.

    Caller will analyze the scene to know what this implicates, don't include other flags with this.

  • chViewpointProjection: Viewpoint projection changed.

    Caller will analyze the scene to know what this implicates, don't include other flags with this.

  • chTextureImage: Texture image (data) needs reloading (url or source SFImage data changed). This is for TAbstractTexture2DNode, or TAbstractTexture3DNode.

    Caller will analyze the scene to know what this implicates, don't include other flags with this. Exception: you can mix it with chVisibleVRML1State or chTextureRendererProperties.

  • chTextureRendererProperties: Texture properties used by the renderer changed (something other than only the texture data). This is for fields contained in X3DTextureNode.

    Caller will analyze the scene to know what this implicates, don't include other flags with this. Exception: you can mix it with chTextureImage.

  • chTexturePropertiesNode: Texture properties inside TextureProperties node changed.

    Caller will analyze the scene to know what this implicates, don't include other flags with this.

  • chShadowCasters: What is considered a shadow caster changed.

    Caller will analyze the scene to know what this implicates, don't include other flags with this.

  • chGeneratedTextureUpdateNeeded: Mark the generated texture node (parent of this field) as requiring update (assuming it's "update" field value wants it too).

    Caller will analyze the scene to know what this implicates, don't include other flags with this.

  • chFontStyle: VRML >= 2.0 FontStyle changed. Caller will analyze the scene to know what this implicates, don't include other flags with this.
  • chHeadLightOn: HeadLight on status changed. Caller will analyze the scene to know what this implicates, don't include other flags with this.
  • chClipPlane: Clip plane visible change (enabled or plane equation).
  • chDragSensorEnabled: Enabled field of the pointing-device drag sensor changed. Use only for TSFBool fields within TAbstractDragSensorNode.
  • chNavigationInfo: NavigationInfo field value used in TCastleSceneCore.NavigationTypeFromNavigationInfo or TCastleSceneCore.CameraFromNavigationInfo changed.
  • chScreenEffectEnabled: ScreenEffect.enabled changed
  • chBackground: X3DBackgroundNode properties that are stored inside TBackground display list have changed.
  • chEverything: Everything changed and needs to be recalculated. This is needed for changes on stuff internally cached in TCastleSceneCore, TCastleScene, TShape that cannot be expressed as one of above flags.

    Use only as a last resort, as this is very costly! (And in an ideal implementation, should not be needed.)

    Don't include other flags with this.

  • chShadowMaps: Higher-level shadow maps fields changed. They have to be processed to lower-level fields by calling TCastleSceneCore.ProcessShadowMapsReceivers.

    Don't include other flags with this.

  • chWireframe: Shading changed from wireframe to non-wireframe.
TX3DChanges = set of TX3DChange;
 
TX3DFieldOrEventList = specialize TObjectList<TX3DFieldOrEvent>;
 
TX3DFieldClass = class of TX3DField;
 
TX3DEventReceive = procedure (Event: TX3DEvent; Value: TX3DField; const Time: TX3DTime) of object;

Called when TX3DEvent is received, see TX3DEvent.AddNotification.

TX3DSingleFieldClass = class of TX3DSingleField;
 
TX3DSingleFieldList = specialize TObjectList<TX3DSingleField>;
 

Constants

X3DChangeToStr: array [TX3DChange] of string = ( 'Visible Geometry', 'Visible Non-Geometry', 'Redisplay', 'Transform', 'Coordinate', 'VRML 1.0 State (but not affecting geometry or Coordinate)', 'VRML 1.0 State (affecting geometry, but not Coordinate)', 'Material', 'Blending', 'Light active property', 'Light location/direction', 'Light for shadow volumes', 'Switch choice', 'Color node', 'Texture coordinate', 'Texture transform', 'Geometry', 'Environmental sensor bounds', 'Time stop/start/pause/resume', 'Viewpoint vectors', 'Viewpoint projection', 'Texture image', 'Texture renderer properties', 'TextureProperties node', 'Shadow caster', 'Generated texture update', 'FontStyle', 'HeadLight on', 'ClipPlane', 'X3DDragSensorNode.enabled', 'NavigationInfo', 'ScreenEffect.enabled', 'Background', 'Everything', 'Shadow maps', 'Wireframe');
 

Generated by PasDoc 0.15.0.