X3DTimeDependentNode : X3DChildNode {
  SFBool  [in,out] loop         FALSE
  SFTime  [in,out] pauseTime    0
    range: (-Inf,Inf)
    change: chTimeStopStart
  SFTime  [in,out] resumeTime   0
    range: (-Inf,Inf)
    change: chTimeStopStart
  SFTime  [in,out] startTime    0
    range: (-Inf,Inf)
    change: chTimeStopStart
  SFTime  [in,out] stopTime     0
    range: (-Inf,Inf)
    change: chTimeStopStart
  SFTime  [out]    elapsedTime
  SFBool  [out]    isActive
  SFBool  [out]    isPaused
}

TimeSensor : X3DTimeDependentNode, X3DSensorNode {
  SFTime  [in,out] cycleInterval    1
    range: (0,Inf)
  SFTime  [out]    cycleTime
  SFFloat [out]    fraction_changed
  SFTime  [out]    time
  # "enabled" inherited from X3DSensorNode.
  # Needs to be mentioned here, as everything inherited from non-1st ancestor
  # (from interface, not class, in Object Pascal implementation)
  # needs to be mentioned, to be correctly processed by x3d-nodes-to-pascal.lpr.
  SFBool [in,out] enabled  TRUE
  # CGE extension, see https://castle-engine.io/x3d_implementation_time_extensions.php
  SFBool [in,out] fractionIncreasing TRUE
  # CGE extension, see https://castle-engine.io/x3d_implementation_time_extensions.php
  SFBool [] detectAffectedFields TRUE
}
