1 /* 2 Minetest 3 Copyright (C) 2019 Jordach, Jordan Snelling <jordach.snelling@gmail.com> 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU Lesser General Public License as published by 7 the Free Software Foundation; either version 2.1 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public License along 16 with this program; if not, write to the Free Software Foundation, Inc., 17 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 */ 19 20 #pragma once 21 22 struct SkyColor 23 { 24 video::SColor day_sky; 25 video::SColor day_horizon; 26 video::SColor dawn_sky; 27 video::SColor dawn_horizon; 28 video::SColor night_sky; 29 video::SColor night_horizon; 30 video::SColor indoors; 31 }; 32 33 struct SkyboxParams 34 { 35 video::SColor bgcolor; 36 std::string type; 37 std::vector<std::string> textures; 38 bool clouds; 39 SkyColor sky_color; 40 video::SColor fog_sun_tint; 41 video::SColor fog_moon_tint; 42 std::string fog_tint_type; 43 }; 44 45 struct SunParams 46 { 47 bool visible; 48 std::string texture; 49 std::string tonemap; 50 std::string sunrise; 51 bool sunrise_visible; 52 f32 scale; 53 }; 54 55 struct MoonParams 56 { 57 bool visible; 58 std::string texture; 59 std::string tonemap; 60 f32 scale; 61 }; 62 63 struct StarParams 64 { 65 bool visible; 66 u32 count; 67 video::SColor starcolor; 68 f32 scale; 69 }; 70 71 // Utility class for setting default sky, sun, moon, stars values: 72 class SkyboxDefaults 73 { 74 public: getSkyColorDefaults()75 const SkyColor getSkyColorDefaults() 76 { 77 SkyColor sky; 78 // Horizon colors 79 sky.day_horizon = video::SColor(255, 144, 211, 246); 80 sky.indoors = video::SColor(255, 100, 100, 100); 81 sky.dawn_horizon = video::SColor(255, 186, 193, 240); 82 sky.night_horizon = video::SColor(255, 64, 144, 255); 83 // Sky colors 84 sky.day_sky = video::SColor(255, 97, 181, 245); 85 sky.dawn_sky = video::SColor(255, 180, 186, 250); 86 sky.night_sky = video::SColor(255, 0, 107, 255); 87 return sky; 88 } 89 getSunDefaults()90 const SunParams getSunDefaults() 91 { 92 SunParams sun; 93 sun.visible = true; 94 sun.sunrise_visible = true; 95 sun.texture = "sun.png"; 96 sun.tonemap = "sun_tonemap.png"; 97 sun.sunrise = "sunrisebg.png"; 98 sun.scale = 1; 99 return sun; 100 } 101 getMoonDefaults()102 const MoonParams getMoonDefaults() 103 { 104 MoonParams moon; 105 moon.visible = true; 106 moon.texture = "moon.png"; 107 moon.tonemap = "moon_tonemap.png"; 108 moon.scale = 1; 109 return moon; 110 } 111 getStarDefaults()112 const StarParams getStarDefaults() 113 { 114 StarParams stars; 115 stars.visible = true; 116 stars.count = 1000; 117 stars.starcolor = video::SColor(105, 235, 235, 255); 118 stars.scale = 1; 119 return stars; 120 } 121 }; 122