| Description | Hierarchy | Fields | Methods | Properties |
type TSFNode = class(TVRMLSingleField)
SFNode VRML field. It's defined in this unit, not in VRMLFields, since it uses TVRMLNode definition. NULL value of the field is indicated by Value field = nil. This field has always the same default value: NULL.
Note that we store AllowedChildren list, which is a list of classes allowed as a Value (also nil is always allowed). But this is used only to produce warnings for a user. You should never assert that Value actually is one the requested classes. We want to keep here even not allowed items, because we want operation "read from VRML file + write to VRML file" to be as non-destructible as possible. So if user wrote invalid class hierarchy, we will output this invalid class hierarchy.
![]() |
procedure SaveToStreamValue(SaveProperties: TVRMLSaveToStreamProperties); override; |
![]() |
constructor CreateUndefined(const AName: string); override; |
![]() |
constructor Create(AParentNode: TVRMLNode; const AName: string; const AnAllowedChildren: array of TVRMLNodeClass); overload; |
![]() |
constructor Create(AParentNode: TVRMLNode; const AName: string; AnAllowedChildren: TVRMLNodeClassesList); overload; |
![]() |
destructor Destroy; override; |
![]() |
procedure Parse(Lexer: TVRMLLexer; IsClauseAllowed: boolean); override; |
![]() |
function EqualsDefaultValue: boolean; override; |
![]() |
function Equals(SecondValue: TVRMLField; const EqualityEpsilon: Single): boolean; override; |
![]() |
procedure Assign(Source: TPersistent); override; |
![]() |
procedure AssignValue(Source: TVRMLField); override; |
![]() |
class function VRMLTypeName: string; override; |
![]() |
property AllowedChildrenAll: boolean
read FAllowedChildrenAll write FAllowedChildrenAll; |
![]() |
property Value: TVRMLNode read FValue write SetValue; |
![]() |
property ParentNode: TVRMLNode read FParentNode; |
![]() |
procedure SaveToStreamValue(SaveProperties: TVRMLSaveToStreamProperties); override; |
![]() |
constructor CreateUndefined(const AName: string); override; |
![]() |
constructor Create(AParentNode: TVRMLNode; const AName: string; const AnAllowedChildren: array of TVRMLNodeClass); overload; |
![]() |
constructor Create(AParentNode: TVRMLNode; const AName: string; AnAllowedChildren: TVRMLNodeClassesList); overload; |
|
Constructor that takes AnAllowedChildren as TVRMNodeClassesList. Note that we copy the contents of AnAllowedChildren, not the reference. | |
![]() |
destructor Destroy; override; |
![]() |
procedure Parse(Lexer: TVRMLLexer; IsClauseAllowed: boolean); override; |
![]() |
function EqualsDefaultValue: boolean; override; |
![]() |
function Equals(SecondValue: TVRMLField; const EqualityEpsilon: Single): boolean; override; |
![]() |
procedure Assign(Source: TPersistent); override; |
![]() |
procedure AssignValue(Source: TVRMLField); override; |
![]() |
class function VRMLTypeName: string; override; |
![]() |
property AllowedChildrenAll: boolean
read FAllowedChildrenAll write FAllowedChildrenAll; |
|
This says that all children are allowed, regardless of AllowedChildren value. CreateUndefined creates always object with Other constructors set AllowedChildren to something meaningful and set this to | |
![]() |
property Value: TVRMLNode read FValue write SetValue; |
![]() |
property ParentNode: TVRMLNode read FParentNode; |