| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- #pragma once
- #include <memory>
- #include <glm/glm.hpp>
- #include <utility>
- #include "Object.h"
- #include "Types.h"
- #include "WallpaperEngine/Data/Utils/TypeCaster.h"
- namespace WallpaperEngine::Data::Model {
- using namespace WallpaperEngine::Data::Utils;
- struct WallpaperData {
- std::string filename;
- Project& project;
- };
- class Wallpaper : public TypeCaster, public WallpaperData {
- public:
- explicit Wallpaper (WallpaperData data) noexcept : TypeCaster (), WallpaperData (std::move (data)) { };
- ~Wallpaper () override = default;
- };
- class Video final : public Wallpaper {
- public:
- explicit Video (WallpaperData data) noexcept : Wallpaper (std::move (data)) { }
- ~Video () override = default;
- };
- class Web final : public Wallpaper {
- public:
- explicit Web (WallpaperData data) noexcept : Wallpaper (std::move (data)) { }
- ~Web () override = default;
- };
- struct SceneData {
- struct {
- glm::vec3 ambient;
- glm::vec3 skylight;
- UserSettingUniquePtr clear;
- } colors;
- /**
- * Camera configuration
- */
- struct Camera {
- /** Enable fade effect */
- bool fade;
- /** Used by the software to allow the users to preview the background or not? */
- bool preview;
- /**
- * Bloom effect configuration
- */
- struct {
- /** If bloom is enabled or not */
- UserSettingUniquePtr enabled;
- /** Bloom's strength to pass onto the shader */
- UserSettingUniquePtr strength;
- /** Bloom's threshold to pass onto the shader */
- UserSettingUniquePtr threshold;
- } bloom;
- /**
- * Parallax effect configuration
- */
- struct {
- UserSettingUniquePtr enabled;
- UserSettingUniquePtr amount;
- UserSettingUniquePtr delay;
- UserSettingUniquePtr mouseInfluence;
- } parallax;
- /**
- * Shake effect configuration
- */
- struct {
- UserSettingUniquePtr enabled;
- UserSettingUniquePtr amplitude;
- UserSettingUniquePtr roughness;
- UserSettingUniquePtr speed;
- } shake;
- /**
- * Position configuration
- */
- struct {
- glm::vec3 center;
- glm::vec3 eye;
- glm::vec3 up;
- } configuration;
- /**
- * Projection information
- */
- struct {
- int width;
- int height;
- bool isAuto;
- float nearz;
- float farz;
- float fov;
- } projection;
- } camera;
- ObjectList objects;
- };
- class Scene final : public Wallpaper, public SceneData {
- public:
- explicit Scene (WallpaperData data, SceneData sceneData) noexcept :
- Wallpaper (std::move (data)), SceneData (std::move (sceneData)) { }
- ~Scene () override = default;
- };
- } // namespace WallpaperEngine::Data::Model
|