connectors need fixing
This commit is contained in:
@@ -93,8 +93,6 @@ namespace VISEQ::GRAPH {
|
|||||||
if(!partner.expired() || connecting) ViTexButton(SCREEN_MOUSE, position, rotation, 8.0f,
|
if(!partner.expired() || connecting) ViTexButton(SCREEN_MOUSE, position, rotation, 8.0f,
|
||||||
TEXTURES::tex_connector_connected, TEXTURES::tex_connector_hover,
|
TEXTURES::tex_connector_connected, TEXTURES::tex_connector_hover,
|
||||||
ColorLerp(Fade(VS_COLOR_WHITE, .0f), Fade(VS_COLOR_WHITE, 1.0f), opacity));
|
ColorLerp(Fade(VS_COLOR_WHITE, .0f), Fade(VS_COLOR_WHITE, 1.0f), opacity));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-20
@@ -53,7 +53,7 @@ namespace VISEQ::GRAPH{
|
|||||||
void GraphManager::addNode(SPTR_Node node){
|
void GraphManager::addNode(SPTR_Node node){
|
||||||
std::cout << "added node " << node->id << std::endl;
|
std::cout << "added node " << node->id << std::endl;
|
||||||
nodes.insert(nodes.end(), node);
|
nodes.insert(nodes.end(), node);
|
||||||
node->update();
|
nodes.back()->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GraphManager::addConnection(WPTR_Node from, WPTR_Node to){
|
void GraphManager::addConnection(WPTR_Node from, WPTR_Node to){
|
||||||
@@ -64,10 +64,17 @@ namespace VISEQ::GRAPH{
|
|||||||
edges.back()->edgeType = et;
|
edges.back()->edgeType = et;
|
||||||
edges.back()->start = from;
|
edges.back()->start = from;
|
||||||
edges.back()->end = to;
|
edges.back()->end = to;
|
||||||
|
from.lock()->update();
|
||||||
|
to.lock()->update();
|
||||||
edges.back()->start_conn = from.lock()->connectors.back();
|
edges.back()->start_conn = from.lock()->connectors.back();
|
||||||
edges.back()->end_conn = to.lock()->connectors.back();
|
edges.back()->end_conn = to.lock()->connectors.back();
|
||||||
|
|
||||||
|
|
||||||
from.lock()->connections.push_back(edges.back());
|
from.lock()->connections.push_back(edges.back());
|
||||||
to.lock()->connections.push_back(edges.back());
|
to.lock()->connections.push_back(edges.back());
|
||||||
|
|
||||||
|
from.lock()->connectors.back()->partner = to.lock()->getConnector();
|
||||||
|
to.lock()->connectors.back()->partner = from.lock()->getConnector();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -354,13 +361,11 @@ namespace VISEQ::GRAPH{
|
|||||||
float v1_v2_distance = v1_position.dist(&v2_position);
|
float v1_v2_distance = v1_position.dist(&v2_position);
|
||||||
|
|
||||||
if(v1_v2_distance < 100) c->switches_offset = v1_v2_distance/2.3f;
|
if(v1_v2_distance < 100) c->switches_offset = v1_v2_distance/2.3f;
|
||||||
Vec2Df from_to_handle = c->start.lock()->position - ((c->start.lock()->position - c->end.lock()->position)).norm()*45.0f; //.norm() * (c->start.lock()->radius + c->switches_offset);
|
Vec2Df from_to_handle = c->start.lock()->position - ((c->start.lock()->position - c->end.lock()->position)).norm()*45.0f;
|
||||||
Vec2Df to_from_handle = c->end.lock()->position - ((c->end.lock()->position - c->start.lock()->position)).norm()*45.0f; //.norm() * (c->end.lock()->radius + c->switches_offset);
|
Vec2Df to_from_handle = c->end.lock()->position - ((c->end.lock()->position - c->start.lock()->position)).norm()*45.0f;
|
||||||
Vec2Df middle_handle_2 = c->end.lock()->position - ((c->end.lock()->position - c->start.lock()->position)).norm()*65.0f;
|
Vec2Df middle_handle_2 = c->end.lock()->position - ((c->end.lock()->position - c->start.lock()->position)).norm()*65.0f;
|
||||||
Vec2Df middle_handle = c->start.lock()->position - ((c->start.lock()->position - c->end.lock()->position)).norm()*65.0f;
|
Vec2Df middle_handle = c->start.lock()->position - ((c->start.lock()->position - c->end.lock()->position)).norm()*65.0f;
|
||||||
Vec2Df center_handle = c->end.lock()->position - ((c->end.lock()->position - c->start.lock()->position))*0.5f;
|
Vec2Df center_handle = c->end.lock()->position - ((c->end.lock()->position - c->start.lock()->position))*0.5f;
|
||||||
//Vec2Df flip_handle = middle_handle + (v1_position - v2_position).norm().orth() * (v1_v2_distance < 120.0f ? Clamp((120.0f - v1_v2_distance)*0.2, 0.f, 20.f) : 1.0f);
|
|
||||||
//Vec2Df flip_handle_2 = middle_handle_2 + (v1_position - v2_position).norm().orth() * (v1_v2_distance < 120.0f ? Clamp((120.0f - v1_v2_distance)*-0.2, -20.f, 0.f) : 1.0f);
|
|
||||||
|
|
||||||
Vec2Df delete_position = center_handle + (c->start.lock()->position - c->end.lock()->position).norm().orth() * 12.0f;
|
Vec2Df delete_position = center_handle + (c->start.lock()->position - c->end.lock()->position).norm().orth() * 12.0f;
|
||||||
Vec2Df split_position = center_handle - (c->start.lock()->position - c->end.lock()->position).norm().orth() * 12.0f;
|
Vec2Df split_position = center_handle - (c->start.lock()->position - c->end.lock()->position).norm().orth() * 12.0f;
|
||||||
@@ -374,15 +379,6 @@ namespace VISEQ::GRAPH{
|
|||||||
float opacity_from_normalized = Clamp((float)opacity_from / 255.0f, .0f, 1.0f);
|
float opacity_from_normalized = Clamp((float)opacity_from / 255.0f, .0f, 1.0f);
|
||||||
float opacity_to_normalized = Clamp((float)opacity_to / 255.0f, .0f, 1.0f);
|
float opacity_to_normalized = Clamp((float)opacity_to / 255.0f, .0f, 1.0f);
|
||||||
|
|
||||||
// float midi_gate_v1 = 0.0f;
|
|
||||||
// float midi_gate_v2 = 0.0f;
|
|
||||||
|
|
||||||
// if(c->start.lock()->getNodeType() == NodeType::MIDINODE){
|
|
||||||
// midi_gate_v1 = Clamp((4.f / 1000.f) * std::dynamic_pointer_cast<MidiNode>(c->start.lock())->getNotes().gate, 1.f, 4.f);
|
|
||||||
// }
|
|
||||||
// if(c->end.lock()->getNodeType() == NodeType::MIDINODE){
|
|
||||||
// midi_gate_v2 = Clamp((4.f / 1000.f) * std::dynamic_pointer_cast<MidiNode>(c->end.lock())->getNotes().gate, 1.f, 4.f);
|
|
||||||
// }
|
|
||||||
// Line with small connector circles
|
// Line with small connector circles
|
||||||
if(c->end.lock()->getNodeType() == NodeType::MIDINODE && c->start.lock()->getNodeType() == NodeType::MIDINODE){
|
if(c->end.lock()->getNodeType() == NodeType::MIDINODE && c->start.lock()->getNodeType() == NodeType::MIDINODE){
|
||||||
|
|
||||||
@@ -404,12 +400,6 @@ namespace VISEQ::GRAPH{
|
|||||||
DrawTextPro(GetFontDefault(), std::format("{:.1f}",d).c_str(), text_position, (Vector2){0,0}, rotation, 10.0f, 2.0f, VS_COLOR_PINK);
|
DrawTextPro(GetFontDefault(), std::format("{:.1f}",d).c_str(), text_position, (Vector2){0,0}, rotation, 10.0f, 2.0f, VS_COLOR_PINK);
|
||||||
if( (int)d % 60 == 0) DrawTextPro(GetFontDefault(), frac.c_str(), text_position_frac, (Vector2){0,0}, rotation, 10.0f, 2.0f, VS_COLOR_PINK);
|
if( (int)d % 60 == 0) DrawTextPro(GetFontDefault(), frac.c_str(), text_position_frac, (Vector2){0,0}, rotation, 10.0f, 2.0f, VS_COLOR_PINK);
|
||||||
}
|
}
|
||||||
// if(midi_gate_v1 == 4.0f) col = VS_COLOR_RED;
|
|
||||||
// DrawCircle(v1_position.x, v1_position.y, midi_gate_v1, col);
|
|
||||||
//
|
|
||||||
// col = {229, 181, 103, 255};
|
|
||||||
// if(midi_gate_v2 == 4.0f) col = VS_COLOR_RED;
|
|
||||||
// DrawCircle(v2_position.x, v2_position.y, midi_gate_v2, col);
|
|
||||||
|
|
||||||
if(!c->start.lock()->picked_up && !c->end.lock()->picked_up){
|
if(!c->start.lock()->picked_up && !c->end.lock()->picked_up){
|
||||||
// On/Off switches on both sides
|
// On/Off switches on both sides
|
||||||
|
|||||||
@@ -149,8 +149,8 @@ namespace VISEQ::INTERACTION{
|
|||||||
auto connector = std::dynamic_pointer_cast<Connector>(e.item);
|
auto connector = std::dynamic_pointer_cast<Connector>(e.item);
|
||||||
if(found && partner != e){
|
if(found && partner != e){
|
||||||
auto connector_to = std::dynamic_pointer_cast<Connector>(partner.item);
|
auto connector_to = std::dynamic_pointer_cast<Connector>(partner.item);
|
||||||
connector->partner = connector_to;
|
//connector->partner = connector_to;
|
||||||
connector_to->partner = connector;
|
//connector_to->partner = connector;
|
||||||
gm->addConnection(std::dynamic_pointer_cast<Node>(connector->parent.lock()), std::dynamic_pointer_cast<Node>(connector_to->parent.lock()));
|
gm->addConnection(std::dynamic_pointer_cast<Node>(connector->parent.lock()), std::dynamic_pointer_cast<Node>(connector_to->parent.lock()));
|
||||||
} else if (partner != e){
|
} else if (partner != e){
|
||||||
if(KEYS_DOWN.alt){
|
if(KEYS_DOWN.alt){
|
||||||
|
|||||||
@@ -66,6 +66,16 @@ namespace VISEQ::GRAPH::NODES {
|
|||||||
in_selection_rect = CheckCollisionPointRec(position, state->selection);
|
in_selection_rect = CheckCollisionPointRec(position, state->selection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::weak_ptr<Connector> Node::getConnector(){
|
||||||
|
for(auto c : connectors){
|
||||||
|
if(c->partner.expired()) {
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
addConnector();
|
||||||
|
return connectors.back();
|
||||||
|
}
|
||||||
|
|
||||||
void Node::draw(Vec2Df mp, Camera2D cam) {}
|
void Node::draw(Vec2Df mp, Camera2D cam) {}
|
||||||
|
|
||||||
void Node::draw() {
|
void Node::draw() {
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ namespace VISEQ::GRAPH::NODES {
|
|||||||
std::shared_ptr<Node> getPtr();
|
std::shared_ptr<Node> getPtr();
|
||||||
virtual bool hovering() override;
|
virtual bool hovering() override;
|
||||||
void addConnector();
|
void addConnector();
|
||||||
|
std::weak_ptr<Connector> getConnector();
|
||||||
void removeConnector(std::weak_ptr<Connector> connector);
|
void removeConnector(std::weak_ptr<Connector> connector);
|
||||||
virtual NodeType getNodeType() const;
|
virtual NodeType getNodeType() const;
|
||||||
void deselect() override;
|
void deselect() override;
|
||||||
|
|||||||
Reference in New Issue
Block a user