135 lines
3.2 KiB
C++
135 lines
3.2 KiB
C++
#pragma once
|
|
|
|
#include "Entity.hpp"
|
|
|
|
#include <algorithm>
|
|
#include <cmath>
|
|
|
|
struct TransformComponent : public Component {
|
|
float x = 0.0f;
|
|
float y = 0.0f;
|
|
void Setup() override {}
|
|
void Update(float) override {}
|
|
void Cleanup() override {}
|
|
};
|
|
|
|
struct PhysicsComponent : public Component {
|
|
float vx = 0.0f;
|
|
float vy = 0.0f;
|
|
float speedCap = 400.0f;
|
|
void Setup() override {}
|
|
void Update(float dt) override {
|
|
auto transform = entity->GetComponent<TransformComponent>();
|
|
if (!transform) {
|
|
return;
|
|
}
|
|
|
|
const float speed = std::sqrt(vx * vx + vy * vy);
|
|
if (speed > speedCap && speed > 0.0f) {
|
|
const float scale = speedCap / speed;
|
|
vx *= scale;
|
|
vy *= scale;
|
|
}
|
|
|
|
transform->get().x += vx * dt;
|
|
transform->get().y += vy * dt;
|
|
}
|
|
void Cleanup() override {}
|
|
};
|
|
|
|
struct GravityWellComponent : public Component {
|
|
float mass = 150000.0f;
|
|
float minDist = 30.0f;
|
|
bool active = false;
|
|
void Setup() override {}
|
|
void Update(float) override {}
|
|
void Cleanup() override {}
|
|
};
|
|
|
|
struct GravityReceiverComponent : public Component {
|
|
Entity *well = nullptr;
|
|
bool inVoid = false;
|
|
void Setup() override {}
|
|
void Update(float) override {}
|
|
void Cleanup() override {}
|
|
};
|
|
|
|
struct ColliderComponent : public Component {
|
|
float radius = 8.0f;
|
|
void Setup() override {}
|
|
void Update(float) override {}
|
|
void Cleanup() override {}
|
|
};
|
|
|
|
struct ScrollComponent : public Component {
|
|
float scrollX = 0.0f;
|
|
float speed = 2.0f;
|
|
float accel = 0.018f;
|
|
void Setup() override {}
|
|
void Update(float dt) override {
|
|
speed += accel * dt;
|
|
scrollX += speed * dt * 60.0f;
|
|
}
|
|
void Cleanup() override {}
|
|
};
|
|
|
|
struct ScrollableComponent : public Component {
|
|
float worldX = 0.0f;
|
|
void Setup() override {}
|
|
void Update(float) override {}
|
|
void Cleanup() override {}
|
|
};
|
|
|
|
struct SpawnComponent : public Component {
|
|
float cursorWX = 0.0f;
|
|
void Setup() override {}
|
|
void Update(float) override {}
|
|
void Cleanup() override {}
|
|
};
|
|
|
|
struct TrailComponent : public Component {
|
|
void Setup() override {}
|
|
void Update(float) override {}
|
|
void Cleanup() override {}
|
|
};
|
|
|
|
struct ProjectionComponent : public Component {
|
|
void Setup() override {}
|
|
void Update(float) override {}
|
|
void Cleanup() override {}
|
|
};
|
|
|
|
struct MeterComponent : public Component {
|
|
float value = 60.0f;
|
|
void Setup() override {}
|
|
void Update(float) override {}
|
|
void Cleanup() override {}
|
|
};
|
|
|
|
struct HudComponent : public Component {
|
|
void Setup() override {}
|
|
void Update(float) override {}
|
|
void Cleanup() override {}
|
|
};
|
|
|
|
struct RenderComponent : public Component {
|
|
virtual void Draw() {}
|
|
void Setup() override {}
|
|
void Update(float) override {}
|
|
void Cleanup() override {}
|
|
};
|
|
|
|
struct NullZoneComponent : public Component {
|
|
float width = 70.0f;
|
|
void Setup() override {}
|
|
void Update(float) override {}
|
|
void Cleanup() override {}
|
|
};
|
|
|
|
struct CollectibleComponent : public Component {
|
|
bool collected = false;
|
|
void Setup() override {}
|
|
void Update(float) override {}
|
|
void Cleanup() override {}
|
|
};
|