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
26 glm::vec3 posA = entity->fromPos;
27 glm::vec3 posB = entity->toPos;
28
29 glm::vec3 delta = posB - posA;
30 glm::vec3 attraction = delta * springStrength;
31
32 if (glm::length(delta) > deltaThreshold) {
33 entity->getManager()->getEntityFromId(
34 entity->getFromNode()
35 )->GetComponent<TransformComponent>().velocity += attraction;
36 entity->getManager()->getEntityFromId(
37 entity->getToNode()
38 )->GetComponent<TransformComponent>().velocity -= attraction;
39 }
40
41 /*springStrength -= 0.001f;
42 if (springStrength < 0) {
43 entity->removeComponent<SpringComponent>();
44 }*/
45 }
46
47 void draw(size_t v_index, LineRenderer& batch, TazGraphEngine::Window& window) {
48 }
49
50 std::string GetComponentName() override {
51 return "SpringComponent";
52 }
53
54 void showGUI(std::vector<BaseComponent*> otherComponents = {}) override {
55 ImGui::Separator();
56
57 ImGui::Text("SpringComponent");
58
59 }
60
61 void showGUI(std::vector<BaseComponent*> otherComponents, std::vector<Entity*> otherEntities) override {
62 ImGui::Separator();
63
64 ImGui::Text("SpringComponent");
65 };
66};
Definition LineRenderer.h:6
Definition GECS.h:141
glm::vec3 fromPos
When DirectPosition.
Definition GECSEntity.h:124
Definition SpringComponent.h:6
Definition Window.h:12
Definition TransformComponent.h:7