void Update()
    {
        updateVirtualWorldBoxCenter();
        ProcessAllTriggers();

        //Start Event

        if (!_actionTriggered && SupportedTriggers[0].Success && cursor.mode == cursor_handle.MODE.DEFAULT)
        {
            _actionTriggered = true;
            cursor.mode      = cursor_handle.MODE.ZOOM;
            ((TranslationTrigger)SupportedTriggers[1]).Restart = true;
        }

        //Stop Event
        if (_actionTriggered && SupportedTriggers[2].Success)
        {
            _actionTriggered = false;
            cursor.mode      = cursor_handle.MODE.DEFAULT;
            lastTranslate    = Vector3.zero;
        }

        if (!_actionTriggered)
        {
            return;
        }

        TranslationTrigger trgr = (TranslationTrigger)SupportedTriggers[1];


        if (trgr.Success)
        {
            Vector3 translate = trgr.Translation;
            translate.x = translate.x * Sensitivity.x;
            translate.y = translate.y * Sensitivity.y;
            translate.z = translate.z * Sensitivity.z;

            // smoothing:
            if (SmoothingFactor > 0)
            {
                translate = _translationSmoothingUtility.ProcessSmoothing(SmoothingType, SmoothingFactor, translate);
            }

//			Debug.Log (translate.x);

            // Our code
            if (translate.x < 1 && translate.x > -1)
            {
                translate.x = lastTranslate.x;
            }
            if (translate.z < 1 && translate.z > -1)
            {
                translate.z = lastTranslate.z;
            }
            lastTranslate = translate;

            Vector3 move = (translate.x * Vector3.ProjectOnPlane(transform.right, Vector3.up)) +
                           (translate.z * Vector3.ProjectOnPlane(transform.forward, Vector3.up));

            Vector3 vec = this.gameObject.transform.localPosition + translate;
//			Vector3 vec = this.gameObject.transform.localPosition + move;

            // Be sure we have valid values:
            if (VirtualWorldBoxDimensions.x < 0)
            {
                VirtualWorldBoxDimensions.x = 0;
            }

            float left  = VirtualWorldBoxCenter.x - (VirtualWorldBoxDimensions.x) / 2;
            float right = VirtualWorldBoxCenter.x + (VirtualWorldBoxDimensions.x) / 2;

            if (left > this.gameObject.transform.localPosition.x)
            {
                vec.x = left;
            }

            if (right < this.gameObject.transform.localPosition.x)
            {
                vec.x = right;
            }

            if (VirtualWorldBoxDimensions.y < 0)
            {
                VirtualWorldBoxDimensions.y = 0;
            }

            float top    = VirtualWorldBoxCenter.y - (VirtualWorldBoxDimensions.y) / 2;
            float bottom = VirtualWorldBoxCenter.y + (VirtualWorldBoxDimensions.y) / 2;

            if (top > this.gameObject.transform.localPosition.y)
            {
                vec.y = top;
            }

            if (bottom < this.gameObject.transform.localPosition.y)
            {
                vec.y = bottom;
            }

            if (VirtualWorldBoxDimensions.z < 0)
            {
                VirtualWorldBoxDimensions.z = 0;
            }

            float back  = VirtualWorldBoxCenter.z - (VirtualWorldBoxDimensions.z) / 2;
            float front = VirtualWorldBoxCenter.z + (VirtualWorldBoxDimensions.z) / 2;

            if (back > this.gameObject.transform.localPosition.z)
            {
                vec.z = back;
            }

            if (front < this.gameObject.transform.localPosition.z)
            {
                vec.z = front;
            }

            if (this.gameObject.transform.parent != null)
            {
                vec = this.gameObject.transform.parent.transform.TransformPoint(vec);
            }

            float _scaleX = translate.x;

            if ((Camera.main.transform.position.y < 5.0f && _scaleX >= 0) || (Camera.main.transform.position.y > zoomOut && _scaleX <= 0))
            {
                return;
            }

            // Get mouse displacement vector from original to current position
            // Vector3 pos = Camera.main.ScreenToViewportPoint(Input.mousePosition - mouseOrigin);
            // Vector3 move = pos.y * zoomSpeed * transform.forward;
            Vector3 movex  = _scaleX * transform.forward;
            float   factor = 100.0f;
//			Debug.Log (_scaleX);
            // Set Drag
            rigidbody.drag = zoomDrag;

            // Zoom
            rigidbody.AddForce(movex * factor, ForceMode.Acceleration);


            //this.gameObject.rigidbody.MovePosition(vec);
        }
    }
