Advertisement
Guest User

Untitled

a guest
Mar 27th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.04 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using UnityEngine;
  5.  
  6. public class ShowMeshBounds : MonoBehaviour
  7. {
  8. public GameObject[] objectsToDraw;
  9. public GameObject prefabEffect;
  10. public Color color = Color.green;
  11.  
  12. private Vector3 v3FrontTopLeft;
  13. private Vector3 v3FrontTopRight;
  14. private Vector3 v3FrontBottomLeft;
  15. private Vector3 v3FrontBottomRight;
  16. private Vector3 v3BackTopLeft;
  17. private Vector3 v3BackTopRight;
  18. private Vector3 v3BackBottomLeft;
  19. private Vector3 v3BackBottomRight;
  20.  
  21. private float counter = 0;
  22. public bool animateLines;
  23. public float speed = 1f;
  24.  
  25. private List<GameObject> allLines = new List<GameObject>();
  26. private List<GameObject> instancesToMove = new List<GameObject>();
  27. private Vector3 startPos;
  28. private Vector3 endPos;
  29.  
  30. private void Start()
  31. {
  32. DrawObjects();
  33. }
  34.  
  35. private void DrawObjects()
  36. {
  37. objectsToDraw = GameObject.FindGameObjectsWithTag("SpawnObject");
  38.  
  39. for (int i = 0; i < objectsToDraw.Length; i++)
  40. {
  41. CalcPositons(objectsToDraw[i]);
  42. DrawBox();
  43.  
  44. for (int x = 0; x < allLines.Count; x++)
  45. {
  46.  
  47. allLines[x].transform.parent = objectsToDraw[i].transform;
  48. }
  49. }
  50.  
  51. DuplicatePrefabEffects(1);
  52.  
  53. StartCoroutine(moveLines());
  54. }
  55.  
  56. private void DuplicatePrefabEffects(int duplicationNumber)
  57. {
  58. for (int i = 0; i < duplicationNumber; i++)
  59. {
  60. var go = Instantiate(prefabEffect);
  61. go.tag = "Duplicated Prefab";
  62. go.name = "Duplicated Prefab";
  63. instancesToMove.Add(go);
  64. }
  65. }
  66.  
  67. void CalcPositons(GameObject objectToDrawTransform)
  68. {
  69. Bounds bounds = objectToDrawTransform.GetComponent<MeshFilter>().sharedMesh.bounds;
  70.  
  71. Vector3 v3Center = bounds.center;
  72. Vector3 v3Extents = bounds.extents;
  73.  
  74. v3FrontTopLeft = new Vector3(v3Center.x - v3Extents.x, v3Center.y + v3Extents.y, v3Center.z - v3Extents.z); // Front top left corner
  75. v3FrontTopRight = new Vector3(v3Center.x + v3Extents.x, v3Center.y + v3Extents.y, v3Center.z - v3Extents.z); // Front top right corner
  76. v3FrontBottomLeft = new Vector3(v3Center.x - v3Extents.x, v3Center.y - v3Extents.y, v3Center.z - v3Extents.z); // Front bottom left corner
  77. v3FrontBottomRight = new Vector3(v3Center.x + v3Extents.x, v3Center.y - v3Extents.y, v3Center.z - v3Extents.z); // Front bottom right corner
  78. v3BackTopLeft = new Vector3(v3Center.x - v3Extents.x, v3Center.y + v3Extents.y, v3Center.z + v3Extents.z); // Back top left corner
  79. v3BackTopRight = new Vector3(v3Center.x + v3Extents.x, v3Center.y + v3Extents.y, v3Center.z + v3Extents.z); // Back top right corner
  80. v3BackBottomLeft = new Vector3(v3Center.x - v3Extents.x, v3Center.y - v3Extents.y, v3Center.z + v3Extents.z); // Back bottom left corner
  81. v3BackBottomRight = new Vector3(v3Center.x + v3Extents.x, v3Center.y - v3Extents.y, v3Center.z + v3Extents.z); // Back bottom right corner
  82.  
  83. v3FrontTopLeft = objectToDrawTransform.transform.TransformPoint(v3FrontTopLeft);
  84. v3FrontTopRight = objectToDrawTransform.transform.TransformPoint(v3FrontTopRight);
  85. v3FrontBottomLeft = objectToDrawTransform.transform.TransformPoint(v3FrontBottomLeft);
  86. v3FrontBottomRight = objectToDrawTransform.transform.TransformPoint(v3FrontBottomRight);
  87. v3BackTopLeft = objectToDrawTransform.transform.TransformPoint(v3BackTopLeft);
  88. v3BackTopRight = objectToDrawTransform.transform.TransformPoint(v3BackTopRight);
  89. v3BackBottomLeft = objectToDrawTransform.transform.TransformPoint(v3BackBottomLeft);
  90. v3BackBottomRight = objectToDrawTransform.transform.TransformPoint(v3BackBottomRight);
  91. }
  92.  
  93. void DrawBox()
  94. {
  95. Front();
  96. LeftRight();
  97. Back();
  98. }
  99.  
  100. void SpawnLineGenerator(Vector3 start, Vector3 end, Color color)
  101. {
  102. GameObject myLine = new GameObject();
  103.  
  104. myLine.tag = "FrameLine";
  105. myLine.name = "FrameLine";
  106.  
  107. myLine.AddComponent<LineRenderer>();
  108. myLine.AddComponent<EndHolder>();
  109. myLine.GetComponent<EndHolder>().EndVector = end;
  110. LineRenderer lr = myLine.GetComponent<LineRenderer>();
  111. lr.material = new Material(Shader.Find("Particles/Alpha Blended Premultiply"));
  112. lr.startColor = color;
  113. lr.useWorldSpace = false;
  114. lr.endColor = color;
  115. lr.startWidth = 0.1f;//0.03f;
  116. lr.endWidth = 0.1f;//0.03f;
  117. lr.numCapVertices = 5;
  118. lr.SetPosition(0, start);
  119. lr.SetPosition(1, start);
  120.  
  121. allLines.Add(myLine);
  122. }
  123.  
  124. IEnumerator moveLines()
  125. {
  126. for (int i = 0; i < allLines.Count; i++)
  127. {
  128. counter = 0;
  129. endPos = allLines[i].GetComponent<EndHolder>().EndVector;
  130.  
  131. var dist = Vector3.Distance(endPos, startPos);
  132. while (counter < 25)
  133. {
  134. dist = Vector3.Distance(instancesToMove[0].transform.position, endPos);
  135. counter++;
  136. endPos = allLines[i].GetComponent<EndHolder>().EndVector;
  137. startPos = allLines[i].GetComponent<LineRenderer>().GetPosition(0);
  138.  
  139. instancesToMove[0].transform.position =
  140. Vector3.MoveTowards(startPos, endPos, counter / 25f * speed);
  141.  
  142. allLines[i].GetComponent<LineRenderer>().SetPosition(1, instancesToMove[0].transform.position);//tempPos);
  143.  
  144. yield return null;
  145. }
  146. }
  147. }
  148.  
  149. private void Front()
  150. {
  151. SpawnLineGenerator(v3FrontTopLeft, v3FrontTopRight, color);
  152. SpawnLineGenerator(v3FrontTopRight, v3FrontBottomRight, color);
  153. SpawnLineGenerator(v3FrontBottomRight, v3FrontBottomLeft, color);
  154. SpawnLineGenerator(v3FrontBottomLeft, v3FrontTopLeft, color);
  155. }
  156.  
  157. private void Back()
  158. {
  159. SpawnLineGenerator(v3BackTopLeft, v3BackTopRight, color);
  160. SpawnLineGenerator(v3BackTopRight, v3BackBottomRight, color);
  161. SpawnLineGenerator(v3BackBottomRight, v3BackBottomLeft, color);
  162. SpawnLineGenerator(v3BackBottomLeft, v3BackTopLeft, color);
  163. SpawnLineGenerator(v3BackTopLeft, v3BackBottomLeft, color);
  164. SpawnLineGenerator(v3BackBottomLeft, v3FrontBottomLeft, color);
  165. SpawnLineGenerator(v3FrontBottomLeft, v3FrontBottomRight, color);
  166. SpawnLineGenerator(v3FrontBottomRight, v3BackBottomRight, color);
  167. SpawnLineGenerator(v3BackBottomRight,v3BackTopRight , color);
  168. SpawnLineGenerator(v3BackTopRight, v3FrontTopRight, color);
  169.  
  170. }
  171.  
  172. private void LeftRight()
  173. {
  174. SpawnLineGenerator(v3FrontTopLeft, v3BackTopLeft, color);
  175. //SpawnLineGenerator(v3FrontBottomLeft, v3BackBottomLeft, color);
  176. //SpawnLineGenerator(v3FrontBottomRight, v3BackBottomRight, color);
  177. //SpawnLineGenerator(v3FrontTopRight, v3BackTopRight, color);
  178. }
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement