Class TAnchorNode
Unit
Declaration
type TAnchorNode = class(TAbstractGroupingNode)
Description
Load the URL when the user activates (clicks) some geometry contained within the Anchor node's children.
Hierarchy
- TObject
- TPersistent
- TX3DFileItem
- TX3DNode
- TAbstractNode
- TAbstractChildNode
- TAbstractInternalGroupingNode
- TAbstractGroupingNode
- TAnchorNode
Overview
Methods
function DirectEnumerateActive(Func: TEnumerateChildrenFunction): Pointer; override; |
|
function LoadAnchor( out NewRootNode: TX3DRootNode; out NewViewpoint: TAbstractViewpointNode; CurrentRootNode: TX3DRootNode): boolean; |
|
procedure CreateNode; override; |
|
class function ClassX3DType: string; override; |
|
procedure SetParameter(const Value: array of string); overload; |
|
procedure SetParameter(const Value: TCastleStringList); overload; |
|
procedure SetUrl(const Value: array of string); overload; |
|
procedure SetUrl(const Value: TCastleStringList); overload; |
Properties
property FdDescription: TSFString read FFdDescription; |
|
property Description: String read GetDescription write SetDescription; |
|
property FdParameter: TMFString read FFdParameter; |
|
property FdUrl: TMFString read FFdUrl; |
Description
Methods
function DirectEnumerateActive(Func: TEnumerateChildrenFunction): Pointer; override; |
|
function LoadAnchor( out NewRootNode: TX3DRootNode; out NewViewpoint: TAbstractViewpointNode; CurrentRootNode: TX3DRootNode): boolean; |
|
Load the document, world and/or viewpoint referenced by this Anchor node. This iterates over url field, for each URL trying to load referenced file. If URL specifies viewpoint name within 3D file (or current 3D world), we also search for viewpoint. If it will succeed for some URL, returns Output NewRootNode is the loaded world, or NewViewpoint is the new viewpoint that should be bound, or Note that this means that NewRootNode = nil and NewViewpoint = nil are valid output from this method, and indicate that nothing should be done. CurrentRootNode is required to detect invalid viewpoint names within current file. An explanation why this is needed follows: Invalid viewpoint names within newly loaded files are harmless, that is newly loaded file is accepted anyway and invalid viewpoint name is ignored. X3D spec says this explicitly. But what should happen for invalid viewpoint names within current file? X3D spec doesn't say anything clear here (the part before "#" is valid in this case, since it just indicates current file, so someone could argue that URL is valid, only viewpoint name is wrong and so it should be ignored...). Consider url field like [ "#NotExistingViewpoint", "#ExistingViewpoint" ]
It seems sensible that we detect "#NotExistingViewpoint" as invalid, and move on to the next URL (which may be local or not). That's why we need CurrentRootNode instance. When CurrentRootNode = nil, we understand that no file is currently loaded (at least, you don't have it's X3D graph). It means that any "#Viewpoint" within current model is considered invalid. |
procedure CreateNode; override; |
|
class function ClassX3DType: string; override; |
|
procedure SetParameter(const Value: array of string); overload; |
|
procedure SetParameter(const Value: TCastleStringList); overload; |
|
procedure SetUrl(const Value: array of string); overload; |
|
procedure SetUrl(const Value: TCastleStringList); overload; |
|
Properties
property FdDescription: TSFString read FFdDescription; |
|
Internal wrapper for property Description. This wrapper API may change, we advise to access simpler Description instead. |
property Description: String read GetDescription write SetDescription; |
|
property FdParameter: TMFString read FFdParameter; |
|
Internal wrapper for property |
property FdUrl: TMFString read FFdUrl; |
|
Internal wrapper for property |
Generated by PasDoc 0.16.0.