Beispiel #2
0
    /// <summary>
    /// Update is called once per frame.
    /// </summary>
    void Update()
    {
        updateVirtualWorldBoxCenter();

        ProcessAllTriggers();

        //Start Event
        if (!_actionTriggered && SupportedTriggers[0].Success)
        {
            _actionTriggered = true;

            ((TranslationTrigger)SupportedTriggers[1]).Restart = true;
        }

        //Stop Event
        if (_actionTriggered && SupportedTriggers[2].Success)
        {
            _actionTriggered = false;
        }

        if (!_actionTriggered)
        {
            return;
        }

        TranslationTrigger trgr = (TranslationTrigger)SupportedTriggers[1];

        if (trgr.Success)
        {
            Vector3 translate = trgr.Translation;
            translate.x = translate.x * Sensitivity.x;
            translate.y = translate.y * Sensitivity.y;
            translate.z = translate.z * Sensitivity.z;

            // smoothing:
            if (SmoothingFactor > 0)
            {
                translate = _translationSmoothingUtility.ProcessSmoothing(SmoothingType, SmoothingFactor, translate);
            }

            Vector3 vec = this.gameObject.transform.localPosition + translate;

            // Be sure we have valid values:
            if (VirtualWorldBoxDimensions.x < 0)
            {
                VirtualWorldBoxDimensions.x = 0;
            }

            float left  = VirtualWorldBoxCenter.x - (VirtualWorldBoxDimensions.x) / 2;
            float right = VirtualWorldBoxCenter.x + (VirtualWorldBoxDimensions.x) / 2;

            if (left > this.gameObject.transform.localPosition.x)
            {
                vec.x = left;
            }

            if (right < this.gameObject.transform.localPosition.x)
            {
                vec.x = right;
            }

            if (VirtualWorldBoxDimensions.y < 0)
            {
                VirtualWorldBoxDimensions.y = 0;
            }

            float top    = VirtualWorldBoxCenter.y - (VirtualWorldBoxDimensions.y) / 2;
            float bottom = VirtualWorldBoxCenter.y + (VirtualWorldBoxDimensions.y) / 2;

            if (top > this.gameObject.transform.localPosition.y)
            {
                vec.y = top;
            }

            if (bottom < this.gameObject.transform.localPosition.y)
            {
                vec.y = bottom;
            }

            if (VirtualWorldBoxDimensions.z < 0)
            {
                VirtualWorldBoxDimensions.z = 0;
            }

            float back  = VirtualWorldBoxCenter.z - (VirtualWorldBoxDimensions.z) / 2;
            float front = VirtualWorldBoxCenter.z + (VirtualWorldBoxDimensions.z) / 2;

            if (back > this.gameObject.transform.localPosition.z)
            {
                vec.z = back;
            }

            if (front < this.gameObject.transform.localPosition.z)
            {
                vec.z = front;
            }

            if (this.gameObject.transform.parent != null)
            {
                vec = this.gameObject.transform.parent.transform.TransformPoint(vec);
            }

            this.gameObject.GetComponent <Rigidbody>().MovePosition(vec);
        }
    }
