X3DNetworkSensorNode : X3DSensorNode {
}

X3DUrlObject {
  MFString [in,out] url []
    range: [urn]
}

# TODO: Adding additional ancestors, like X3DUrlObject below,
# has no effect on the code generated by "x3d-nodes-to-pascal" right now.
# One has to manually do
#   AddFunctionality(TUrlFunctionality.Create(Self));
# in the constructor of the node.
# Future "x3d-nodes-to-pascal" may generate proper code for this automatically.

Anchor : X3DGroupingNode, X3DUrlObject {
  SFString [in,out] description    ""
    change: chNone
  MFString [in,out] parameter      []
  MFString [in,out] url            []
    range: [url or urn]
}

Inline : X3DChildNode, X3DBoundedObject, X3DUrlObject {
  SFBool   [in,out] load       TRUE
  MFString [in,out] url        []
    range: [url or urn]
  SFVec3f  []       bboxCenter 0 0 0
    range: (-Inf,Inf)
  SFVec3f  []       bboxSize   -1 -1 -1
    range: [0,Inf) or -1 -1 -1
}

InlineLoadControl : Inline {
  MFNode  [out]  children
}

LoadSensor : X3DNetworkSensorNode {
  SFTime  [in,out] timeOut   0
  MFNode  [in,out] watchList []
    range: X3DUrlObject
  SFBool  [out]    isLoaded
  SFTime  [out]    loadTime
  SFFloat [out]    progress
}
