6352e8e319
all at once
75 lines
1.5 KiB
C++
75 lines
1.5 KiB
C++
#ifndef STAR_PARALLAX_HPP
|
|
#define STAR_PARALLAX_HPP
|
|
|
|
#include "StarMaybe.hpp"
|
|
#include "StarColor.hpp"
|
|
#include "StarPlantDatabase.hpp"
|
|
|
|
namespace Star {
|
|
|
|
STAR_CLASS(Parallax);
|
|
STAR_STRUCT(ParallaxLayer);
|
|
|
|
struct ParallaxLayer {
|
|
ParallaxLayer();
|
|
ParallaxLayer(Json const& store);
|
|
|
|
Json store() const;
|
|
|
|
void addImageDirectives(String const& newDirectives);
|
|
void fadeToSkyColor(Color skyColor);
|
|
|
|
StringList textures;
|
|
String directives;
|
|
float alpha;
|
|
Vec2F parallaxValue;
|
|
Vec2B repeat;
|
|
Maybe<float> tileLimitTop;
|
|
Maybe<float> tileLimitBottom;
|
|
float verticalOrigin;
|
|
float zLevel;
|
|
Vec2F parallaxOffset;
|
|
String timeOfDayCorrelation;
|
|
float 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;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|