This commit is contained in:
2022-07-14 20:03:21 +02:00
parent a616970ce2
commit ff996e8e55
21 changed files with 1310 additions and 157 deletions

View File

@@ -2,39 +2,41 @@
#include <string>
#include <vector>
int nodeIdCounter = 0;
int globalNodeIdCounter = 0;
class NodeElement {
public:
int id;
std::string name;
ImVec2 position;
int id = -1;
std::string name = {};
ImVec2 position = {};
NodeElement(std::string name);
};
class NodeWindow {
public:
std::string title;
std::vector<NodeElement> alerts;
std::vector<NodeElement> triggers;
std::string title = {};
std::vector<NodeElement> alerts = {};
std::vector<NodeElement> triggers = {};
NodeWindow(std::string title);
};
typedef struct NodeConnection {
int sourceID;
int targetID;
struct NodeConnection {
int sourceID = -1;
int targetID = -1;
};
typedef struct ConnectionPayload {
int sourceID;
struct ConnectionPayload {
int sourceID = -1;
};
class CustomDrawData {
class ApplicationData {
public:
std::vector<NodeWindow> nodes;
std::vector<NodeConnection> connections;
std::vector<NodeWindow> nodes = {};
std::vector<NodeConnection> connections = {};
void addConnection(int sourceID, int targetID);
};
enum class CircleDragType
@@ -44,8 +46,12 @@ enum class CircleDragType
Target
};
void init();
void init(DrawData& drawData, void* customData);
void draw(DrawData& drawData, void* customDataVoid);
bool drawCircle(float xOffset, CircleDragType dragType, const void* id, ImVec2* outCirclePos = nullptr);
void invisibleDragArea(const void* id, ImVec2& size);
void drawCircle(ImVec2* outCircleCenter);
bool inlineButton(const char* title, const void* id);
std::vector<NodeElement>::iterator cleanEraseElement(std::vector<NodeElement>& vector, std::vector<NodeElement>::iterator toErase, CustomDrawData* data);
bool invisibleInlineButton(const char* title, const char* id);
std::vector<NodeElement>::iterator cleanEraseElement(std::vector<NodeElement>& vector, std::vector<NodeElement>::iterator toErase, ApplicationData* data);
void cleanEreaseNodeElements(NodeWindow& node, ApplicationData* data);