TazGraph Project v0.1.0
Loading...
Searching...
No Matches
Line_w_Color.h
1#pragma once
2
3#include "../../../Components.h"
4
6{
7public:
8 std::string temp_lineParsed = "";
9
10 Color default_src_color = { 255, 255, 255, 255 };
11 Color src_color = { 255, 255, 255, 255 };
12
13 Color default_dest_color = { 255, 255, 255, 255 };
14 Color dest_color = { 255, 255, 255, 255 };
15
16 FlashAnimation flash_animation;
17
19 {
20
21 }
22
24
25 }
26
27 void init() override {
28 }
29
30 void update(float deltaTime) override {
31 }
32
33 void draw(size_t v_index, LineRenderer& batch, TazGraphEngine::Window& window) {
34 //float tempScreenScale = window.getScale();
35
36 glm::vec3 fromNodeCenter = entity->getFromNode()->GetComponent<TransformComponent>().getCenterTransform();
37 glm::vec3 toNodeCenter = entity->getToNode()->GetComponent<TransformComponent>().getCenterTransform();
38
39 batch.drawLine(v_index, fromNodeCenter, toNodeCenter, src_color, dest_color);
40 }
41
42 void drawWithPorts(size_t v_index, LineRenderer& batch, TazGraphEngine::Window& window) {
43 //float tempScreenScale = window.getScale();
44
45 glm::vec3 fromPortCenter = entity->getFromNode()->children[entity->fromPort]->GetComponent<TransformComponent>().getCenterTransform();
46 glm::vec3 toPortCenter = entity->getToNode()->children[entity->toPort]->GetComponent<TransformComponent>().getCenterTransform();
47
48 batch.drawLine(v_index, fromPortCenter, toPortCenter, src_color, dest_color);
49 }
50
51 void setSrcColor(Color clr) {
52 default_src_color = clr;
53 src_color = clr;
54 }
55
56 void setDestColor(Color clr) {
57 default_dest_color = clr;
58 dest_color = clr;
59 }
60
61 void SetFlashAnimation(int idX, int idY, size_t fr, float sp, const Animation::animType type, const std::vector<float>& flashTimes, Color flashC, int reps = 0)
62 {
63 flash_animation = FlashAnimation(idX, idY, fr, sp, type, flashTimes, flashC, reps);
64 }
65
66 void setFlashFrame() {
67 float t = this->flash_animation.interpolation_a;
68
69 if (t < 0.33f) {
70 this->src_color = Color::fromVec4(glm::mix(default_src_color.toVec4(), this->flash_animation.flashColor.toVec4(), 3 * t));
71 }
72 else if (t < 0.66f) {
73 this->src_color = Color::fromVec4(glm::mix(this->flash_animation.flashColor.toVec4(), default_src_color.toVec4(), std::min((3 * (t - 0.33f)), 1.0f)));
74 this->dest_color = Color::fromVec4(glm::mix(default_dest_color.toVec4(), this->flash_animation.flashColor.toVec4(), 3 * (t - 0.33f)));
75 }
76 else {
77 this->dest_color = Color::fromVec4(glm::mix(this->flash_animation.flashColor.toVec4(), default_dest_color.toVec4(), std::min((3 * (t - 0.66f)), 1.0f)));
78 }
79 // Smooth transition using lerp (linear interpolation)
80
81 }
82
83 std::string GetComponentName() override {
84 return "Line_w_Color";
85 }
86
87 void showGUI() override {
88 ImGui::Separator();
89
90 ImGui::Text("Line: %s", temp_lineParsed.c_str());
91
92 ImVec4 a_color = ImVec4(src_color.r / 255.0f, src_color.g / 255.0f, src_color.b / 255.0f, src_color.a / 255.0f);
93 if (ImGui::ColorPicker4("Color Line Src", (float*)&a_color)) {
94 Color newColor = {
95 (GLubyte)(a_color.x * 255),
96 (GLubyte)(a_color.y * 255),
97 (GLubyte)(a_color.z * 255),
98 (GLubyte)(a_color.w * 255)
99 };
100
101 setSrcColor(newColor);
102 }
103
104
105 ImVec4 b_color = ImVec4(dest_color.r / 255.0f, dest_color.g / 255.0f, dest_color.b / 255.0f, dest_color.a / 255.0f);
106 if (ImGui::ColorPicker4("Color Line Dest", (float*)&b_color)) {
107 Color newColor = {
108 (GLubyte)(b_color.x * 255),
109 (GLubyte)(b_color.y * 255),
110 (GLubyte)(b_color.z * 255),
111 (GLubyte)(b_color.w * 255)
112 };
113
114 setDestColor(newColor);
115 }
116 }
117};
Definition LineRenderer.h:131
Definition Line_w_Color.h:6
Definition GECS.h:133
Definition Window.h:18
Definition TransformComponent.h:6
Definition Vertex.h:47
Definition FlashAnimation.h:10