51 lines
1002 B
C++
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); |