CScene.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #pragma once
  2. #include <irrlicht/irrlicht.h>
  3. #include "CObject.h"
  4. #include "CWallpaper.h"
  5. #include "Core.h"
  6. #include "WallpaperEngine/Core/Scenes/CCamera.h"
  7. #include "WallpaperEngine/Core/Scenes/CProjection.h"
  8. namespace WallpaperEngine::Core
  9. {
  10. using json = nlohmann::json;
  11. class CObject;
  12. class CScene : public CWallpaper
  13. {
  14. public:
  15. static CScene* fromFile (const irr::io::path& filename);
  16. const std::vector<CObject*>& getObjects () const;
  17. const irr::video::SColorf& getAmbientColor() const;
  18. const bool isBloom() const;
  19. const irr::f64 getBloomStrength() const;
  20. const irr::f64 getBloomThreshold() const;
  21. const bool isCameraFade() const;
  22. const bool isCameraParallax() const;
  23. const irr::f64 getCameraParallaxAmount() const;
  24. const irr::f64 getCameraParallaxDelay() const;
  25. const irr::f64 getCameraParallaxMouseInfluence() const;
  26. const bool isCameraPreview() const;
  27. const bool isCameraShake() const;
  28. const irr::f64 getCameraShakeAmplitude() const;
  29. const irr::f64 getCameraShakeRoughness() const;
  30. const irr::f64 getCameraShakeSpeed() const;
  31. const irr::video::SColorf& getClearColor() const;
  32. const Scenes::CProjection* getOrthogonalProjection() const;
  33. const irr::video::SColorf& getSkylightColor() const;
  34. const Scenes::CCamera* getCamera () const;
  35. protected:
  36. friend class CWallpaper;
  37. CScene (
  38. Scenes::CCamera* camera,
  39. irr::video::SColorf ambientColor,
  40. bool bloom,
  41. irr::f64 bloomStrength,
  42. irr::f64 bloomThreshold,
  43. bool cameraFade,
  44. bool cameraParallax,
  45. irr::f64 cameraParallaxAmount,
  46. irr::f64 cameraParallaxDelay,
  47. irr::f64 cameraParallaxMouseInfluence,
  48. bool cameraPreview,
  49. bool cameraShake,
  50. irr::f64 cameraShakeAmplitude,
  51. irr::f64 cameraShakeRoughness,
  52. irr::f64 cameraShakeSpeed,
  53. irr::video::SColorf clearColor,
  54. Scenes::CProjection* orthogonalProjection,
  55. irr::video::SColorf skylightColor
  56. );
  57. static const std::string Type;
  58. void insertObject (CObject* object);
  59. private:
  60. Scenes::CCamera* m_camera;
  61. // data from general section on the json
  62. irr::video::SColorf m_ambientColor;
  63. bool m_bloom;
  64. irr::f64 m_bloomStrength;
  65. irr::f64 m_bloomThreshold;
  66. bool m_cameraFade;
  67. bool m_cameraParallax;
  68. irr::f64 m_cameraParallaxAmount;
  69. irr::f64 m_cameraParallaxDelay;
  70. irr::f64 m_cameraParallaxMouseInfluence;
  71. bool m_cameraPreview;
  72. bool m_cameraShake;
  73. irr::f64 m_cameraShakeAmplitude;
  74. irr::f64 m_cameraShakeRoughness;
  75. irr::f64 m_cameraShakeSpeed;
  76. irr::video::SColorf m_clearColor;
  77. Scenes::CProjection* m_orthogonalProjection;
  78. irr::video::SColorf m_skylightColor;
  79. std::vector<CObject*> m_objects;
  80. };
  81. };