From 63795c45af9ecca5aea36fbe291b18fcd9fb9b7d Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 18 Feb 2022 14:38:20 +0800 Subject: *rename folder name --- .../JamUtils/Scripts/Utils/ColliderUtility.cs | 59 ++++++++++++++++++++++ .../JamUtils/Scripts/Utils/ColliderUtility.cs.meta | 11 ++++ .../Assets/JamUtils/Scripts/Utils/Editor.meta | 8 +++ .../Scripts/Utils/Editor/MeshRendererEditor.cs | 35 +++++++++++++ .../Utils/Editor/MeshRendererEditor.cs.meta | 11 ++++ .../Assets/JamUtils/Scripts/Utils/GizmosHandle.cs | 42 +++++++++++++++ .../JamUtils/Scripts/Utils/GizmosHandle.cs.meta | 11 ++++ .../Scripts/Utils/MeshRendererOrderModifier.cs | 21 ++++++++ .../Utils/MeshRendererOrderModifier.cs.meta | 11 ++++ 9 files changed, 209 insertions(+) create mode 100644 JamHelper/Assets/JamUtils/Scripts/Utils/ColliderUtility.cs create mode 100644 JamHelper/Assets/JamUtils/Scripts/Utils/ColliderUtility.cs.meta create mode 100644 JamHelper/Assets/JamUtils/Scripts/Utils/Editor.meta create mode 100644 JamHelper/Assets/JamUtils/Scripts/Utils/Editor/MeshRendererEditor.cs create mode 100644 JamHelper/Assets/JamUtils/Scripts/Utils/Editor/MeshRendererEditor.cs.meta create mode 100644 JamHelper/Assets/JamUtils/Scripts/Utils/GizmosHandle.cs create mode 100644 JamHelper/Assets/JamUtils/Scripts/Utils/GizmosHandle.cs.meta create mode 100644 JamHelper/Assets/JamUtils/Scripts/Utils/MeshRendererOrderModifier.cs create mode 100644 JamHelper/Assets/JamUtils/Scripts/Utils/MeshRendererOrderModifier.cs.meta (limited to 'JamHelper/Assets/JamUtils/Scripts/Utils') 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 s_Vertices = new List(); + + private static readonly List s_Triangles = new List(); + + 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(); + 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: -- cgit v1.1-26-g67d0