blob: 5f6b8d00e15c6d6412f524459dfed68878d47147 (
plain)
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
69
70
71
72
73
74
75
|
#pragma once
#include "StarMaybe.hpp"
#include "StarColor.hpp"
#include "StarPlantDatabase.hpp"
#include "StarDirectives.hpp"
namespace Star {
STAR_CLASS(Parallax);
STAR_STRUCT(ParallaxLayer);
struct ParallaxLayer {
ParallaxLayer();
ParallaxLayer(Json const& store);
Json store() const;
void addImageDirectives(Directives const& newDirectives);
void fadeToSkyColor(Color skyColor);
List<String> textures;
Directives directives;
unsigned frameNumber;
int frameOffset;
float animationCycle;
float alpha;
Vec2F parallaxValue;
Vec2B repeat;
Maybe<float> tileLimitTop;
Maybe<float> tileLimitBottom;
float verticalOrigin;
float zLevel;
Vec2F parallaxOffset;
String timeOfDayCorrelation;
Vec2F speed;
bool unlit;
bool lightMapped;
float fadePercent;
};
typedef List<ParallaxLayer> ParallaxLayers;
DataStream& operator>>(DataStream& ds, ParallaxLayer& parallaxLayer);
DataStream& operator<<(DataStream& ds, ParallaxLayer const& parallaxLayer);
// Object managing and rendering the parallax for a World
class Parallax {
public:
Parallax(String const& assetFile,
uint64_t seed,
float verticalOrigin,
float hueShift,
Maybe<TreeVariant> parallaxTreeVariant = {});
Parallax(Json const& store);
Json store() const;
void fadeToSkyColor(Color const& skyColor);
ParallaxLayers const& layers() const;
private:
void buildLayer(Json const& layerSettings, String const& kind);
uint64_t m_seed;
float m_verticalOrigin;
Maybe<TreeVariant> m_parallaxTreeVariant;
float m_hueShift;
String m_imageDirectory;
ParallaxLayers m_layers;
};
}
|