#pragma once #include #include int nodeIdCounter = 0; class NodeElement { public: int id; std::string name; ImVec2 position; NodeElement(std::string name); }; class NodeWindow { public: std::string title; std::vector alerts; std::vector triggers; NodeWindow(std::string title); }; typedef struct NodeConnection { int sourceID; int targetID; }; typedef struct ConnectionPayload { int sourceID; }; class CustomDrawData { public: std::vector nodes; std::vector connections; }; enum class CircleDragType { None, Source, Target }; void init(); void draw(DrawData& drawData, void* customDataVoid); bool drawCircle(float xOffset, CircleDragType dragType, const void* id, ImVec2* outCirclePos = nullptr); bool inlineButton(const char* title, const void* id); std::vector::iterator cleanEraseElement(std::vector& vector, std::vector::iterator toErase, CustomDrawData* data);