X3DPointingDeviceSensorNode : X3DSensorNode {
  SFBool   [out]    isOver
}

X3DDragSensorNode : X3DPointingDeviceSensorNode {
  SFBool   [in,out] autoOffset         TRUE
  SFVec3f  [out]    trackPoint_changed
}

X3DTouchSensorNode : X3DPointingDeviceSensorNode {
  SFTime   [out]    touchTime
}

CylinderSensor : X3DDragSensorNode {
  SFRotation [in,out] axisRotation       0 1 0 0
  SFFloat    [in,out] diskAngle          Pi/12
    range: [0,Pi/2]
  SFFloat    [in,out] maxAngle           -1
    range: [-2Pi,2Pi]
  SFFloat    [in,out] minAngle           0
    range: [-2Pi,2Pi]
  SFFloat    [in,out] offset             0
    range: (-Inf,Inf)
  SFRotation [out]    rotation_changed
}

PlaneSensor : X3DDragSensorNode {
  SFRotation [in,out] axisRotation        0 0 1 0
  SFVec2f    [in,out] maxPosition         -1 -1
    range: (-Inf,Inf)
  SFVec2f    [in,out] minPosition         0 0
    range: (-Inf,Inf)
  SFVec3f    [in,out] offset              0 0 0
    range: (-Inf,Inf)
  SFVec3f    [out]    translation_changed
}

SphereSensor : X3DDragSensorNode {
  SFRotation [in,out] offset             0 1 0 0
    range: [-1,1],(-Inf,Inf)
  SFRotation [out]    rotation_changed
}

TouchSensor : X3DTouchSensorNode {
  SFVec3f  [out]    hitNormal_changed
  SFVec3f  [out]    hitPoint_changed
  SFVec2f  [out]    hitTexCoord_changed
}
