public void RotateObject() { if (currentId == -1) { //ошибка о том, что объект не выбран errEngine.SetError("Object not selected"); } else { try { inputParams = paramPanelLogic.GetParameters(); for (int i = 0; i < childList.Count; i++) { objLogic = childList[i].GetComponent <ObjectLogic>(); if (objLogic.GetID() == currentId) { objLogic.RotateObject(inputParams); Debug.Log("Rotated " + currentId + " on " + inputParams.x + " " + inputParams.y + " " + inputParams.z); break; } } } catch (System.Exception) { errEngine.SetError("Wrong values"); } } }
void OnMouseDrag() { curScreenPoint.x = Input.mousePosition.x; curScreenPoint.y = Input.mousePosition.y; curScreenPoint.z = screenPoint.z; curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint) + offset; if (currentMode == CurrentMode.move) { switch (currentAxis) { case CurrentAxis.xAxis: transformer.x = curPosition.x; transformer.y = savedPosition.y; transformer.z = savedPosition.z; break; case CurrentAxis.yAxis: transformer.x = savedPosition.x; transformer.y = curPosition.y; transformer.z = savedPosition.z; break; case CurrentAxis.zAxis: transformer.x = savedPosition.x; transformer.y = savedPosition.y; transformer.z = curPosition.z; break; default: break; } transform.position = transformer; objLogic.CopyPosition(gameObject.transform.position - centerShift); } else if (currentMode == CurrentMode.scale) { scaleVector = attachedInstance.transform.localScale; switch (currentAxis) { case CurrentAxis.xAxis: scaleVector.x += curPosition.x - prevPosition.x; if (scaleVector.x < 0.1f) { scaleVector.x = 0.1f; } break; case CurrentAxis.yAxis: scaleVector.y += curPosition.y - prevPosition.y; if (scaleVector.y < 0.1f) { scaleVector.y = 0.1f; } break; case CurrentAxis.zAxis: scaleVector.z += curPosition.z - prevPosition.z; if (scaleVector.z < 0.1f) { scaleVector.z = 0.1f; } break; default: break; } //Debug.Log(scaleVector); objLogic.CopyScale(scaleVector); prevPosition = curPosition; } else if (currentMode == CurrentMode.rotate) { rotateVector = Vector3.zero; switch (currentAxis) { case CurrentAxis.xAxis: //двигаем мышь вверх rotateVector.x = (curPosition.y - prevPosition.y) * 10; break; case CurrentAxis.yAxis: //двигаем мышь вбок rotateVector.y = -(curPosition.x - prevPosition.x) * 10; break; case CurrentAxis.zAxis: //двигаем мышь вверх rotateVector.z = (curPosition.y - prevPosition.y) * 10; break; default: break; } //Debug.Log(rotateVector); objLogic.RotateObject(rotateVector); prevPosition = curPosition; } }