// ----------------------- /// Get multi-touch drag velocity vector. // ------------------------ public Vector2 GetMultiDragVel( TouchCoordSys cs /* = TouchCoordSys.SCREEN_PX */ ///< Coordinate system. ) { return TransformPos(this.multiDragVel, cs, true); }
// -------------------------- /// Get touch start position // --------------------------- public Vector2 GetStartPos( int fingerId, ///< Finger ID (0 or 1) TouchCoordSys cs /* = TouchCoordSys.SCREEN_PX */ ///< Coordinate system ) { Finger finger = ((fingerId == 1) ? this.fingerB : this.fingerA); return this.TransformPos(finger.startPos, cs, false); }
/// \} // --------------------------- /// \name Touch Drag State /// \{ // --------------------------- // -------------------------- /// Get touch total drag vector of specified finger. // --------------------------- public Vector2 GetDragVec( int fingerId, ///< Finger ID (0 or 1) TouchCoordSys cs /* = TouchCoordSys.SCREEN_PX */, ///< Coordinate system bool raw /* = false */ ///< When not in raw mode and drag didn't passed the threshold, zero vector will be returned. ) { Finger finger = ((fingerId == 1) ? this.fingerB : this.fingerA); if (!raw && !finger.moved) return Vector2.zero; return this.TransformPos((finger.posCur - finger.startPos), cs, true); }
// --------------- private Vector2 TransformPos( Vector2 screenPosPx, TouchCoordSys posType, bool deltaMode) { Vector2 v = screenPosPx; if (!deltaMode && ( (posType == TouchCoordSys.LOCAL_CM) || (posType == TouchCoordSys.LOCAL_INCH) || (posType == TouchCoordSys.LOCAL_NORMALIZED) || (posType == TouchCoordSys.LOCAL_PX)) ) { v.x -= this.screenRectPx.xMin; v.y -= this.screenRectPx.yMin; } switch (posType) { case TouchCoordSys.SCREEN_PX : case TouchCoordSys.LOCAL_PX : return v; case TouchCoordSys.LOCAL_CM : case TouchCoordSys.SCREEN_CM : return (v / this.joy.GetDPCM()); case TouchCoordSys.LOCAL_INCH : case TouchCoordSys.SCREEN_INCH : return (v / this.joy.GetDPI()); case TouchCoordSys.SCREEN_NORMALIZED : v.x /= this.joy.GetScreenWidth(); v.y /= this.joy.GetScreenHeight(); return v; case TouchCoordSys.LOCAL_NORMALIZED : v.x /= this.screenRectPx.width; v.y /= this.screenRectPx.height; return v; } return v; }
// --------------- public Vector2 GetTapPos(TouchCoordSys cs) { //return TransformPos(this.lastTapPos, cs, false); return this.zone.TransformPos(this.lastTapPos, cs, false); }
// --------------- /// Get released multi-finger touch final finger distance. // --------------- public float GetReleasedPinchEndDist( TouchCoordSys cs /* = TouchCoordSys.SCREEN_PX */ ///< Coordinate system. ) { return (this.TransformPos(this.endedPinchDistEnd, cs)); }
// --------------- /// Get released multi-finger pinch distance velocity. // --------------- public float GetReleasedPinchDistVel( TouchCoordSys cs /* = TouchCoordSys.SCREEN_PX */, ///< Coordinate system. bool raw /* = false */ ///< When not in raw mode, zero will be returned if released pinch didn't passed the threshold. ) { if (!raw && !this.endedPinchMoved) return 0; return (this.TransformPos(this.endedPinchDistVel, cs)); }
// --------------- /// Get last two-finger tap's position. // ------------------ public Vector2 GetMultiTapPos( TouchCoordSys cs /* = TouchCoordSys.SCREEN_PX */ ///< Coordinate system ) { return TransformPos(this.lastMultiTapPos, cs, false); }
// --------------------- /// Get released unified-touch start position. // --------------------- public Vector2 GetReleasedUniStartPos( TouchCoordSys cs /* = TouchCoordSys.SCREEN_PX */ ///< Coordinate system ) { return TransformPos(this.endedUniPosStart, cs, false); }
// -------------- /// Shortcut for GetPinchDistDelta(cs, true) // -------------- public float GetPinchDistDeltaRaw( TouchCoordSys cs ///< Coordinate system. ) { return this.GetPinchDistDelta(cs, true); }
// --------------- /// Get last single-finger tap's position. // ------------------ public Vector2 GetTapPos( TouchCoordSys cs /* = TouchCoordSys.SCREEN_PX */ ///< Coordinate system ) { return this.fingerA.GetTapPos(cs); }
// -------------- /// Get finger distance delta relative to last update. // -------------- public float GetPinchDistDelta( TouchCoordSys cs /* = TouchCoordSys.SCREEN_PX */, ///< Coordinate system. bool raw /* = false */ ///< When not in raw mode, value of 0 will be returned until pinch moves. ) { if (!this.multiCur || (!raw && !this.pinchMoved)) return 0; return this.TransformPos( (this.pinchCurDist - (!raw && this.pinchJustMoved ? this.pinchDistStart : this.pinchPrevDist)), cs); }
// -------------- /// Shortcut for GetPinchDist(cs, false) // -------------- public float GetPinchDist( TouchCoordSys cs ///< Coordinate system. ) { return this.GetPinchDist(cs, false); }
// -------------- /// Get finger distance. // -------------- public float GetPinchDist( TouchCoordSys cs /* = TouchCoordSys.SCREEN_PX */, ///< Coordinate system. bool raw /* = false */ ///< When not in raw mode, value of 0 will be returned until pinch moves. ) { if (!this.multiCur || (!raw && !this.pinchMoved)) return 0; return TransformPos(this.pinchCurDist, cs); }
// ----------------------- /// Get released multi-touch drag velocity vector. // ------------------------ public Vector2 GetReleasedMultiDragVel( TouchCoordSys cs /* = TouchCoordSys.SCREEN_PX */ , ///< Coordinate system bool raw /* = false */ ///< When not in raw mode, zero-vector will be returned if released drag didn't passed the threshold. ) { if (!raw && !this.endedMultiMoved) return Vector2.zero; return TransformPos(this.endedMultiDragVel, cs, true); }
// --------------------- /// Get released touch end position. // --------------------- public Vector2 GetReleasedEndPos( int fingerId, ///< Finger ID (0 or 1) TouchCoordSys cs /* = TouchCoordSys.SCREEN_PX */ ///< Coordinate system ) { Finger finger = ((fingerId == 1) ? this.fingerB : this.fingerA); return TransformPos(finger.endedPosEnd, cs, false); }
// ----------------------- /// Shortcut for GetReleasedMultiDragVel(cs, true) // ------------------------ public Vector2 GetReleasedMultiDragVelRaw( TouchCoordSys cs ///< Coordinate system ) { return this.GetReleasedMultiDragVel(cs, true); }
// --------------------- /// Get released multi-touch end position. // --------------------- public Vector2 GetReleasedMultiEndPos( TouchCoordSys cs /* = TouchCoordSys.SCREEN_PX */ ///< Coordinate system ) { return TransformPos(this.endedMultiPosEnd, cs, false); }
// ------------- /// Get most extreme finger distance difference since start. // ------------- public float GetReleasedPinchExtremeDistDiff( TouchCoordSys cs = TouchCoordSys.SCREEN_PX ///< Coordinate system. ) { return (this.TransformPos(this.endedPinchExtremeDistDelta, cs)); }
/// \endcond #if CF_EXTREME_QUERY_FUNCTIONS // ----------------------- /// Get the most extreme drag distance of last released touch. // ------------------------ public float GetReleasedExtremeDist( int fingerId, ///< Finger ID (0 or 1) TouchCoordSys cs = TouchCoordSys.SCREEN_PX ///< Coordinate system ) { Finger finger = ((fingerId == 1) ? this.fingerB : this.fingerA); return TransformPos(finger.endedExtremeDragDist, cs); }
// --------------- /// Shortcut for GetReleasedPinchDistVel(cs, true); // --------------- public float GetReleasedPinchDistVelRaw( TouchCoordSys cs ///< Coordinate system. ) { return this.GetReleasedPinchDistVel(cs, true); }
// ----------------------- /// Get the most extreme drag along each axis of last released touch. // ------------------------ public Vector2 GetReleasedExtremeVec( int fingerId, ///< Finger ID (0 or 1) TouchCoordSys cs = TouchCoordSys.SCREEN_PX ///< Coordinate system ) { Finger finger = ((fingerId == 1) ? this.fingerB : this.fingerA); return TransformPos(finger.endedExtremeDragVec, cs, true); }
// --------------- private float TransformPosY( float screenPosPx, TouchCoordSys posType) { float v = screenPosPx; switch (posType) { case TouchCoordSys.SCREEN_PX : case TouchCoordSys.LOCAL_PX : return v; case TouchCoordSys.LOCAL_CM : case TouchCoordSys.SCREEN_CM : return (v / this.joy.GetDPCM()); case TouchCoordSys.LOCAL_INCH : case TouchCoordSys.SCREEN_INCH : return (v / this.joy.GetDPI()); case TouchCoordSys.SCREEN_NORMALIZED : v /= this.joy.GetScreenHeight(); return v; case TouchCoordSys.LOCAL_NORMALIZED : v /= this.screenRectPx.height; return v; } return v; }
/// \} // --------------------------- /// \name Released Touch's Drag Velocity /// \{ // --------------------------- // ----------------------- /// Get released touch drag velocity vector. // ------------------------ public Vector2 GetReleasedDragVel( int fingerId, ///< Finger ID (0 or 1) TouchCoordSys cs /* = TouchCoordSys.SCREEN_PX */,///< Coordinate system bool raw /* = false */ ///< When not in raw mode, zero-vector will be returned if released drag didn't passed the threshold. ) { Finger finger = ((fingerId == 1) ? this.fingerB : this.fingerA); if (!raw && !finger.endedMoved) return Vector2.zero; return TransformPos(finger.endedDragVel, cs, true); }
// -------------------------- /// Get unified-touch current position // --------------------------- public Vector2 GetUniPos( TouchCoordSys cs /* = TouchCoordSys.SCREEN_PX */ ///< Coordinate system ) { return this.TransformPos(this.uniPosCur, cs, false); }
// ----------------------- /// Shortcut for GetReleasedDragVel(fingerId, cs, true) // ------------------------ public Vector2 GetReleasedDragVelRaw( int fingerId, ///< Finger ID (0 or 1) TouchCoordSys cs ///< Coordinate system ) { return this.GetReleasedDragVel(fingerId, cs, true); }
// -------------------------- /// Get multi-touch start position // --------------------------- public Vector2 GetMultiStartPos( TouchCoordSys cs /* = TouchCoordSys.SCREEN_PX */ ///< Coordinate system ) { return this.TransformPos(this.multiPosStart, cs, false); }
// ----------------------- /// Shortcut for GetReleasedUniDragVel(cs, false) // ------------------------ public Vector2 GetReleasedUniDragVel( TouchCoordSys cs ///< Coordinate system ) { return this.GetReleasedUniDragVel(cs, false); }
// -------------------------- /// Shortcut for GetDragVec(fingerId, cs, false) // --------------------------- public Vector2 GetDragVec( int fingerId, ///< Finger ID (0 or 1) TouchCoordSys cs ///< Coordinate system ) { return this.GetDragVec(fingerId, cs, false); }
/// \} // --------------------------- /// \name Touch Drag Velocity /// \{ // --------------------------- // ----------------------- /// Get drag velocity vector of specified finger. // ------------------------ public Vector2 GetDragVel( int fingerId, ///< Finger ID (0 or 1) TouchCoordSys cs /* = TouchCoordSys.SCREEN_PX */ ///< Coordinate system ) { Finger finger = ((fingerId == 1) ? this.fingerB : this.fingerA); return TransformPos(finger.dragVel, cs, true); }