summaryrefslogtreecommitdiff
path: root/Pathfinding Visualizer/Assets/Scripts/Main.cs
blob: 6ebb37f984c3a5099e9819f78946d8e03f0b653d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Main : MonoBehaviour
{

    [SerializeField] private CellMesh cellMesh;
    
    private LogicGrid world;
    char placementMode;
    int placementValue;


    bool astarSelected;


    // Start is called before the first frame update
    void Start()
    {
        // Create world
        int width = 100;
        int height = 100;
        float cellSize = 5f;
        Vector3 origin = new Vector3(-110, -110);

        world = new LogicGrid(width, height, cellSize, origin);
        
        // Set default placement to Obstacle
        placementValue = 1;
        placementMode = 'o';

        cellMesh.SetGrid(world);

        Debug.Log("Loaded. Placing Mode: Obstacle");

    }

    // Update contains keyboard shortcut options
    void Update()
    {
        // Change Placement Mode Keyboard Shortcuts:
        ////////////////////////////////
        // Place Obstacle in grid
        if (Input.GetKeyDown("o"))
        {
            Debug.Log("Placing Mode: Obstacle");
            placementMode = 'o';
            placementValue = 1;
        }
        // Place Sample in cell
        if(Input.GetKeyDown("s"))
        {
            Debug.Log("Placing Mode: Sample");
            placementMode = 's';
            placementValue = 2;
        }
        // Place agent in cell
        if (Input.GetKeyDown("a"))
        {
            Debug.Log("Placing Mode: Agent");
            placementMode = 'a';
            placementValue = 3;
        }
        // Reset Canvas
        if (Input.GetKeyDown("r"))
        {
            ResetGrid();
        }
        //////////////////////////
        

        // Update Cell:
        // Place value in cell based on selected placementValue with left click
        if (Input.GetMouseButton(0))
        {
            world.SetValue(CodeMonkey.Utils.UtilsClass.GetMouseWorldPosition(), placementValue);
        }
        // Clear cell with right click
        if (Input.GetMouseButton(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

    }

    public void SetModeObstacle()
    {
        placementValue = 1;
    }
    public void SetModeSample()
    {
        placementValue = 2;
    }
    public void SetModeAgent()
    {
        placementValue = 3;
    }
    public void ResetGrid()
    {
        world.reset();
    }
   
    public void StartAlgorithm()
    {
        if(astarSelected)
        {
            AStar astar = new AStar(world, 0);
            astar.go();
        }
    }

}