TazGraph Project v0.1.0
Loading...
Searching...
No Matches
SpringComponent.h
1#pragma once
2
3#include "../../../Components.h"
4
6{
7private:
8 int deltaThreshold = 300;
9 float springStrength = 0.00002f;
10public:
11
13 {
14
15 }
16
18
19 }
20
21 void init() override {
22 }
23
24 void update(float deltaTime) override {
25 NodeEntity* a = entity->getFromNode();
26 NodeEntity* b = entity->getToNode();
27
28 glm::vec3 posA = a->GetComponent<TransformComponent>().bodyCenter;
29 glm::vec3 posB = b->GetComponent<TransformComponent>().bodyCenter;
30
31 glm::vec3 delta = posB - posA;
32 glm::vec3 attraction = delta * springStrength;
33
34 if (glm::length(delta) > deltaThreshold) {
35 a->GetComponent<TransformComponent>().velocity += attraction;
36 b->GetComponent<TransformComponent>().velocity -= attraction;
37 }
38
39 /*springStrength -= 0.001f;
40 if (springStrength < 0) {
41 entity->removeComponent<SpringComponent>();
42 }*/
43 }
44
45 void draw(size_t v_index, LineRenderer& batch, TazGraphEngine::Window& window) {
46 }
47
48 std::string GetComponentName() override {
49 return "SpringComponent";
50 }
51
52 void showGUI() override {
53 ImGui::Separator();
54
55 ImGui::Text("SpringComponent");
56
57 }
58};
Definition LineRenderer.h:131
Definition GECS.h:133
Definition GECSEntity.h:43
Definition SpringComponent.h:6
Definition Window.h:18
Definition TransformComponent.h:6