added placementModes and mesh testing

can place varying values into grid, starting to work on rendering meshes to represent the cells
This commit is contained in:
Simon O'Shea
2023-08-03 13:57:45 -04:00
parent 6451c901fd
commit 374125ba34
5 changed files with 204 additions and 19 deletions
@@ -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
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 240ade3f16cf736479449e5fca9a29e1
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -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<MeshFilter>().mesh = mesh;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 2f03132b374e88b42a1e696cdfdf2a5c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: