/
ElevatorMask.h
69 lines (41 loc) · 1.14 KB
/
ElevatorMask.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//
// Created by crocdialer on 9/21/19.
//
#pragma once
#include "gl/Fbo.hpp"
#include "gl/Scene.hpp"
#include "gl/Noise.hpp"
#include "MaskGenerator.hpp"
namespace kinski::gl
{
DEFINE_CLASS_PTR(ElevatorMask)
class ElevatorMask : public MaskGenerator
{
public:
static ElevatorMaskPtr create(const glm::vec2 &res);
void update(float delta_time) override;
gl::Texture texture() const override;
void set_resolution(const glm::vec2 &res);
void set_speed(float s){ m_speed = s; }
void set_line_thickness(float t){ m_line_thickness = t; }
void set_spawn_frequency(float f){ m_spawn_frequency = f; }
void set_force_spawn(bool b){ m_force_spawn = b; }
private:
struct line_t
{
float position;
float thickness;
};
ElevatorMask() = default;
gl::FboPtr m_fbo;
glm::vec2 m_resolution = glm::vec2(640, 480);
float m_speed = .05f;
float m_line_thickness = .05f;
float m_spawn_frequency = 2.f;
float m_line_thickness_variance = .4f;
float m_time_accum = 0.0;
bool m_force_spawn = false;
std::deque<line_t> m_lines;
// std::normal_distribution
};
}