#pragma once #include #include "entities/solid_box.hpp" #include "utils/light.hpp" #include "utils/globals.hpp" namespace Nimbin { class Camera; class GlRenderer; struct Plate final : public SolidBox { static constexpr float _HALF_W = 0.6f; static constexpr float _HALF_H = 0.05f; static constexpr float _HALF_D = 0.6f; Vec3 base_pos {}; double hover_phase { 0.0 }; double pulse { 0.0 }; bool active { false }; bool was_active{ false }; Plate(Vec3 world_pos) : SolidBox( world_pos, Vec3{ _HALF_W, _HALF_H, _HALF_D }, SDL_FColor{ 0.3f, 1.0f, 0.6f, 1.0f }, SDL_FColor{ 0.6f, 1.0f, 0.8f, 1.0f }, false), base_pos(world_pos) {} void tick(double dt); void draw(GlRenderer& gl, const Camera& cam, const Light& light) const override; }; } // namespace Nimbin