diff options
Diffstat (limited to 'JamHelper/Assets/JamUtils/Scripts/Utils')
9 files changed, 209 insertions, 0 deletions
diff --git a/JamHelper/Assets/JamUtils/Scripts/Utils/ColliderUtility.cs b/JamHelper/Assets/JamUtils/Scripts/Utils/ColliderUtility.cs new file mode 100644 index 0000000..3efe155 --- /dev/null +++ b/JamHelper/Assets/JamUtils/Scripts/Utils/ColliderUtility.cs @@ -0,0 +1,59 @@ +using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace JamTools
+{
+
+ public static class ColliderUtility
+ {
+ private static readonly List<Vector3> s_Vertices = new List<Vector3>();
+
+ private static readonly List<int> s_Triangles = new List<int>();
+
+ private static Plane GetWorldTriangle(Transform collider, int index)
+ {
+ Vector3 position = ColliderUtility.s_Vertices[ColliderUtility.s_Triangles[3 * index]];
+ Vector3 position2 = ColliderUtility.s_Vertices[ColliderUtility.s_Triangles[3 * index + 1]];
+ Vector3 position3 = ColliderUtility.s_Vertices[ColliderUtility.s_Triangles[3 * index + 2]];
+ return new Plane(collider.TransformPoint(position), collider.TransformPoint(position2), collider.TransformPoint(position3));
+ }
+
+ public static Vector3 FindClosestPoint(Collider collider, Vector3 position)
+ {
+ return ColliderUtility.FindClosestPoint(collider, position, false);
+ }
+
+ public static Vector3 FindClosestPoint(Collider collider, Vector3 position, bool ignoreVerticalTriangles)
+ {
+ MeshCollider meshCollider;
+ if ((meshCollider = (collider as MeshCollider)) != null && !meshCollider.convex)
+ {
+ Mesh sharedMesh = meshCollider.sharedMesh;
+ sharedMesh.GetVertices(ColliderUtility.s_Vertices);
+ Plane plane = default(Plane);
+ float num = float.PositiveInfinity;
+ for (int i = 0; i < sharedMesh.subMeshCount; i++)
+ {
+ sharedMesh.GetTriangles(ColliderUtility.s_Triangles, i);
+ int j = 0;
+ int num2 = ColliderUtility.s_Triangles.Count / 3;
+ while (j < num2)
+ {
+ Plane worldTriangle = ColliderUtility.GetWorldTriangle(meshCollider.transform, j);
+ float num3 = Mathf.Abs(worldTriangle.GetDistanceToPoint(position));
+ if ((!ignoreVerticalTriangles || (!(worldTriangle.normal == Vector3.up) && !(worldTriangle.normal == Vector3.down))) && ((i == 0 && j == 0) || num3 < num))
+ {
+ plane = worldTriangle;
+ num = num3;
+ }
+ j++;
+ }
+ }
+ return plane.ClosestPointOnPlane(position);
+ }
+ return collider.ClosestPoint(position);
+ }
+ }
+
+}
diff --git a/JamHelper/Assets/JamUtils/Scripts/Utils/ColliderUtility.cs.meta b/JamHelper/Assets/JamUtils/Scripts/Utils/ColliderUtility.cs.meta new file mode 100644 index 0000000..4d828ca --- /dev/null +++ b/JamHelper/Assets/JamUtils/Scripts/Utils/ColliderUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 17d16ee713041694bb7486e050909dd8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/JamHelper/Assets/JamUtils/Scripts/Utils/Editor.meta b/JamHelper/Assets/JamUtils/Scripts/Utils/Editor.meta new file mode 100644 index 0000000..292ca3d --- /dev/null +++ b/JamHelper/Assets/JamUtils/Scripts/Utils/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f0d601d32de9dd74aa29e699ca3bb0ba +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/JamHelper/Assets/JamUtils/Scripts/Utils/Editor/MeshRendererEditor.cs b/JamHelper/Assets/JamUtils/Scripts/Utils/Editor/MeshRendererEditor.cs new file mode 100644 index 0000000..139072a --- /dev/null +++ b/JamHelper/Assets/JamUtils/Scripts/Utils/Editor/MeshRendererEditor.cs @@ -0,0 +1,35 @@ +using UnityEngine;
+using UnityEditor;
+
+[CustomEditor(typeof(MeshRenderer))]
+public class MeshRendererEditor : Editor
+{
+ MeshRenderer meshRenderer;
+ public override void OnInspectorGUI()
+ {
+ base.OnInspectorGUI();
+ meshRenderer = target as MeshRenderer;
+
+ string[] layerNames = new string[SortingLayer.layers.Length];
+ for (int i = 0; i < SortingLayer.layers.Length; i++)
+ layerNames[i] = SortingLayer.layers[i].name;
+
+ int layerValue = SortingLayer.GetLayerValueFromName(meshRenderer.sortingLayerName);
+ layerValue = EditorGUILayout.Popup("Sorting Layer", layerValue, layerNames);
+
+ GUI.changed = false;
+
+ SortingLayer layer = SortingLayer.layers[layerValue];
+ meshRenderer.sortingLayerName = layer.name;
+ meshRenderer.sortingLayerID = layer.id;
+ meshRenderer.sortingOrder = EditorGUILayout.IntField("Order in Layer", meshRenderer.sortingOrder);
+
+ if (GUI.changed)
+ {
+ EditorUtility.SetDirty(meshRenderer);
+ AssetDatabase.SaveAssets();
+ AssetDatabase.Refresh();
+ }
+
+ }
+}
\ No newline at end of file diff --git a/JamHelper/Assets/JamUtils/Scripts/Utils/Editor/MeshRendererEditor.cs.meta b/JamHelper/Assets/JamUtils/Scripts/Utils/Editor/MeshRendererEditor.cs.meta new file mode 100644 index 0000000..76fc308 --- /dev/null +++ b/JamHelper/Assets/JamUtils/Scripts/Utils/Editor/MeshRendererEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 80862adc8955f0c4b8edde2e46cda527 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/JamHelper/Assets/JamUtils/Scripts/Utils/GizmosHandle.cs b/JamHelper/Assets/JamUtils/Scripts/Utils/GizmosHandle.cs new file mode 100644 index 0000000..360eecd --- /dev/null +++ b/JamHelper/Assets/JamUtils/Scripts/Utils/GizmosHandle.cs @@ -0,0 +1,42 @@ +using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace JamTools
+{
+
+ public class GizmosHandle : MonoBehaviour
+ {
+ public Action onDrawGizmos;
+
+ private static GizmosHandle m_Instance;
+
+ public static GizmosHandle Instance
+ {
+ get
+ {
+ return m_Instance;
+ }
+ }
+
+ public void DoGizmos(Action doGizmos)
+ {
+ onDrawGizmos += doGizmos;
+ }
+
+ private void Awake()
+ {
+ m_Instance = this;
+ }
+
+ private void OnDrawGizmos()
+ {
+ if (onDrawGizmos != null)
+ onDrawGizmos();
+ onDrawGizmos = null;
+ }
+
+ }
+
+}
diff --git a/JamHelper/Assets/JamUtils/Scripts/Utils/GizmosHandle.cs.meta b/JamHelper/Assets/JamUtils/Scripts/Utils/GizmosHandle.cs.meta new file mode 100644 index 0000000..43d7e19 --- /dev/null +++ b/JamHelper/Assets/JamUtils/Scripts/Utils/GizmosHandle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8790b951567cc8942a748fde536a3fe0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/JamHelper/Assets/JamUtils/Scripts/Utils/MeshRendererOrderModifier.cs b/JamHelper/Assets/JamUtils/Scripts/Utils/MeshRendererOrderModifier.cs new file mode 100644 index 0000000..40fe5bd --- /dev/null +++ b/JamHelper/Assets/JamUtils/Scripts/Utils/MeshRendererOrderModifier.cs @@ -0,0 +1,21 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class MeshRendererOrderModifier : MonoBehaviour
+{
+ [SerializeField] private string m_RenderLayer;
+ [SerializeField] private int m_RenderOrder;
+
+ private MeshRenderer m_MeshRenderer;
+
+ void Start()
+ {
+ m_MeshRenderer = GetComponent<MeshRenderer>();
+ if(m_MeshRenderer != null)
+ {
+ m_MeshRenderer.sortingLayerID = SortingLayer.NameToID(m_RenderLayer);
+ m_MeshRenderer.sortingOrder = m_RenderOrder;
+ }
+ }
+}
diff --git a/JamHelper/Assets/JamUtils/Scripts/Utils/MeshRendererOrderModifier.cs.meta b/JamHelper/Assets/JamUtils/Scripts/Utils/MeshRendererOrderModifier.cs.meta new file mode 100644 index 0000000..18fab3b --- /dev/null +++ b/JamHelper/Assets/JamUtils/Scripts/Utils/MeshRendererOrderModifier.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bbbbac06de34c484daaf3d065f8fe527 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: |