diff options
| author | Simon O'Shea <osheas1@wit.edu> | 2023-07-31 18:45:01 -0400 |
|---|---|---|
| committer | Simon O'Shea <osheas1@wit.edu> | 2023-07-31 18:45:01 -0400 |
| commit | 5f9e8f979deb94e9219113ed09b49142c040cb57 (patch) | |
| tree | a67bd606205f7fb28e48d351028b3478bc49145b /Pathfinding Visualizer/Assets/CodeMonkey/CMDebug.cs | |
| parent | 4699ce72871eaa6ee27c01971383b9d1fced1946 (diff) | |
import successful, grid has visuals
cell values and grid lines are displayed. no interaction available yet.
Diffstat (limited to 'Pathfinding Visualizer/Assets/CodeMonkey/CMDebug.cs')
| -rw-r--r-- | Pathfinding Visualizer/Assets/CodeMonkey/CMDebug.cs | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/Pathfinding Visualizer/Assets/CodeMonkey/CMDebug.cs b/Pathfinding Visualizer/Assets/CodeMonkey/CMDebug.cs new file mode 100644 index 0000000..76d6038 --- /dev/null +++ b/Pathfinding Visualizer/Assets/CodeMonkey/CMDebug.cs @@ -0,0 +1,173 @@ +/* + ------------------- Code Monkey ------------------- + + Thank you for downloading the Code Monkey Utilities + I hope you find them useful in your projects + If you have any questions use the contact form + Cheers! + + unitycodemonkey.com + -------------------------------------------------- + */ + +using System; +using UnityEngine; +using CodeMonkey.Utils; + +namespace CodeMonkey { + + /* + * Debug Class with various helper functions to quickly create buttons, text, etc + * */ + public static class CMDebug { + + // Creates a Button in the World + public static World_Sprite Button(Transform parent, Vector3 localPosition, string text, System.Action ClickFunc, int fontSize = 30, float paddingX = 5, float paddingY = 5) { + return World_Sprite.CreateDebugButton(parent, localPosition, text, ClickFunc, fontSize, paddingX, paddingY); + } + + // Creates a Button in the UI + public static UI_Sprite ButtonUI(Vector2 anchoredPosition, string text, Action ClickFunc) { + return UI_Sprite.CreateDebugButton(anchoredPosition, text, ClickFunc); + } + + public static UI_Sprite ButtonUI(Transform parent, Vector2 anchoredPosition, string text, Action ClickFunc) { + return UI_Sprite.CreateDebugButton(parent, anchoredPosition, text, ClickFunc); + } + + // Creates a World Text object at the world position + public static void Text(string text, Vector3 localPosition = default(Vector3), Transform parent = null, int fontSize = 40, Color? color = null, TextAnchor textAnchor = TextAnchor.UpperLeft, TextAlignment textAlignment = TextAlignment.Left, int sortingOrder = UtilsClass.sortingOrderDefault) { + UtilsClass.CreateWorldText(text, parent, localPosition, fontSize, color, textAnchor, textAlignment, sortingOrder); + } + + // World text pop up at mouse position + public static void TextPopupMouse(string text, Vector3? offset = null) { + if (offset == null) { + offset = Vector3.one; + } + UtilsClass.CreateWorldTextPopup(text, UtilsClass.GetMouseWorldPosition() + (Vector3)offset); + } + + // World text pop up at mouse position + public static void TextPopupMouse(object obj, Vector3? offset = null) { + TextPopupMouse(obj.ToString(), offset); + } + + // Creates a Text pop up at the world position + public static void TextPopup(string text, Vector3 position, float popupTime = 1f) { + UtilsClass.CreateWorldTextPopup(text, position, popupTime); + } + + // Text Updater in World, (parent == null) = world position + public static FunctionUpdater TextUpdater(Func<string> GetTextFunc, Vector3 localPosition, Transform parent = null, int fontSize = 40, Color? color = null, TextAnchor textAnchor = TextAnchor.UpperLeft, TextAlignment textAlignment = TextAlignment.Left, int sortingOrder = UtilsClass.sortingOrderDefault) { + return UtilsClass.CreateWorldTextUpdater(GetTextFunc, localPosition, parent, fontSize, color, textAnchor, textAlignment, sortingOrder); + } + + // Text Updater in UI + public static FunctionUpdater TextUpdaterUI(Func<string> GetTextFunc, Vector2 anchoredPosition) { + return UtilsClass.CreateUITextUpdater(GetTextFunc, anchoredPosition); + } + + // Text Updater always following mouse + public static void MouseTextUpdater(Func<string> GetTextFunc, Vector3 positionOffset = default(Vector3)) { + GameObject gameObject = new GameObject(); + FunctionUpdater.Create(() => { + gameObject.transform.position = UtilsClass.GetMouseWorldPosition() + positionOffset; + return false; + }); + TextUpdater(GetTextFunc, Vector3.zero, gameObject.transform); + } + + // Trigger Action on Key + public static FunctionUpdater KeyCodeAction(KeyCode keyCode, Action onKeyDown) { + return UtilsClass.CreateKeyCodeAction(keyCode, onKeyDown); + } + + + + // Debug DrawLine to draw a projectile, turn Gizmos On + public static void DebugProjectile(Vector3 from, Vector3 to, float speed, float projectileSize) { + Vector3 dir = (to - from).normalized; + Vector3 pos = from; + FunctionUpdater.Create(() => { + Debug.DrawLine(pos, pos + dir * projectileSize); + float distanceBefore = Vector3.Distance(pos, to); + pos += dir * speed * Time.deltaTime; + float distanceAfter = Vector3.Distance(pos, to); + if (distanceBefore < distanceAfter) { + return true; + } + return false; + }); + } + + + + public static void SpritePopupMouse(Sprite sprite, float scale = 1f) { + SpritePopup(UtilsClass.GetMouseWorldPosition(), sprite, scale); + } + + + public static void SpritePopup(Vector3 position, Sprite sprite, float scale) { + float popupTime = 1f; + GameObject gameObject = DrawSpriteTimedAlpha(position, sprite, scale, popupTime); + + Vector3 finalPopupPosition = position + new Vector3(0, 1, 0) * 20f; + Transform transform = gameObject.transform; + Vector3 moveAmount = (finalPopupPosition - position) / popupTime; + + FunctionUpdater.Create(delegate () { + if (gameObject == null) { + return true; + } + transform.position += moveAmount * Time.unscaledDeltaTime; + return false; + }, "SpritePopup"); + } + + public static GameObject DrawSpriteTimed(Sprite sprite, float scale, float timer) { + return DrawSpriteTimed(UtilsClass.GetMouseWorldPosition(), sprite, scale, timer); + } + + public static GameObject DrawSpriteTimed(Vector3 position, Sprite sprite, float scale, float timer) { + GameObject gameObject = new GameObject("SpriteTimed", typeof(SpriteRenderer)); + gameObject.transform.position = position; + gameObject.transform.localScale = Vector3.one * scale; + gameObject.GetComponent<SpriteRenderer>().sprite = sprite; + + GameObject.Destroy(gameObject, timer); + + return gameObject; + } + + public static GameObject DrawSpriteTimedAlpha(Sprite sprite, float scale, float timer, float startDecayTimeNormalized = .8f) { + return DrawSpriteTimedAlpha(UtilsClass.GetMouseWorldPosition(), sprite, scale, timer, startDecayTimeNormalized); + } + + public static GameObject DrawSpriteTimedAlpha(Vector3 position, Sprite sprite, float scale, float timer, float startDecayTimeNormalized = .8f) { + GameObject gameObject = DrawSpriteTimed(position, sprite, scale, timer); + + SpriteRenderer spriteRenderer = gameObject.GetComponent<SpriteRenderer>(); + + float startAlphaDecayTime = timer * startDecayTimeNormalized; + float totalAlphaDecayTime = timer - startAlphaDecayTime; + float currentTime = 0f; + + FunctionUpdater.Create(() => { + if (gameObject == null) { + return true; + } + currentTime += Time.unscaledDeltaTime; + if (currentTime >= startAlphaDecayTime) { + spriteRenderer.color = new Color(1, 1, 1, Mathf.Lerp(1f, 0f, 1 - ((timer - currentTime) / totalAlphaDecayTime))); + } + return false; + }); + + return gameObject; + } + + + } + +}
\ No newline at end of file |
