protected override bool GetPoseImpl(byte device, byte control, ref Vector3 position, ref Quaternion rotation)
    {
        if (owner.isBoundToClient == false)
        {
            return(false);
        }

        AirVRVector3D pos = new AirVRVector3D();
        AirVRVector4D rot = new AirVRVector4D();

        if (ocs_GetInputPose(owner.playerID, device, control, ref pos, ref rot) == false)
        {
            return(false);
        }

        position = pos.toVector3();
        rotation = rot.toQuaternion();
        return(true);
    }
 private static extern bool ocs_GetInputPose(int playerID, byte device, byte control, ref AirVRVector3D position, ref AirVRVector4D rotation);
 private static extern void ocs_PendInputRaycastHit(int playerID, byte device, byte control, AirVRVector3D origin, AirVRVector3D hitPosition, AirVRVector3D hitNormal);