Beispiel #3
0
    void Update()
    {
        updateVirtualWorldBoxCenter();
        ProcessAllTriggers();

        //Start Event

        if (!_actionTriggered && SupportedTriggers[0].Success && cursor.mode == cursor_handle.MODE.DEFAULT)
        {
            _actionTriggered = true;
            cursor.mode      = cursor_handle.MODE.PAN;
            ((TranslationTrigger)SupportedTriggers[1]).Restart = true;
        }

        //Stop Event
        if (_actionTriggered && SupportedTriggers[2].Success)
        {
            _actionTriggered = false;
            cursor.mode      = cursor_handle.MODE.DEFAULT;
            lastTranslate    = Vector3.zero;
        }

        if (!_actionTriggered)
        {
            return;
        }

        TranslationTrigger trgr = (TranslationTrigger)SupportedTriggers[1];


        if (trgr.Success)
        {
            Vector3 translate = trgr.Translation;
            translate.x = translate.x * Sensitivity.x;
            translate.y = translate.y * Sensitivity.y;
            translate.z = translate.z * Sensitivity.z;

            // smoothing:
            if (SmoothingFactor > 0)
            {
                translate = _translationSmoothingUtility.ProcessSmoothing(SmoothingType, SmoothingFactor, translate);
            }

            //Debug.Log (translate.x);

            // Our code
            if (translate.x < 1 && translate.x > -1)
            {
                translate.x = lastTranslate.x;
            }
            if (translate.z < 1 && translate.z > -1)
            {
                translate.z = lastTranslate.z;
            }
            lastTranslate = translate;

            Vector3 move = (translate.x * Vector3.ProjectOnPlane(transform.right, Vector3.up)) +
                           (translate.z * Vector3.ProjectOnPlane(transform.forward, Vector3.up));

//			Vector3 vec = this.gameObject.transform.localPosition + translate;
            Vector3 vec = this.gameObject.transform.localPosition + move;

            // Be sure we have valid values:
            if (VirtualWorldBoxDimensions.x < 0)
            {
                VirtualWorldBoxDimensions.x = 0;
            }

            float left  = VirtualWorldBoxCenter.x - (VirtualWorldBoxDimensions.x) / 2;
            float right = VirtualWorldBoxCenter.x + (VirtualWorldBoxDimensions.x) / 2;

            // Our code
            Vector3 limits = (left * Vector3.ProjectOnPlane(transform.right, Vector3.up)) +
                             (right * Vector3.ProjectOnPlane(transform.forward, Vector3.up));


            if (left > this.gameObject.transform.localPosition.x)
            {
                vec.x = left;
            }

            if (right < this.gameObject.transform.localPosition.x)
            {
                vec.x = right;
            }

            if (VirtualWorldBoxDimensions.y < 0)
            {
                VirtualWorldBoxDimensions.y = 0;
            }

            float top    = VirtualWorldBoxCenter.y - (VirtualWorldBoxDimensions.y) / 2;
            float bottom = VirtualWorldBoxCenter.y + (VirtualWorldBoxDimensions.y) / 2;

            if (top > this.gameObject.transform.localPosition.y)
            {
                vec.y = top;
            }

            if (bottom < this.gameObject.transform.localPosition.y)
            {
                vec.y = bottom;
            }

            if (VirtualWorldBoxDimensions.z < 0)
            {
                VirtualWorldBoxDimensions.z = 0;
            }

            float back  = VirtualWorldBoxCenter.z - (VirtualWorldBoxDimensions.z) / 2;
            float front = VirtualWorldBoxCenter.z + (VirtualWorldBoxDimensions.z) / 2;

            if (back > this.gameObject.transform.localPosition.z)
            {
                vec.z = back;
            }

            if (front < this.gameObject.transform.localPosition.z)
            {
                vec.z = front;
            }

            if (this.gameObject.transform.parent != null)
            {
                vec = this.gameObject.transform.parent.transform.TransformPoint(vec);
            }

            this.gameObject.rigidbody.MovePosition(vec);
        }
    }