kaliber/src/demo/sky_quad.h

59 lines
1.2 KiB
C
Raw Normal View History

2020-04-13 11:24:53 +00:00
#ifndef SKY_QUAD_H
#define SKY_QUAD_H
#include "../base/vecmath.h"
#include "../engine/animatable.h"
#include "../engine/animator.h"
#include <array>
#include <memory>
#include <string>
#include <vector>
namespace eng {
class Shader;
} // namespace eng
class SkyQuad : public eng::Animatable {
public:
SkyQuad();
~SkyQuad();
SkyQuad(const SkyQuad&) = delete;
SkyQuad& operator=(const SkyQuad&) = delete;
bool Create();
void Update(float delta_time);
// Animatable interface.
void SetFrame(size_t frame) override {}
size_t GetFrame() const override { return 0; }
size_t GetNumFrames() const override { return 0; }
2021-02-18 14:42:08 +00:00
void SetColor(const base::Vector4f& color) override { nebula_color_ = color; }
base::Vector4f GetColor() const override { return nebula_color_; }
2020-04-13 11:24:53 +00:00
// Drawable interface.
void Draw(float frame_frac) override;
2020-04-13 11:24:53 +00:00
void ContextLost();
2021-02-18 14:42:08 +00:00
void SwitchColor(const base::Vector4f& color);
2020-04-13 11:24:53 +00:00
void SetSpeed(float speed);
2020-04-13 11:24:53 +00:00
private:
std::unique_ptr<eng::Shader> shader_;
2020-04-13 11:24:53 +00:00
2021-02-18 14:42:08 +00:00
base::Vector2f sky_offset_ = {0, 0};
base::Vector2f last_sky_offset_ = {0, 0};
base::Vector4f nebula_color_ = {0, 0, 0, 1};
base::Vector2f scale_ = {1, 1};
2020-04-13 11:24:53 +00:00
eng::Animator color_animator_;
float speed_ = 0;
2020-04-13 11:24:53 +00:00
};
#endif // SKY_QUAD_H