Пример #1
0
 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");
         }
     }
 }
Пример #2
0
    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;
        }
    }