TouchScript.cs 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. using Assets.Scripts.Models;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using UnityEngine;
  5. using UnityEngine.EventSystems;
  6. using UnityEngine.UI;
  7. /// <summary>
  8. /// Взаимодействие с GameObject.
  9. /// Перемещение, поворот, пропорциональное изменение размера.
  10. /// </summary>
  11. public class TouchScript : MonoBehaviour
  12. {
  13. // назначается в StagesEditorController при редактировании курсора-маркера
  14. public enum Tools { Move = 0, Rotate = 1, Scale = 2, Rectangle = 3 }
  15. public static Tools tools = Tools.Scale;
  16. public bool Resize = true;
  17. // Start is called before the first frame update
  18. void Start()
  19. {
  20. }
  21. void Update()
  22. {
  23. if (Input.touchCount > 0)
  24. {
  25. Debug.Log("Global touch!");
  26. }
  27. }
  28. private Vector3 screenPoint;
  29. private Vector3 offset;
  30. private Vector3 curScreenPoint;
  31. private Vector3 curPosition;
  32. public float horizontalSpeed = 1.0F;
  33. public float verticalSpeed = 1.0F;
  34. private Vector3 scaleChange = new Vector3(-0.001f, -0.001f, -0.001f);
  35. private Vector3 positionChange = new Vector3(0.0f, -0.0005f, 0.0f);
  36. private bool increase = false;
  37. public GameObject panel;
  38. float deltaScale = 0.001f;
  39. // Нажатие
  40. void OnMouseDown()
  41. {
  42. //Debug.Log(StagesEditorController.indexCursor);
  43. if (Resize && !EventSystem.current.IsPointerOverGameObject())
  44. switch (tools)
  45. {
  46. case Tools.Move:
  47. screenPoint = Camera.main.WorldToScreenPoint(gameObject.transform.position);
  48. offset = gameObject.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z));
  49. //panel.transform.position = transform.position;
  50. break;
  51. case Tools.Rotate:
  52. //Debug.Log("MouseDown: Rotate");
  53. break;
  54. case Tools.Scale:
  55. increase = !increase;
  56. //Debug.Log("MouseDown: Scale");
  57. break;
  58. //case Tools.Rectangle:
  59. // Debug.Log("MouseDown: Rectangle");
  60. // break;
  61. }
  62. }
  63. // Перемещение
  64. void OnMouseDrag()
  65. {
  66. float h = horizontalSpeed * Input.GetAxis("Mouse X");
  67. float v = verticalSpeed * Input.GetAxis("Mouse Y");
  68. if (Resize && !EventSystem.current.IsPointerOverGameObject())
  69. switch (tools)
  70. {
  71. case Tools.Move:
  72. curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
  73. curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint) + offset;
  74. transform.position = curPosition;
  75. panel.transform.position = transform.position;
  76. break;
  77. case Tools.Rotate:
  78. //Debug.Log("MouseDrag: Rotate");
  79. //var rotation_x = StagesEditorController.sRotation.transform.GetChild(0).gameObject.transform;
  80. //var rotation_y = StagesEditorController.sRotation.transform.GetChild(1).gameObject.transform;
  81. //var rotation_z = StagesEditorController.sRotation.transform.GetChild(2).gameObject.transform;
  82. //if (rotation_x == transform)
  83. //{
  84. // StagesEditorController.selectCursor.panel_cursor.transform.Rotate(0, 0, h + v); // h v 0
  85. //}
  86. //if (rotation_y == transform)
  87. //{
  88. // StagesEditorController.selectCursor.panel_cursor.transform.Rotate(0, h + v, 0);
  89. //}
  90. //if (rotation_z == transform)
  91. //{
  92. // StagesEditorController.selectCursor.panel_cursor.transform.Rotate(-(h + v), 0, 0);
  93. //}
  94. //var Rotation = transform.parent.GetChild(2).gameObject;
  95. //Rotation.SetActive(true);
  96. // Вращение по всем осям
  97. //Debug.Log("y=" +Input.GetAxis("Mouse Y") + " x="+ Input.GetAxis("Mouse X"));
  98. //transform.localScale = new Vector3(mouse_axis_y + Input.GetAxis("Mouse Y"), 1f, mouse_axis_x + Input.GetAxis("Mouse X")) * 10f;
  99. //StagesEditorController.selectCursor.panel_cursor.transform.Rotate(h, v, 0);
  100. //StagesEditorController.ToolsValue(tools, StagesEditorController.selectCursor.panel_cursor.transform);
  101. break;
  102. case Tools.Scale:
  103. //var scale = transform.localScale;
  104. //transform.localScale = new Vector3(scale.x + (h + v), scale.z + (h + v), scale.z);
  105. if (EditorController.instance.ToggleScalePanel.isOn)
  106. {
  107. var proportions = transform.transform.localScale.z / transform.transform.localScale.x;
  108. var z = proportions * deltaScale;
  109. //transform.transform.position = new Vector3(scale.x *5, 0, scale.z *5);
  110. if (increase)
  111. {
  112. scaleChange = new Vector3(deltaScale, 0, z);
  113. positionChange = new Vector3(deltaScale * 5, 0, z * 5);
  114. }
  115. else
  116. {
  117. scaleChange = new Vector3(-deltaScale, 0, -z);
  118. positionChange = new Vector3(-deltaScale * 5, 0, -z * 5);
  119. }
  120. transform.transform.localScale += scaleChange;
  121. transform.transform.position += positionChange;
  122. // Move upwards when the sphere hits the floor or downwards
  123. // when the sphere scale extends 1.0f.
  124. if (transform.transform.localScale.y < 0.01f || transform.transform.localScale.y > 10.0f)
  125. {
  126. increase = !increase;
  127. }
  128. //Debug.Log("MouseDrag: Scale");
  129. //panel.transform.localScale = transform.localScale;
  130. EditorController.instance.SizeX.text = transform.localScale.x.ToString();
  131. EditorController.instance.SizeY.text = transform.localScale.z.ToString();
  132. }
  133. break;
  134. case Tools.Rectangle:
  135. //Debug.Log("MouseDrag: Rectangle");
  136. // Вращение по всем осям
  137. //Debug.Log("y=" + Input.GetAxis("Mouse Y") + " x=" + Input.GetAxis("Mouse X"));
  138. //transform.localScale = new Vector3(mouse_axis_y + Input.GetAxis("Mouse Y"), 1f, mouse_axis_x + Input.GetAxis("Mouse X")) * 10f;
  139. //StagesEditorController.selectCursor.panel_cursor.transform.Rotate(h, v, 0);
  140. break;
  141. }
  142. }
  143. void OnMouseUp()
  144. {
  145. }
  146. }