From 050f59119262c173b6932d2a4c9415b79e597fe9 Mon Sep 17 00:00:00 2001 From: Adam Graham Date: Sun, 18 Jun 2023 12:26:32 -0500 Subject: [PATCH 1/8] Formatting changes --- Runtime/Compare.cs | 7 +++++-- Runtime/Draw.cs | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Runtime/Compare.cs b/Runtime/Compare.cs index 5ca7a82..d4743d5 100644 --- a/Runtime/Compare.cs +++ b/Runtime/Compare.cs @@ -6,7 +6,7 @@ namespace Zigurous.Debug /// Compares how many results are equal between two functions. /// /// The type of value to compare. - public static class Compare where T: IEquatable + public static class Compare where T : IEquatable { /// /// Tests the equality of the results of two functions with a given @@ -29,7 +29,10 @@ public static float Test(Func foo, Func bar, int iterations, bool log = tr T resultBar = bar(); bool equal = resultFoo.Equals(resultBar); - if (equal) amountEqual++; + + if (equal) { + amountEqual++; + } if (log && logIndividual) { UnityEngine.Debug.Log($"[Compare] {resultFoo.ToString()} vs {resultBar.ToString()} | {(equal ? "Equal" : "Not Equal")}"); diff --git a/Runtime/Draw.cs b/Runtime/Draw.cs index 665d00a..4a3c30c 100644 --- a/Runtime/Draw.cs +++ b/Runtime/Draw.cs @@ -18,6 +18,7 @@ private struct Box3D public Vector3 localFrontTopRight { get; private set; } public Vector3 localFrontBottomLeft { get; private set; } public Vector3 localFrontBottomRight { get; private set; } + public Vector3 localBackTopLeft => -localFrontBottomRight; public Vector3 localBackTopRight => -localFrontBottomLeft; public Vector3 localBackBottomLeft => -localFrontTopRight; @@ -27,6 +28,7 @@ private struct Box3D public Vector3 frontTopRight => localFrontTopRight + origin; public Vector3 frontBottomLeft => localFrontBottomLeft + origin; public Vector3 frontBottomRight => localFrontBottomRight + origin; + public Vector3 backTopLeft => localBackTopLeft + origin; public Vector3 backTopRight => localBackTopRight + origin; public Vector3 backBottomLeft => localBackBottomLeft + origin; From 7ee277dbbc974d9c9006a12435a5b9b592be9499 Mon Sep 17 00:00:00 2001 From: Adam Graham Date: Sun, 18 Jun 2023 12:26:32 -0500 Subject: [PATCH 2/8] Set help url --- Runtime/FPSDisplay.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Runtime/FPSDisplay.cs b/Runtime/FPSDisplay.cs index 759d1fa..7222a2b 100644 --- a/Runtime/FPSDisplay.cs +++ b/Runtime/FPSDisplay.cs @@ -8,6 +8,7 @@ namespace Zigurous.Debug /// Displays the framerate of the application in realtime. /// [AddComponentMenu("Zigurous/Debug/FPS Display")] + [HelpURL("https://docs.zigurous.com/com.zigurous.debug/api/Zigurous.Debug/FPSDisplay")] public class FPSDisplay : MonoBehaviour { /// From d829d1c73243097c6bc816d46ec12a34c2dfeb8d Mon Sep 17 00:00:00 2001 From: Adam Graham Date: Sun, 18 Jun 2023 12:26:32 -0500 Subject: [PATCH 3/8] Add ExitApplication and PauseApplication scripts --- Runtime/ExitApplication.cs | 98 +++++++++++++++++++++++ Runtime/ExitApplication.cs.meta | 11 +++ Runtime/PauseApplication.cs | 130 +++++++++++++++++++++++++++++++ Runtime/PauseApplication.cs.meta | 11 +++ Runtime/Zigurous.Debug.asmdef | 6 +- package.json | 3 + 6 files changed, 257 insertions(+), 2 deletions(-) create mode 100644 Runtime/ExitApplication.cs create mode 100644 Runtime/ExitApplication.cs.meta create mode 100644 Runtime/PauseApplication.cs create mode 100644 Runtime/PauseApplication.cs.meta diff --git a/Runtime/ExitApplication.cs b/Runtime/ExitApplication.cs new file mode 100644 index 0000000..4485f64 --- /dev/null +++ b/Runtime/ExitApplication.cs @@ -0,0 +1,98 @@ +using UnityEngine; +#if ENABLE_INPUT_SYSTEM +using UnityEngine.InputSystem; +#endif + +namespace Zigurous.Debug +{ + /// + /// Quits the application via user input. + /// + [AddComponentMenu("Zigurous/Debug/Exit Application")] + [HelpURL("https://docs.zigurous.com/com.zigurous.debug/api/Zigurous.Debug/ExitApplication")] + public sealed class ExitApplication : MonoBehaviour + { + #if ENABLE_INPUT_SYSTEM + /// + /// The input action that quits the application. + /// + [Tooltip("The input action that quits the application.")] + [Header("Input System")] + public InputAction quitInput = new InputAction("ExitApplication", InputActionType.Button, "/escape"); + #endif + + #if ENABLE_LEGACY_INPUT_MANAGER + /// + /// The keycode that quits the application. + /// + [Tooltip("The keycode that quits the application.")] + [Header("Legacy Input Manager")] + public KeyCode quitKey = KeyCode.Escape; + + /// + /// The optional modifier key to be held down to quit the application. + /// + [Tooltip("The optional modifier key to be held down to quit the application.")] + public KeyCode quitKeyModifier = KeyCode.None; + #endif + + #if ENABLE_INPUT_SYSTEM + private void Awake() + { + quitInput.performed += OnQuit; + } + + private void OnDestroy() + { + quitInput.Dispose(); + } + + private void OnEnable() + { + quitInput.Enable(); + } + + private void OnDisable() + { + quitInput.Disable(); + } + + private void OnQuit(InputAction.CallbackContext context) + { + if (context.performed) { + Quit(); + } + } + #endif + + #if ENABLE_LEGACY_INPUT_MANAGER + private void Update() + { + if (Input.GetKeyDown(quitKey)) + { + if (quitKeyModifier == KeyCode.None || Input.GetKey(quitKeyModifier)) { + Quit(); + } + } + } + #endif + + /// + /// Quits the application, or exits playmode if running in the editor. + /// + public void Quit() + { + #if UNITY_EDITOR + if (Application.isEditor) + { + UnityEditor.EditorApplication.ExitPlaymode(); + return; + } + #endif + + Application.Quit(); + } + + } + +} diff --git a/Runtime/ExitApplication.cs.meta b/Runtime/ExitApplication.cs.meta new file mode 100644 index 0000000..c4b89cb --- /dev/null +++ b/Runtime/ExitApplication.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7ab1552eef99574459510537a5d67ee3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/PauseApplication.cs b/Runtime/PauseApplication.cs new file mode 100644 index 0000000..41c35e8 --- /dev/null +++ b/Runtime/PauseApplication.cs @@ -0,0 +1,130 @@ +#if UNITY_EDITOR +using UnityEditor; +#endif +using UnityEngine; +#if ENABLE_INPUT_SYSTEM +using UnityEngine.InputSystem; +#endif + +namespace Zigurous.Debug +{ + /// + /// Pauses the application via user input. + /// + [AddComponentMenu("Zigurous/Debug/Pause Application")] + [HelpURL("https://docs.zigurous.com/com.zigurous.debug/api/Zigurous.Debug/PauseApplication")] + public sealed class PauseApplication : MonoBehaviour + { + #if ENABLE_INPUT_SYSTEM + /// + /// The input action that pauses the application. + /// + [Tooltip("The input action that pauses the application.")] + [Header("Input System")] + public InputAction pauseInput = new InputAction("PauseApplication", InputActionType.Button, "/pause"); + #endif + + #if ENABLE_LEGACY_INPUT_MANAGER + /// + /// The keycode that pauses the application. + /// + [Tooltip("The keycode that pauses the application.")] + [Header("Legacy Input Manager")] + public KeyCode pauseKey = KeyCode.Break; + + /// + /// The optional modifier key to be held down to pause the application. + /// + [Tooltip("The optional modifier key to be held down to pause the application.")] + public KeyCode pauseKeyModifier = KeyCode.None; + #endif + + /// + /// Whether the application is currently paused or not (Read only). + /// + #if UNITY_EDITOR + public bool paused => EditorApplication.isPaused; + #else + public bool paused { get; private set; } + #endif + + #if ENABLE_INPUT_SYSTEM + private void Awake() + { + pauseInput.performed += OnPause; + } + + private void OnDestroy() + { + pauseInput.Dispose(); + } + + private void OnEnable() + { + pauseInput.Enable(); + } + + private void OnDisable() + { + pauseInput.Disable(); + } + + private void OnPause(InputAction.CallbackContext context) + { + if (context.performed) + { + if (paused) { + Resume(); + } else { + Pause(); + } + } + } + #endif + + #if ENABLE_LEGACY_INPUT_MANAGER + private void Update() + { + if (Input.GetKeyDown(pauseKey)) + { + if (pauseKeyModifier == KeyCode.None || Input.GetKey(pauseKeyModifier)) + { + if (paused) { + Resume(); + } else { + Pause(); + } + } + } + } + #endif + + /// + /// Pauses the application. + /// + public void Pause() + { + #if UNITY_EDITOR + EditorApplication.isPaused = true; + #else + paused = true; + Time.timeScale = 0f; + #endif + } + + /// + /// Resumes the application. + /// + public void Resume() + { + #if UNITY_EDITOR + EditorApplication.isPaused = false; + #else + paused = false; + Time.timeScale = 1f; + #endif + } + + } + +} diff --git a/Runtime/PauseApplication.cs.meta b/Runtime/PauseApplication.cs.meta new file mode 100644 index 0000000..c459b66 --- /dev/null +++ b/Runtime/PauseApplication.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 92cd4baf56dcd7e4685a19dd2431a35f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Zigurous.Debug.asmdef b/Runtime/Zigurous.Debug.asmdef index 81fab9e..b6f770e 100644 --- a/Runtime/Zigurous.Debug.asmdef +++ b/Runtime/Zigurous.Debug.asmdef @@ -1,6 +1,8 @@ { "name": "Zigurous.Debug", - "references": [], + "references": [ + "GUID:75469ad4d38634e559750d17036d5f7c" + ], "includePlatforms": [], "excludePlatforms": [], "allowUnsafeCode": false, @@ -10,4 +12,4 @@ "defineConstraints": [], "versionDefines": [], "noEngineReferences": false -} +} \ No newline at end of file diff --git a/package.json b/package.json index 43622e1..700bdfd 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,9 @@ "documentationUrl": "https://docs.zigurous.com/com.zigurous.debug", "changelogUrl": "https://docs.zigurous.com/com.zigurous.debug/changelog", "licensesUrl": "https://docs.zigurous.com/com.zigurous.debug/license", + "dependencies": { + "com.unity.inputsystem": "1.2.0" + }, "keywords": [ "debug", "debugging", From 2bc3350999b48c2b9617af2e8ce9b74ee3993dd5 Mon Sep 17 00:00:00 2001 From: Adam Graham Date: Sun, 18 Jun 2023 12:26:32 -0500 Subject: [PATCH 4/8] Update package version to 1.5.0 --- CHANGELOG.md | 8 ++++++++ package.json | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 548b31a..24d6ae2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.5.0] - 2022/10/30 + +### Added + +- New `ExitApplication` script +- New `PauseApplication` script +- Help URLs added to behaviors + ## [1.4.0] - 2022/05/20 ### Added diff --git a/package.json b/package.json index 700bdfd..28942a9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "com.zigurous.debug", - "version": "1.4.0", + "version": "1.5.0", "displayName": "Debug Tools", "description": "The Debug Tools package contains assets and scripts for debugging Unity projects. Included in the package are scripts for enhanced console logging, benchmarking, displaying framerate, and more. The package also comes with shaders to visualize different vertex data.", "unity": "2019.4", From 52ca8c629c8879e04e5ceb879c021fe095d057c3 Mon Sep 17 00:00:00 2001 From: Adam Graham Date: Sun, 18 Jun 2023 12:58:29 -0500 Subject: [PATCH 5/8] Add new mesh debugger editor window --- Editor.meta | 8 ++ Editor/MeshDebugger.cs | 175 +++++++++++++++++++++++ Editor/MeshDebugger.cs.meta | 11 ++ Editor/Zigurous.Debug.Editor.asmdef | 17 +++ Editor/Zigurous.Debug.Editor.asmdef.meta | 7 + 5 files changed, 218 insertions(+) create mode 100644 Editor.meta create mode 100644 Editor/MeshDebugger.cs create mode 100644 Editor/MeshDebugger.cs.meta create mode 100644 Editor/Zigurous.Debug.Editor.asmdef create mode 100644 Editor/Zigurous.Debug.Editor.asmdef.meta diff --git a/Editor.meta b/Editor.meta new file mode 100644 index 0000000..692c999 --- /dev/null +++ b/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f3012dd2e8cb1d14a8f856af725af14d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/MeshDebugger.cs b/Editor/MeshDebugger.cs new file mode 100644 index 0000000..6cb9812 --- /dev/null +++ b/Editor/MeshDebugger.cs @@ -0,0 +1,175 @@ +using UnityEditor; +using UnityEngine; + +namespace Zigurous.Debug.Editor +{ + public sealed class MeshDebugger : EditorWindow + { + private Mesh currentMesh; + private MeshFilter currentMeshFilter; + private SkinnedMeshRenderer currentSkinnedMeshRenderer; + private int currentFace = 0, numFaces = 0, newFace = 0; + private GUIStyle labelStyle = null; + private Vector3 p1, p2, p3; + + [MenuItem("Window/Analysis/Mesh Debugger")] + public static void ShowWindow() + { + EditorWindow.GetWindow(typeof(MeshDebugger), true, "Mesh Debugger"); + } + + private void OnEnable() + { + SceneView.duringSceneGui -= OnSceneGUI; + SceneView.duringSceneGui += OnSceneGUI; + + OnSelectionChange(); + } + + private void OnDestroy() + { + SceneView.duringSceneGui -= OnSceneGUI; + } + + private void OnSelectionChange() + { + currentMesh = null; + currentSkinnedMeshRenderer = null; + numFaces = 0; + + if (Selection.activeGameObject) + { + currentMeshFilter = Selection.activeGameObject.GetComponentInChildren(); + + if (currentMeshFilter != null) + { + currentMesh = currentMeshFilter.sharedMesh; + numFaces = currentMesh.triangles.Length / 3; + } + else + { + currentSkinnedMeshRenderer = Selection.activeGameObject.GetComponentInChildren(); + + if (currentSkinnedMeshRenderer != null) + { + currentMesh = currentSkinnedMeshRenderer.sharedMesh; + numFaces = currentMesh.triangles.Length / 3; + } + } + } + + currentFace = 0; + newFace = currentFace; + + Repaint(); + } + + private void OnGUI() + { + if (currentMesh == null) + { + EditorGUILayout.LabelField("Current selection contains no mesh"); + return; + } + + EditorGUILayout.LabelField("Number of faces", numFaces.ToString()); + EditorGUILayout.LabelField("Current face", currentFace.ToString()); + + newFace = EditorGUILayout.IntField("Jump to face", currentFace); + + if (newFace != currentFace) + { + if (newFace >= 0 && newFace < numFaces) { + currentFace = newFace; + } + } + + EditorGUILayout.BeginHorizontal(); + + if (GUILayout.Button("Previous Face")) + { + currentFace = (currentFace - 1) % numFaces; + + if (currentFace < 0) { + currentFace = currentFace + numFaces; + } + } + + if (GUILayout.Button("Next Face")) { + currentFace = (currentFace + 1) % numFaces; + } + + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.Space(); + + int redIndex = currentMesh.triangles[currentFace * 3]; + int greenIndex = currentMesh.triangles[currentFace * 3 + 1]; + int blueIndex = currentMesh.triangles[currentFace * 3 + 2]; + + EditorGUILayout.LabelField("Red vertex", $"Index: {redIndex}, UV: ({currentMesh.uv[redIndex].x}, {currentMesh.uv[redIndex].y})"); + EditorGUILayout.LabelField("Green vertex", $"Index: {greenIndex}, UV: ({currentMesh.uv[greenIndex].x}, {currentMesh.uv[greenIndex].y})"); + EditorGUILayout.LabelField("Blue vertex", $"Index: {blueIndex}, UV: ({currentMesh.uv[blueIndex].x}, {currentMesh.uv[blueIndex].y})"); + } + + private void OnSceneGUI(SceneView sceneView) + { + if (currentMesh == null) { + return; + } + + int index1 = currentMesh.triangles[currentFace * 3]; + int index2 = currentMesh.triangles[currentFace * 3 + 1]; + int index3 = currentMesh.triangles[currentFace * 3 + 2]; + + if (currentMeshFilter != null) + { + p1 = currentMeshFilter.transform.TransformPoint(currentMesh.vertices[index1]); + p2 = currentMeshFilter.transform.TransformPoint(currentMesh.vertices[index2]); + p3 = currentMeshFilter.transform.TransformPoint(currentMesh.vertices[index3]); + } + else if (currentSkinnedMeshRenderer != null) + { + p1 = currentSkinnedMeshRenderer.transform.TransformPoint(currentMesh.vertices[index1]); + p2 = currentSkinnedMeshRenderer.transform.TransformPoint(currentMesh.vertices[index2]); + p3 = currentSkinnedMeshRenderer.transform.TransformPoint(currentMesh.vertices[index3]); + } + + Handles.color = Color.red; + Handles.SphereHandleCap(0, p1, Quaternion.identity, 0.2f * HandleUtility.GetHandleSize(p1), EventType.Repaint); + Handles.color = Color.green; + Handles.SphereHandleCap(0, p2, Quaternion.identity, 0.2f * HandleUtility.GetHandleSize(p2), EventType.Repaint); + Handles.color = Color.blue; + Handles.SphereHandleCap(0, p3, Quaternion.identity, 0.2f * HandleUtility.GetHandleSize(p3), EventType.Repaint); + + Handles.color = Color.white; + Handles.DrawDottedLine(p1, p2, 5f); + Handles.DrawDottedLine(p2, p3, 5f); + Handles.DrawDottedLine(p3, p1, 5f); + + if (labelStyle == null) + { + labelStyle = new GUIStyle(GUI.skin.label); + labelStyle.normal.textColor = Color.white; + labelStyle.fixedWidth = 40; + labelStyle.fixedHeight = 20; + labelStyle.alignment = TextAnchor.MiddleCenter; + labelStyle.fontSize = 12; + labelStyle.clipping = TextClipping.Overflow; + } + + Handles.Label(p1, index1.ToString(), labelStyle); + Handles.Label(p2, index2.ToString(), labelStyle); + Handles.Label(p3, index3.ToString(), labelStyle); + + sceneView.Repaint(); + } + + private void OnInspectorUpdate() + { + Repaint(); + } + + } + +} diff --git a/Editor/MeshDebugger.cs.meta b/Editor/MeshDebugger.cs.meta new file mode 100644 index 0000000..7ed08e2 --- /dev/null +++ b/Editor/MeshDebugger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 08d9ecff8983ad744aa14c4afcc181a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Zigurous.Debug.Editor.asmdef b/Editor/Zigurous.Debug.Editor.asmdef new file mode 100644 index 0000000..d6458f9 --- /dev/null +++ b/Editor/Zigurous.Debug.Editor.asmdef @@ -0,0 +1,17 @@ +{ + "name": "Zigurous.Debug.Editor", + "references": [ + "GUID:0186cdaa7ccbaeb4f91d3907506784d7" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Editor/Zigurous.Debug.Editor.asmdef.meta b/Editor/Zigurous.Debug.Editor.asmdef.meta new file mode 100644 index 0000000..91b855d --- /dev/null +++ b/Editor/Zigurous.Debug.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 045545c2591da4e4099246d349849f66 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: From 4d88652e1d1727d657d407cc904e78931e305bd7 Mon Sep 17 00:00:00 2001 From: Adam Graham Date: Sun, 18 Jun 2023 12:59:54 -0500 Subject: [PATCH 6/8] Update 1.5.0 changelog --- CHANGELOG.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 24d6ae2..024a3cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,13 +5,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [1.5.0] - 2022/10/30 +## [1.5.0] - 2023/06/18 ### Added - New `ExitApplication` script - New `PauseApplication` script -- Help URLs added to behaviors +- New editor mesh debugger: Window > Analysis > Mesh Debugger +- Behavior help URLs ## [1.4.0] - 2022/05/20 From 1d658967e3c97131b4ab31082355f0dd57c05f3f Mon Sep 17 00:00:00 2001 From: Adam Graham Date: Sun, 18 Jun 2023 13:13:28 -0500 Subject: [PATCH 7/8] Refactor Compare functions as Equal or NotEqual --- CHANGELOG.md | 6 +++ Documentation~/articles/benchmarking.md | 6 +-- Runtime/Compare.cs | 54 ++++++++++++++++++++++--- 3 files changed, 58 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 024a3cb..8f0773d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - New editor mesh debugger: Window > Analysis > Mesh Debugger - Behavior help URLs +### Changed + +- Refactored the `Compare` class + - Changed the `Compare.Test` function to two distinct functions: `Compare.Equal` and `Compare.NotEqual` + - The generics are now applied to the functions instead of the class, i.e., `Compare.Equal` instead of `Compare.Equal` + ## [1.4.0] - 2022/05/20 ### Added diff --git a/Documentation~/articles/benchmarking.md b/Documentation~/articles/benchmarking.md index f499f89..0e7d71a 100644 --- a/Documentation~/articles/benchmarking.md +++ b/Documentation~/articles/benchmarking.md @@ -23,9 +23,9 @@ Benchmark.Run(1000, Foo, Bar, Baz); ## 🎏 Compare Equality -Alternatively, sometimes it is useful to test if the results of two functions are equal. The **Debug Tools** package comes with another static class [Compare](/api/Zigurous.Debug/Compare-1) to handle these tests. The class uses generics to know the type of value you are looking to compare, and it returns the percentage of results that are equal. +Sometimes it is useful to test if multiple functions return the same results. The **Debug Tools** package comes with another static class [Compare](/api/Zigurous.Debug/Compare-1) to handle these tests. The class uses generics to know the type of value you are looking to compare, and it returns the percentage of results that are equal (or not equal) for a given amount of iterations. ```csharp -Compare.Test(Foo, Bar, 1000); -Compare.Test(Foo, Bar, 1000); +Compare.Equal(Foo, Bar, 1000); +Compare.NotEqual(Foo, Bar, 1000); ``` diff --git a/Runtime/Compare.cs b/Runtime/Compare.cs index d4743d5..64b903a 100644 --- a/Runtime/Compare.cs +++ b/Runtime/Compare.cs @@ -3,13 +3,12 @@ namespace Zigurous.Debug { /// - /// Compares how many results are equal between two functions. + /// Compares the results of multiple functions for equality. /// - /// The type of value to compare. - public static class Compare where T : IEquatable + public static class Compare { /// - /// Tests the equality of the results of two functions with a given + /// Compares how many results of the two functions are equal for a given /// amount of iterations. /// /// The first function to execute. @@ -18,7 +17,8 @@ public static class Compare where T : IEquatable /// Logs the final comparison result. /// Logs the result of each iteration of the functions. /// The percentage of equal results. - public static float Test(Func foo, Func bar, int iterations, bool log = true, bool logIndividual = false) + public static float Equal(Func foo, Func bar, int iterations, bool log = true, bool logIndividual = false) + where T : IEquatable { #if UNITY_EDITOR || DEVELOPMENT_BUILD int amountEqual = 0; @@ -51,6 +51,50 @@ public static float Test(Func foo, Func bar, int iterations, bool log = tr #endif } + /// + /// Compares how many results of the two functions are not equal for a + /// given amount of iterations. + /// + /// The first function to execute. + /// The second function to execute. + /// The amount of times each function is executed. + /// Logs the final comparison result. + /// Logs the result of each iteration of the functions. + /// The percentage of equal results. + public static float NotEqual(Func foo, Func bar, int iterations, bool log = true, bool logIndividual = false) + where T : IEquatable + { + #if UNITY_EDITOR || DEVELOPMENT_BUILD + int amountNotEqual = 0; + + for (int i = 0; i < iterations; i++) + { + T resultFoo = foo(); + T resultBar = bar(); + + bool equal = resultFoo.Equals(resultBar); + + if (!equal) { + amountNotEqual++; + } + + if (log && logIndividual) { + UnityEngine.Debug.Log($"[Compare] {resultFoo.ToString()} vs {resultBar.ToString()} | {(equal ? "Equal" : "Not Equal")}"); + } + } + + float percentNotEqual = (float)amountNotEqual / (float)iterations; + + if (log) { + UnityEngine.Debug.Log($"[Compare] {amountNotEqual.ToString()}/{iterations.ToString()} ({(percentNotEqual * 100f).ToString()}%) not equal results"); + } + + return percentNotEqual; + #else + return float.NaN; + #endif + } + } } From 04ac8bbf05c4b955bee05ba03e8ccf265572d5dd Mon Sep 17 00:00:00 2001 From: Adam Graham Date: Sun, 18 Jun 2023 13:46:03 -0500 Subject: [PATCH 8/8] Update documentation --- Documentation~/articles/index.md | 2 ++ Documentation~/articles/mesh-debugger.md | 11 +++++++++++ Documentation~/data/sidenav.json | 4 ++++ Documentation~/images/mesh-debugger.jpg | Bin 0 -> 98318 bytes README.md | 2 ++ 5 files changed, 19 insertions(+) create mode 100644 Documentation~/articles/mesh-debugger.md create mode 100644 Documentation~/images/mesh-debugger.jpg diff --git a/Documentation~/articles/index.md b/Documentation~/articles/index.md index f22fb87..c532821 100644 --- a/Documentation~/articles/index.md +++ b/Documentation~/articles/index.md @@ -30,4 +30,6 @@ The **Debug Tools** package contains assets and scripts for debugging Unity proj #### 🎨 [Debug Shaders](/manual/shaders) +#### 🖇️ [Mesh Debugger](/manual/mesh-debugger) + #### ✏️ [Drawing](/manual/drawing) diff --git a/Documentation~/articles/mesh-debugger.md b/Documentation~/articles/mesh-debugger.md new file mode 100644 index 0000000..b8fe60d --- /dev/null +++ b/Documentation~/articles/mesh-debugger.md @@ -0,0 +1,11 @@ +--- +slug: "/manual/mesh-debugger" +--- + +# Mesh Debugger + +The **Debug Tools** package includes a custom editor window for debugging and visualizing mesh data. To open this debugger, use the menu `Window > Analysis > Mesh Debugger`. + +When a mesh is selected in the hierarchy while the window is open, a wireframe will be drawn around the current face of the mesh, and vertex and UV information will be shown in the editor. The window provides buttons to move to the next or previous face. + +![](../images/mesh-debugger.jpg) diff --git a/Documentation~/data/sidenav.json b/Documentation~/data/sidenav.json index 5346580..ba4471d 100644 --- a/Documentation~/data/sidenav.json +++ b/Documentation~/data/sidenav.json @@ -39,6 +39,10 @@ "name": "Debug Shaders", "path": "/manual/shaders" }, + { + "name": "Mesh Debugger", + "path": "/manual/mesh-debugger" + }, { "name": "Drawing", "path": "/manual/drawing" diff --git a/Documentation~/images/mesh-debugger.jpg b/Documentation~/images/mesh-debugger.jpg new file mode 100644 index 0000000000000000000000000000000000000000..01a2cfc59e0a58522aded4af24c6c3011a4c1f0c GIT binary patch literal 98318 zcmb5W2|QHa|37}m9*Q>-*@-9-lAVdP*rPBtQG}w%zRwILDQnrcAzLDA*%?K)VTLS| zEJI?fS;jVl@w@8%`F=m|-|zGI{2%|rY=FNkL&zF$oEYqsOIWq{L-J#3jTJ8i6n|F|jbSa2`6uDbCByEB^nx?0*LSVxb#g zgwsR*0_gsN(EkP5Zv_MopwiJF;Qd#D(9wfHnOP3*LjI@xKX<Z_dr~6x??Oe{4#7`NPs*gGT?D2T_FyeZ-nPXX2uD+hy<1#Tz>lZvYxGd^|hl1|F z%Z>5dTI0&kr5O~(Vx<`vMFGw{07b_c#t6`J3#g-!A-8k886;U)SfB>UM3qm=xiS$@ z1{p|1tPHDeEMRvJ%EDq!$CE1qiDS73h%zY17+rxxOsT{q`c6kg6!$(*{W_W9TIu`{ zUL>KKU@!he_46m^R#qbd16|njtjO=5UZE;w>~sfg8!6PSSG@p(Gyt%&LIHp?3-B5K zFt05391ui|`q`99FWuw3evMz2L7ex*`*Du!N_A8i2!yMI$x%{N?20*0b9a~+R0f

&-|bW5cWD8$g!b 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 nb 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index c1f5a56..283aee7 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ The **Debug Tools** package contains assets and scripts for debugging Unity proj - [Benchmarking](https://docs.zigurous.com/com.zigurous.debug/manual/benchmarking) - [Framerate Display](https://docs.zigurous.com/com.zigurous.debug/manual/framerate) - [Debug Shaders](https://docs.zigurous.com/com.zigurous.debug/manual/shaders) +- [Mesh Debugger](https://docs.zigurous.com/com.zigurous.debug/manual/mesh-debugger) +- [Drawing](https://docs.zigurous.com/com.zigurous.debug/manual/drawing) ## Installation