Files
AsuroImgui/ImguiNodes/ImguiNodes.h
2022-07-05 22:15:43 +02:00

51 lines
1002 B
C++

#pragma once
#include <string>
#include <vector>
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<NodeElement> alerts;
std::vector<NodeElement> triggers;
NodeWindow(std::string title);
};
typedef struct NodeConnection {
int sourceID;
int targetID;
};
typedef struct ConnectionPayload {
int sourceID;
};
class CustomDrawData {
public:
std::vector<NodeWindow> nodes;
std::vector<NodeConnection> 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<NodeElement>::iterator cleanEraseElement(std::vector<NodeElement>& vector, std::vector<NodeElement>::iterator toErase, CustomDrawData* data);