From 374125ba34e0366afb062578906877cfdf229bb9 Mon Sep 17 00:00:00 2001 From: Simon O'Shea Date: Thu, 3 Aug 2023 13:57:45 -0400 Subject: added placementModes and mesh testing can place varying values into grid, starting to work on rendering meshes to represent the cells --- Pathfinding Visualizer/Assets/Scripts/Main.cs | 70 ++++++++++++++++++++++ Pathfinding Visualizer/Assets/Scripts/Main.cs.meta | 11 ++++ .../Assets/Scripts/MeshTesting.cs | 39 ++++++++++++ .../Assets/Scripts/MeshTesting.cs.meta | 11 ++++ 4 files changed, 131 insertions(+) create mode 100644 Pathfinding Visualizer/Assets/Scripts/Main.cs create mode 100644 Pathfinding Visualizer/Assets/Scripts/Main.cs.meta create mode 100644 Pathfinding Visualizer/Assets/Scripts/MeshTesting.cs create mode 100644 Pathfinding Visualizer/Assets/Scripts/MeshTesting.cs.meta (limited to 'Pathfinding Visualizer/Assets/Scripts') diff --git a/Pathfinding Visualizer/Assets/Scripts/Main.cs b/Pathfinding Visualizer/Assets/Scripts/Main.cs new file mode 100644 index 0000000..a4434c6 --- /dev/null +++ b/Pathfinding Visualizer/Assets/Scripts/Main.cs @@ -0,0 +1,70 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Main : MonoBehaviour +{ + + private LogicGrid world; + char placementMode; + int placementValue; + + // Start is called before the first frame update + void Start() + { + // Create world + world = new LogicGrid(5, 5, 10f, new Vector3(-100, -30)); + + // Set default placement to Obstacle + placementValue = -1; + placementMode = 'o'; + Debug.Log("Loaded. Placing Mode: Obstacle"); + + } + + // Update is called once per frame + void Update() + { + // Change Placement Modes: + // Place Agent in grid + // TODO change modes via UI button + if(Input.GetKeyDown("a")) + { + Debug.Log("Placing Mode: Agent"); + placementMode = 'a'; + placementValue = 2; + } + // Place Sample in grid + if(Input.GetKeyDown("s")) + { + Debug.Log("Placing Mode: Sample"); + placementMode = 's'; + placementValue = 1; + } + // Place Obstacle in grid + if(Input.GetKeyDown("o")) + { + Debug.Log("Placing Mode: Obstacle"); + placementMode = 'o'; + placementValue = -1; + } + + + // Update Cell: + // Change cell to obstacle + if (Input.GetMouseButtonDown(0)) + { + world.SetValue(CodeMonkey.Utils.UtilsClass.GetMouseWorldPosition(), placementValue); + } + // Clear cell + if (Input.GetMouseButtonDown(1)) + { + world.SetValue(CodeMonkey.Utils.UtilsClass.GetMouseWorldPosition(), 0); + } + + // Make functionality for when "start" button is pressed. + // should call some sort of function that will take in the world + // and perform the selected algorithm + + } +} diff --git a/Pathfinding Visualizer/Assets/Scripts/Main.cs.meta b/Pathfinding Visualizer/Assets/Scripts/Main.cs.meta new file mode 100644 index 0000000..fa84d9e --- /dev/null +++ b/Pathfinding Visualizer/Assets/Scripts/Main.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 240ade3f16cf736479449e5fca9a29e1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Pathfinding Visualizer/Assets/Scripts/MeshTesting.cs b/Pathfinding Visualizer/Assets/Scripts/MeshTesting.cs new file mode 100644 index 0000000..06c8090 --- /dev/null +++ b/Pathfinding Visualizer/Assets/Scripts/MeshTesting.cs @@ -0,0 +1,39 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class MeshTesting : MonoBehaviour +{ + void Start() + { + + Debug.Log("Mesh Testing"); + + Mesh mesh = new Mesh(); + + + // Build required data-structures for triangle mesh + Vector3[] vertices = new Vector3[3]; + Vector2[] uv = new Vector2[3]; + int[] triangles = new int[3]; + + // Set vertices of polygon (triangle) + vertices[0] = new Vector3( 0, 0); + vertices[1] = new Vector3( 0, 100); + vertices[2] = new Vector3(100, 100); + + // Set order of indexes of vertices to draw polygon (v1 -> v2 -> v3 -> v1) + // Note: always set clockwise, otherwise mesh will be facing backwards + triangles[0] = 0; + triangles[1] = 1; + triangles[2] = 2; + + + mesh.vertices = vertices; + mesh.uv = uv; + mesh.triangles = triangles; + + GetComponent().mesh = mesh; + + } +} diff --git a/Pathfinding Visualizer/Assets/Scripts/MeshTesting.cs.meta b/Pathfinding Visualizer/Assets/Scripts/MeshTesting.cs.meta new file mode 100644 index 0000000..49560ea --- /dev/null +++ b/Pathfinding Visualizer/Assets/Scripts/MeshTesting.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2f03132b374e88b42a1e696cdfdf2a5c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: -- cgit v1.3.1-4-g156e