Files
viseq/src/connection.h
T
2024-10-15 02:59:26 +02:00

34 lines
1.1 KiB
C++

#pragma once
#include "button.h"
#include "node.h"
class Connection{
public:
Connection() {}
Connection(Node* v1, Node* v2) : v1(v1), v2(v2) {}
Node* v1;
Node* v2;
bool v1_v2 = true;
bool v2_v1 = true;
bool active = false;
void draw(){
Vec2D<float> v1_position = v1->position - ((v1->position - v2->position)).norm() * (v1->radius + 10.0f);
Vec2D<float> v2_position = v2->position - ((v2->position - v1->position)).norm() * (v2->radius + 10.0f);
Color c = {229, 181, 103, 255};
if(active) c = {108, 153, 187, 255};
DrawLine(v1_position.x, v1_position.y, v2_position.x, v2_position.y, c);
Vec2D<float> from_to_handle = v1->position - ((v1->position - v2->position)).norm() * (v1->radius + 35);
Vec2D<float> to_from_handle = v2->position - ((v2->position - v1->position)).norm() * (v2->radius + 35);
if(ViButton(from_to_handle.x, from_to_handle.y, 8.0f, v1_v2 ? (Color){232, 125, 62, 255} : (Color){232, 50, 32, 255} )) v1_v2 = !v1_v2;
if(ViButton(to_from_handle.x, to_from_handle.y, 8.0f, v2_v1 ? (Color){232, 125, 62, 255} : (Color){232, 50, 32, 255} )) v2_v1 = !v2_v1;
}
};