#pragma once

#include <vector>
#include <glm/glm.hpp>
#include <memory>

class NavGraphNode {
public:
    explicit NavGraphNode(glm::vec2 position)
        : position(position), walkable(true) {}

    void addNeighbor(std::shared_ptr<NavGraphNode> neighbor) {
        neighbors.push_back(neighbor);
    }

    // Getters and setters as needed
    glm::vec2 getPosition() const {
        return position;
    }

    const std::vector<std::shared_ptr<NavGraphNode>> getNeighbors() const {
        return neighbors;
    }

    bool isWalkable() const { return walkable; }
    void setWalkable(bool value) { walkable = value; }
    

private:
    glm::vec2 position;  // The position of the node in the game world
    std::vector<std::shared_ptr<NavGraphNode>> neighbors;
    bool walkable;
};
