Cpp11 initializers: last src root changeset (#6022)
[oweals/minetest.git] / src / sky.h
index 17d6c5f73ec3249f7119ff64dfec86d03912fccd..1fa25bd93d0a2761896fed47e2f00147eb501ecd 100644 (file)
--- a/src/sky.h
+++ b/src/sky.h
@@ -17,9 +17,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
 
-#include "irrlichttypes_extrabloated.h"
 #include <ISceneNode.h>
 #include "camera.h"
+#include "irrlichttypes_extrabloated.h"
 
 #ifndef SKY_HEADER
 #define SKY_HEADER
@@ -34,7 +34,7 @@ class Sky : public scene::ISceneNode
 {
 public:
        //! constructor
-       Sky(scene::ISceneNode* parent, scene::ISceneManager* mgr, s32 id,
+       Sky(scene::ISceneNode *parent, scene::ISceneManager *mgr, s32 id,
                        ITextureSource *tsrc);
 
        virtual void OnRegisterSceneNode();
@@ -42,22 +42,18 @@ public:
        //! renders the node.
        virtual void render();
 
-       virtual const aabb3f &getBoundingBox() const
-       { return m_box; }
+       virtual const aabb3f &getBoundingBox() const { return m_box; }
 
        // Used by Irrlicht for optimizing rendering
-       virtual video::SMaterial& getMaterial(u32 i)
-       { return m_materials[i]; }
+       virtual video::SMaterial &getMaterial(u32 i) { return m_materials[i]; }
 
        // Used by Irrlicht for optimizing rendering
-       virtual u32 getMaterialCount() const
-       { return SKY_MATERIAL_COUNT; }
+       virtual u32 getMaterialCount() const { return SKY_MATERIAL_COUNT; }
 
-       void update(float m_time_of_day, float time_brightness,
-                       float direct_brightness, bool sunlight_seen, CameraMode cam_mode,
-                       float yaw, float pitch);
+       void update(float m_time_of_day, float time_brightness, float direct_brightness,
+                       bool sunlight_seen, CameraMode cam_mode, float yaw, float pitch);
 
-       float getBrightness(){ return m_brightness; }
+       float getBrightness() { return m_brightness; }
 
        const video::SColor &getBgColor() const
        {
@@ -69,11 +65,14 @@ public:
                return m_visible ? m_skycolor : m_fallback_bg_color;
        }
 
-       bool getCloudsVisible() { return m_clouds_visible && m_visible; }
+       bool getCloudsVisible() { return m_clouds_visible && m_clouds_enabled; }
        const video::SColorf &getCloudColor() { return m_cloudcolor_f; }
 
-       void setVisible(bool visible){ m_visible = visible; }
-       void setFallbackBgColor(const video::SColor &fallback_bg_color){
+       void setVisible(bool visible) { m_visible = visible; }
+       // Set only from set_sky API
+       void setCloudsEnabled(bool clouds_enabled) { m_clouds_enabled = clouds_enabled; }
+       void setFallbackBgColor(const video::SColor &fallback_bg_color)
+       {
                m_fallback_bg_color = fallback_bg_color;
        }
 
@@ -86,7 +85,8 @@ private:
        {
                if (!m_sunlight_seen)
                        return 0;
-               float x = m_time_of_day >= 0.5 ? (1 - m_time_of_day) * 2 : m_time_of_day * 2;
+               float x = m_time_of_day >= 0.5 ? (1 - m_time_of_day) * 2
+                                              : m_time_of_day * 2;
 
                if (x <= 0.3)
                        return 0;
@@ -101,45 +101,45 @@ private:
        video::SColor m_mix_scolor(video::SColor col1, video::SColor col2, f32 factor)
        {
                video::SColor result = video::SColor(
-                       col1.getAlpha() * (1 - factor) + col2.getAlpha() * factor,
-                       col1.getRed() * (1 - factor) + col2.getRed() * factor,
-                       col1.getGreen() * (1 - factor) + col2.getGreen() * factor,
-                       col1.getBlue() * (1 - factor) + col2.getBlue() * factor);
+                               col1.getAlpha() * (1 - factor) + col2.getAlpha() * factor,
+                               col1.getRed() * (1 - factor) + col2.getRed() * factor,
+                               col1.getGreen() * (1 - factor) + col2.getGreen() * factor,
+                               col1.getBlue() * (1 - factor) + col2.getBlue() * factor);
                return result;
        }
        video::SColorf m_mix_scolorf(video::SColorf col1, video::SColorf col2, f32 factor)
        {
-               video::SColorf result = video::SColorf(
-                       col1.r * (1 - factor) + col2.r * factor,
-                       col1.g * (1 - factor) + col2.g * factor,
-                       col1.b * (1 - factor) + col2.b * factor,
-                       col1.a * (1 - factor) + col2.a * factor);
+               video::SColorf result =
+                               video::SColorf(col1.r * (1 - factor) + col2.r * factor,
+                                               col1.g * (1 - factor) + col2.g * factor,
+                                               col1.b * (1 - factor) + col2.b * factor,
+                                               col1.a * (1 - factor) + col2.a * factor);
                return result;
        }
 
-       bool m_visible;
-       video::SColor m_fallback_bg_color; // Used when m_visible=false
-       bool m_first_update;
+       bool m_visible = true;
+       // Used when m_visible=false
+       video::SColor m_fallback_bg_color = video::SColor(255, 255, 255, 255);
+       bool m_first_update = true;
        float m_time_of_day;
        float m_time_brightness;
        bool m_sunlight_seen;
-       float m_brightness;
-       float m_cloud_brightness;
-       bool m_clouds_visible;
+       float m_brightness = 0.5f;
+       float m_cloud_brightness = 0.5f;
+       bool m_clouds_visible; // Whether clouds are disabled due to player underground
+       bool m_clouds_enabled = true; // Initialised to true, reset only by set_sky API
        bool m_directional_colored_fog;
-       video::SColorf m_bgcolor_bright_f;
-       video::SColorf m_skycolor_bright_f;
-       video::SColorf m_cloudcolor_bright_f;
+       video::SColorf m_bgcolor_bright_f = video::SColorf(1.0f, 1.0f, 1.0f, 1.0f);
+       video::SColorf m_skycolor_bright_f = video::SColorf(1.0f, 1.0f, 1.0f, 1.0f);
+       video::SColorf m_cloudcolor_bright_f = video::SColorf(1.0f, 1.0f, 1.0f, 1.0f);
        video::SColor m_bgcolor;
        video::SColor m_skycolor;
        video::SColorf m_cloudcolor_f;
        v3f m_stars[SKY_STAR_COUNT];
-       video::S3DVertex m_star_vertices[SKY_STAR_COUNT*4];
-       video::ITexture* m_sun_texture;
-       video::ITexture* m_moon_texture;
-       video::ITexture* m_sun_tonemap;
-       video::ITexture* m_moon_tonemap;
+       video::ITexture *m_sun_texture;
+       video::ITexture *m_moon_texture;
+       video::ITexture *m_sun_tonemap;
+       video::ITexture *m_moon_tonemap;
 };
 
 #endif
-