Esempio n. 1
0
    private Vector3 GetScale(IPositionGesture gesture)
    {
        var gesturePosLeft  = gesture.GetGesturePosition(Hand.Left);
        var gesturePosRight = gesture.GetGesturePosition(Hand.Right);

        var MinScale = 0.001f;
        var MaxScale = 1;
        var scale    = gesturePosLeft - gesturePosRight;
        var scaleX   = Mathf.Clamp(Mathf.Abs(scale.x), MinScale, MaxScale) / 10f;
        var scaleY   = 1;
        var scaleZ   = Mathf.Clamp(Mathf.Abs(scale.y), MinScale, MaxScale) / 10f;

        return(new Vector3(scaleX, scaleY, scaleZ));
    }
Esempio n. 2
0
    private Vector3 GetScale(IPositionGesture gesture)
    {
        var gesturePosLeft = gesture.GetGesturePosition(Hand.Left);
        var gesturePosRight = gesture.GetGesturePosition(Hand.Right);

        var MinScale = 0.001f;
        var MaxScale = 1;
        var scale = gesturePosLeft - gesturePosRight;
        var scaleX = Mathf.Clamp(Mathf.Abs(scale.x), MinScale, MaxScale) / 10f;
        var scaleY = 1;
        var scaleZ = Mathf.Clamp(Mathf.Abs(scale.y), MinScale, MaxScale) / 10f;

        return new Vector3(scaleX, scaleY, scaleZ);
    }
Esempio n. 3
0
    private Vector3 GetRotation(IPositionGesture gesture)
    {
        var gesturePosLeft = gesture.GetGesturePosition(Hand.Left);
        var gesturePosRight = gesture.GetGesturePosition(Hand.Right);

        var delta = gesturePosRight - gesturePosLeft;
        var rad = Mathf.Atan2(delta.z, delta.x);
        var deg = rad * (180f / Mathf.PI);

        if (deg < -90)
            deg += 180;
        if (deg > 90)
            deg -= 180;

        return new Vector3(270, -deg, 0);
    }
Esempio n. 4
0
    private Quaternion GetRotation(IPositionGesture gesture)
    {
        // rotation only supported for cubes, since we use the 3d position for scale otherwise
        if (!UseUniformScale)
        {
            return(Quaternion.identity);
        }

        var defaultVector = Vector3.one;
        var gestureVector = gesture.GetGesturePosition(Hand.Right) - gesture.GetGesturePosition(Hand.Left);

        var rotation = Quaternion.FromToRotation(defaultVector, gestureVector).eulerAngles;

        // rotate a bit back so that fingers hold the X-axis of the cube, rather than the corners
        rotation.x  = 0;
        rotation.y -= 45f;
        rotation.z -= 45f;

        return(Quaternion.Euler(rotation));
    }
Esempio n. 5
0
    private Vector3 GetRotation(IPositionGesture gesture)
    {
        var gesturePosLeft  = gesture.GetGesturePosition(Hand.Left);
        var gesturePosRight = gesture.GetGesturePosition(Hand.Right);

        var delta = gesturePosRight - gesturePosLeft;
        var rad   = Mathf.Atan2(delta.z, delta.x);
        var deg   = rad * (180f / Mathf.PI);

        if (deg < -90)
        {
            deg += 180;
        }
        if (deg > 90)
        {
            deg -= 180;
        }

        return(new Vector3(270, -deg, 0));
    }
Esempio n. 6
0
    private Vector3 GetScale(IPositionGesture gesture)
    {
        var gesturePosLeft  = gesture.GetGesturePosition(Hand.Left);
        var gesturePosRight = gesture.GetGesturePosition(Hand.Right);


        if (UseUniformScale)
        {
            var scale = (gesturePosLeft - gesturePosRight).magnitude / 2;

            scale = Mathf.Clamp(scale, MinScale, MaxScale);
            return(new Vector3(scale, scale, scale));
        }
        else
        {
            var scale  = gesturePosLeft - gesturePosRight;
            var scaleX = Mathf.Clamp(Mathf.Abs(scale.x) - 0.025f, MinScale, MaxScale);
            var scaleY = Mathf.Clamp(Mathf.Abs(scale.y), MinScale, MaxScale);
            var scaleZ = Mathf.Clamp(Mathf.Abs(scale.z), MinScale, MaxScale);

            return(new Vector3(scaleX, scaleY, scaleZ));
        }
    }
Esempio n. 7
0
    private Vector3 GetScale(IPositionGesture gesture)
    {
        var gesturePosLeft = gesture.GetGesturePosition(Hand.Left);
        var gesturePosRight = gesture.GetGesturePosition(Hand.Right);

        if (UseUniformScale)
        {
            var scale = (gesturePosLeft - gesturePosRight).magnitude / 2;

            scale = Mathf.Clamp(scale, MinScale, MaxScale);
            return new Vector3(scale, scale, scale);
        }
        else
        {
            var scale = gesturePosLeft - gesturePosRight;
            var scaleX = Mathf.Clamp(Mathf.Abs(scale.x) - 0.025f, MinScale, MaxScale);
            var scaleY = Mathf.Clamp(Mathf.Abs(scale.y), MinScale, MaxScale);
            var scaleZ = Mathf.Clamp(Mathf.Abs(scale.z), MinScale, MaxScale);

            return new Vector3(scaleX, scaleY, scaleZ);
        }
    }
Esempio n. 8
0
    private Quaternion GetRotation(IPositionGesture gesture)
    {
        // rotation only supported for cubes, since we use the 3d position for scale otherwise
        if (!UseUniformScale)
        {
            return Quaternion.identity;
        }

        var defaultVector = Vector3.one;
        var gestureVector = gesture.GetGesturePosition(Hand.Right) - gesture.GetGesturePosition(Hand.Left);

        var rotation = Quaternion.FromToRotation(defaultVector, gestureVector).eulerAngles;

        // rotate a bit back so that fingers hold the X-axis of the cube, rather than the corners
        rotation.x = 0;
        rotation.y -= 45f;
        rotation.z -= 45f;

        return Quaternion.Euler(rotation);
    }