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); } }
/// <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); } }
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); } }