[cpp] DaySkyColours

Viewer

copydownloadembedprintName: DaySkyColours
  1. // =============================================================
  2. #include <fstream>
  3. #include <direct.h>
  4. #include <iostream>
  5. #include <iomanip>
  6. #include <string>
  7. #include <list>
  8. #include <effect_symbol_table.hpp>
  9. #include <fonts/forkawesome.h>
  10. #include "imgui_widgets.hpp"
  11. #include "imgui_internal.h"
  12. #include "runtime.hpp"
  13. #include <msclr\marshal_cppstd.h>
  14.  
  15. #include "../NMSProxy/CasualLibrary/CasualLibrary.hpp"
  16. #include "../Utils/useful_functions.hpp"
  17. #include "../../../Mem/initialize.hpp"
  18. #include "../Utils/ImGuiFileDialog/ImGuiFileDialog.h"
  19. #include "../Utils/ImGuiFileDialog/CustomFont.h"
  20. #include "../Utils/ImGuiFileDialog/ImGuiFileDialogConfig.h"
  21. // =============================================================
  22.  
  23. namespace NMSDebugger::Colours::SkyColours
  24. {
  25.         // ---- Global Scope ----
  26.         static bool writeToConfig;
  27.         static bool headerOpened;
  28.         static bool addressesFound;
  29.  
  30.         static bool alpha_preview;
  31.         static bool alpha_half_preview;
  32.         static bool drag_and_drop{ true };
  33.         static bool hdr{ true };
  34.  
  35.         static bool forceColour;
  36.         static bool forceSkyColour;
  37.         static bool forceHorizonColour;
  38.         static bool forceSunColour;
  39.         static bool forceSkySolarColour;
  40.         static bool forceLightColour;
  41.         static bool forceFogColour;
  42.         static bool forceHeightFogColour;
  43.         static bool forceCloudColourTop;
  44.         static bool forceCloudColourBottom;
  45.  
  46.         static int TimeOfDay;
  47.         enum TimeOfDayEnum { Day, Dusk, Night };
  48.  
  49.         static GcWeatherColourSettings Sky[3]{};
  50.         // --------------------------
  51.         void do_draw_gui_fileDialog()
  52.         {
  53.                 //// open Dialog Simple
  54.                 if (ImGui::Button("Save MBIN"))
  55.                         ImGuiFileDialog::Instance()->OpenModal("ChooseFileDlgKey""Save MBIN"".MBIN""");
  56.  
  57.                 // display
  58.                 if (ImGuiFileDialog::Instance()->Display("ChooseFileDlgKey"))
  59.                 {
  60.                         // action if OK
  61.                         if (ImGuiFileDialog::Instance()->IsOk())
  62.                         {
  63.                                 std::string _filePathName = ImGuiFileDialog::Instance()->GetFilePathName();
  64.                                 std::string _filePath = ImGuiFileDialog::Instance()->GetCurrentPath();
  65.                                 System::String ^filePathName = gcnew System::String(_filePathName.data());
  66.                                 System::String ^filePath = gcnew System::String(_filePath.data());
  67.  
  68.                                 std::string _templatePath{ "..\\Binaries\\NMSDebugger\\resources\\templates\\METADATA\\SIMULATION\\SOLARSYSTEM\\WEATHER\\SKYSETTINGS\\" };
  69.                                 std::string _templateFileName{ "DAYSKYCOLOURS.MBIN" };
  70.                                 std::string _templateFile = _templatePath + _templateFileName;
  71.                                 System::String ^templateFile = gcnew System::String(_templateFile.data());
  72.  
  73.                                 auto strct{ (libMBIN::NMS::GameComponents::GcWeatherColourSettings ^)libMBIN::FileIO::LoadMbin(templateFile) };
  74.                                 auto sky = gcnew libMBIN::NMS::GameComponents::GcPlanetWeatherColourData();
  75.  
  76.                                 sky->SkyUpperColour->= *Sky[TimeOfDay].GenericSettings.Settings[0].SkyUpperColour.Colour[0];
  77.                                 sky->SkyUpperColour->= *Sky[TimeOfDay].GenericSettings.Settings[0].SkyUpperColour.Colour[1];
  78.                                 sky->SkyUpperColour->= *Sky[TimeOfDay].GenericSettings.Settings[0].SkyUpperColour.Colour[2];
  79.                                 sky->SkyUpperColour->= *Sky[TimeOfDay].GenericSettings.Settings[0].SkyUpperColour.Colour[3];
  80.  
  81.                                 strct->GenericSettings->Settings->Clear();
  82.                                 strct->GenericSettings->Settings->Add(sky);
  83.  
  84.                                 strct->WriteToMbin(filePathName);
  85.                         }
  86.  
  87.                         // close
  88.                         ImGuiFileDialog::Instance()->Close();
  89.                 }
  90.         }
  91.         void do_ConfigStuff()
  92.         {
  93.                 ImGui::Checkbox("Write To Config"&writeToConfig);
  94.                 if (writeToConfig)
  95.                 {
  96.                         // ofstream is used for writing files
  97.                         // We'll make a file called Sample.txt
  98.                         std::ofstream outf{ "..\\Binaries\\NMSDebugger\\Resources\\config\\SkyColours.txt" };
  99.  
  100.                         // If we couldn't open the output file stream for writing
  101.                         if (!outf)
  102.                         {
  103.                                 // Print an error and exit
  104.                                 std::cerr << "Uh oh, SkyColours.txt could not be opened for writing!\n";
  105.                                 return;
  106.                         }
  107.                         for (size_t vector3f = 0; vector3f < 3; vector3f++)
  108.                                 for (size_t colour = 0; colour < 4; colour++)
  109.                                 for (size_t i = 0; i < IM_ARRAYSIZE(Sky); i++)
  110.                                         {
  111.                                                 outf << *Sky[i].GenericSettings.Settings[0].SkyUpperColour.Colour[colour] << '\n';
  112.                                                 outf << *Sky[i].GenericSettings.Settings[0].SkyColour.Colour[colour] << '\n';
  113.                                                 outf << *Sky[i].GenericSettings.Settings[0].SunColour.Colour[colour] << '\n';
  114.                                                 outf << *Sky[i].GenericSettings.Settings[0].SkySolarColour.Colour[colour] << '\n';
  115.                                                 outf << *Sky[i].GenericSettings.Settings[0].LightColour.Colour[colour] << '\n';
  116.                                                 outf << *Sky[i].GenericSettings.Settings[0].HorizonColour.Colour[colour] << '\n';
  117.                                                 outf << *Sky[i].GenericSettings.Settings[0].FogColour.Colour[colour] << '\n';
  118.                                                 outf << *Sky[i].GenericSettings.Settings[0].HeightFogColour.Colour[colour] << '\n';
  119.                                                 outf << *Sky[i].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[vector3f] << '\n';
  120.                                                 outf << *Sky[i].GenericSettings.Settings[0].CloudColour1.Colour[colour] << '\n';
  121.                                                 outf << *Sky[i].GenericSettings.Settings[0].CloudColour2.Colour[colour] << '\n';
  122.                                         }
  123.                 }
  124.                 ImGui::SameLine();
  125.                 if (ImGui::Button("Load From Config"))
  126.                 {
  127.                         std::ifstream inf{ "..\\Binaries\\NMSDebugger\\Resources\\config\\SkyColours.txt" }; // Config Path
  128.                         // If we couldn't open the input file stream for reading
  129.                         if (!inf)
  130.                         {
  131.                                 // Print an error and exit
  132.                                 std::cerr << "Uh oh, SkyColours.txt could not be opened for reading!\n";
  133.                                 return;
  134.                         }
  135.                         for (size_t vector3f = 0; vector3f < 3; vector3f++)
  136.                                 for (size_t colour = 0; colour < 4; colour++)
  137.                                         for (size_t i = 0; i < IM_ARRAYSIZE(Sky); i++)
  138.                                         {
  139.                                                 inf >> *Sky[i].GenericSettings.Settings[0].SkyUpperColour.Colour[colour];
  140.                                                 inf >> *Sky[i].GenericSettings.Settings[0].SkyColour.Colour[colour];
  141.                                                 inf >> *Sky[i].GenericSettings.Settings[0].HorizonColour.Colour[colour];
  142.                                                 inf >> *Sky[i].GenericSettings.Settings[0].SunColour.Colour[colour];
  143.                                                 inf >> *Sky[i].GenericSettings.Settings[0].SkySolarColour.Colour[colour];
  144.                                                 inf >> *Sky[i].GenericSettings.Settings[0].LightColour.Colour[colour];
  145.                                                 inf >> *Sky[i].GenericSettings.Settings[0].FogColour.Colour[colour];
  146.                                                 inf >> *Sky[i].GenericSettings.Settings[0].HeightFogColour.Colour[colour];
  147.                                                 inf >> *Sky[i].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[vector3f];
  148.                                                 inf >> *Sky[i].GenericSettings.Settings[0].CloudColour1.Colour[colour];
  149.                                                 inf >> *Sky[i].GenericSettings.Settings[0].CloudColour2.Colour[colour];
  150.                                         }
  151.                 }
  152.         }
  153.  
  154.         void do_UpdateOffsets()
  155.         {
  156.                 const int _1Byte{ 1 };
  157.                 const int _2Bytes{ 2 };
  158.                 const int _3Bytes{ 3 };
  159.                 const int _4Bytes{ 4 };
  160.  
  161.                 // Day
  162.                 {
  163.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyColour.Colour[0] = (float *)NMSProxy::Initialize::ptrAddr.SkyColour_Day;
  164.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyColour.Colour[1] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyColour.Colour[0] + _1Byte;
  165.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyColour.Colour[2] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyColour.Colour[1] + _1Byte;
  166.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyColour.Colour[3] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyColour.Colour[2] + _1Byte;
  167.  
  168.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyUpperColour.Colour[0] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyColour.Colour[3] + _1Byte;
  169.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyUpperColour.Colour[1] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyUpperColour.Colour[0] + _1Byte;
  170.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyUpperColour.Colour[2] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyUpperColour.Colour[1] + _1Byte;
  171.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyUpperColour.Colour[3] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyUpperColour.Colour[2] + _1Byte;
  172.  
  173.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkySolarColour.Colour[0] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyUpperColour.Colour[3] + _1Byte;
  174.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkySolarColour.Colour[1] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkySolarColour.Colour[0] + _1Byte;
  175.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkySolarColour.Colour[2] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkySolarColour.Colour[1] + _1Byte;
  176.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkySolarColour.Colour[3] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkySolarColour.Colour[2] + _1Byte;
  177.  
  178.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].HorizonColour.Colour[0] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkySolarColour.Colour[3] + _1Byte;
  179.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].HorizonColour.Colour[1] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].HorizonColour.Colour[0] + _1Byte;
  180.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].HorizonColour.Colour[2] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].HorizonColour.Colour[1] + _1Byte;
  181.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].HorizonColour.Colour[3] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].HorizonColour.Colour[2] + _1Byte;
  182.  
  183.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SunColour.Colour[0] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].HorizonColour.Colour[3] + _1Byte;
  184.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SunColour.Colour[1] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SunColour.Colour[0] + _1Byte;
  185.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SunColour.Colour[2] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SunColour.Colour[1] + _1Byte;
  186.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SunColour.Colour[3] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SunColour.Colour[2] + _1Byte;
  187.  
  188.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].FogColour.Colour[0] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SunColour.Colour[3] + _1Byte;
  189.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].FogColour.Colour[1] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].FogColour.Colour[0] + _1Byte;
  190.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].FogColour.Colour[2] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].FogColour.Colour[1] + _1Byte;
  191.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].FogColour.Colour[3] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].FogColour.Colour[2] + _1Byte;
  192.  
  193.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].HeightFogColour.Colour[0] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].FogColour.Colour[3] + _1Byte;
  194.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].HeightFogColour.Colour[1] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].HeightFogColour.Colour[0] + _1Byte;
  195.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].HeightFogColour.Colour[2] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].HeightFogColour.Colour[1] + _1Byte;
  196.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].HeightFogColour.Colour[3] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].HeightFogColour.Colour[2] + _1Byte;
  197.  
  198.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[0] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].HeightFogColour.Colour[3] + _1Byte;
  199.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[1] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[0] + _1Byte;
  200.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[2] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[1] + _1Byte;
  201.  
  202.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].LightColour.Colour[0] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[2] + _2Bytes;
  203.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].LightColour.Colour[1] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].LightColour.Colour[0] + _1Byte;
  204.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].LightColour.Colour[2] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].LightColour.Colour[1] + _1Byte;
  205.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].LightColour.Colour[3] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].LightColour.Colour[2] + _1Byte;
  206.  
  207.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].CloudColour1.Colour[0] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].LightColour.Colour[3] + _1Byte;
  208.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].CloudColour1.Colour[1] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].CloudColour1.Colour[0] + _1Byte;
  209.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].CloudColour1.Colour[2] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].CloudColour1.Colour[1] + _1Byte;
  210.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].CloudColour1.Colour[3] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].CloudColour1.Colour[2] + _1Byte;
  211.  
  212.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].CloudColour2.Colour[0] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].CloudColour1.Colour[3] + _1Byte;
  213.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].CloudColour2.Colour[1] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].CloudColour2.Colour[0] + _1Byte;
  214.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].CloudColour2.Colour[2] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].CloudColour2.Colour[1] + _1Byte;
  215.                         Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].CloudColour2.Colour[3] = Sky[TimeOfDayEnum::Day].GenericSettings.Settings[0].CloudColour2.Colour[2] + _1Byte;
  216.                 }
  217.  
  218.                 // Dusk
  219.                 {
  220.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyColour.Colour[0] = (float *)NMSProxy::Initialize::ptrAddr.SkyColour_Dusk;
  221.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyColour.Colour[1] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyColour.Colour[0] + _1Byte;
  222.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyColour.Colour[2] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyColour.Colour[1] + _1Byte;
  223.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyColour.Colour[3] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyColour.Colour[2] + _1Byte;
  224.  
  225.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyUpperColour.Colour[0] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyColour.Colour[3] + _1Byte;
  226.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyUpperColour.Colour[1] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyUpperColour.Colour[0] + _1Byte;
  227.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyUpperColour.Colour[2] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyUpperColour.Colour[1] + _1Byte;
  228.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyUpperColour.Colour[3] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyUpperColour.Colour[2] + _1Byte;
  229.  
  230.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkySolarColour.Colour[0] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyUpperColour.Colour[3] + _1Byte;
  231.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkySolarColour.Colour[1] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkySolarColour.Colour[0] + _1Byte;
  232.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkySolarColour.Colour[2] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkySolarColour.Colour[1] + _1Byte;
  233.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkySolarColour.Colour[3] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkySolarColour.Colour[2] + _1Byte;
  234.  
  235.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].HorizonColour.Colour[0] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkySolarColour.Colour[3] + _1Byte;
  236.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].HorizonColour.Colour[1] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].HorizonColour.Colour[0] + _1Byte;
  237.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].HorizonColour.Colour[2] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].HorizonColour.Colour[1] + _1Byte;
  238.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].HorizonColour.Colour[3] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].HorizonColour.Colour[2] + _1Byte;
  239.  
  240.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SunColour.Colour[0] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].HorizonColour.Colour[3] + _1Byte;
  241.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SunColour.Colour[1] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SunColour.Colour[0] + _1Byte;
  242.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SunColour.Colour[2] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SunColour.Colour[1] + _1Byte;
  243.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SunColour.Colour[3] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SunColour.Colour[2] + _1Byte;
  244.  
  245.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].FogColour.Colour[0] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SunColour.Colour[3] + _1Byte;
  246.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].FogColour.Colour[1] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].FogColour.Colour[0] + _1Byte;
  247.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].FogColour.Colour[2] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].FogColour.Colour[1] + _1Byte;
  248.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].FogColour.Colour[3] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].FogColour.Colour[2] + _1Byte;
  249.  
  250.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].HeightFogColour.Colour[0] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].FogColour.Colour[3] + _1Byte;
  251.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].HeightFogColour.Colour[1] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].HeightFogColour.Colour[0] + _1Byte;
  252.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].HeightFogColour.Colour[2] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].HeightFogColour.Colour[1] + _1Byte;
  253.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].HeightFogColour.Colour[3] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].HeightFogColour.Colour[2] + _1Byte;
  254.  
  255.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[0] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].HeightFogColour.Colour[3] + _1Byte;
  256.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[1] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[0] + _1Byte;
  257.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[2] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[1] + _1Byte;
  258.  
  259.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].LightColour.Colour[0] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[2] + _1Byte;
  260.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].LightColour.Colour[1] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].LightColour.Colour[0] + _1Byte;
  261.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].LightColour.Colour[2] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].LightColour.Colour[1] + _1Byte;
  262.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].LightColour.Colour[3] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].LightColour.Colour[2] + _1Byte;
  263.  
  264.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].CloudColour1.Colour[0] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].LightColour.Colour[3] + _1Byte;
  265.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].CloudColour1.Colour[1] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].CloudColour1.Colour[0] + _1Byte;
  266.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].CloudColour1.Colour[2] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].CloudColour1.Colour[1] + _1Byte;
  267.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].CloudColour1.Colour[3] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].CloudColour1.Colour[2] + _1Byte;
  268.  
  269.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].CloudColour2.Colour[0] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].CloudColour1.Colour[3] + _1Byte;
  270.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].CloudColour2.Colour[1] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].CloudColour2.Colour[0] + _1Byte;
  271.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].CloudColour2.Colour[2] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].CloudColour2.Colour[1] + _1Byte;
  272.                         Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].CloudColour2.Colour[3] = Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].CloudColour2.Colour[2] + _1Byte;
  273.                 }
  274.  
  275.                 // Night
  276.                 {
  277.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyColour.Colour[0] = (float *)NMSProxy::Initialize::ptrAddr.SkyColour_Night;
  278.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyColour.Colour[1] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyColour.Colour[0] + _1Byte;
  279.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyColour.Colour[2] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyColour.Colour[1] + _1Byte;
  280.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyColour.Colour[3] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyColour.Colour[2] + _1Byte;
  281.  
  282.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyUpperColour.Colour[0] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyColour.Colour[3] + _1Byte;
  283.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyUpperColour.Colour[1] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyUpperColour.Colour[0] + _1Byte;
  284.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyUpperColour.Colour[2] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyUpperColour.Colour[1] + _1Byte;
  285.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyUpperColour.Colour[3] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyUpperColour.Colour[2] + _1Byte;
  286.  
  287.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkySolarColour.Colour[0] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyUpperColour.Colour[3] + _1Byte;
  288.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkySolarColour.Colour[1] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkySolarColour.Colour[0] + _1Byte;
  289.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkySolarColour.Colour[2] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkySolarColour.Colour[1] + _1Byte;
  290.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkySolarColour.Colour[3] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkySolarColour.Colour[2] + _1Byte;
  291.  
  292.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].HorizonColour.Colour[0] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkySolarColour.Colour[3] + _1Byte;
  293.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].HorizonColour.Colour[1] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].HorizonColour.Colour[0] + _1Byte;
  294.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].HorizonColour.Colour[2] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].HorizonColour.Colour[1] + _1Byte;
  295.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].HorizonColour.Colour[3] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].HorizonColour.Colour[2] + _1Byte;
  296.  
  297.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SunColour.Colour[0] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].HorizonColour.Colour[3] + _1Byte;
  298.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SunColour.Colour[1] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SunColour.Colour[0] + _1Byte;
  299.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SunColour.Colour[2] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SunColour.Colour[1] + _1Byte;
  300.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SunColour.Colour[3] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SunColour.Colour[2] + _1Byte;
  301.  
  302.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].FogColour.Colour[0] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SunColour.Colour[3] + _1Byte;
  303.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].FogColour.Colour[1] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].FogColour.Colour[0] + _1Byte;
  304.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].FogColour.Colour[2] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].FogColour.Colour[1] + _1Byte;
  305.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].FogColour.Colour[3] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].FogColour.Colour[2] + _1Byte;
  306.  
  307.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].HeightFogColour.Colour[0] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].FogColour.Colour[3] + _1Byte;
  308.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].HeightFogColour.Colour[1] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].HeightFogColour.Colour[0] + _1Byte;
  309.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].HeightFogColour.Colour[2] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].HeightFogColour.Colour[1] + _1Byte;
  310.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].HeightFogColour.Colour[3] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].HeightFogColour.Colour[2] + _1Byte;
  311.  
  312.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[0] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].HeightFogColour.Colour[3] + _1Byte;
  313.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[1] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[0] + _1Byte;
  314.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[2] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[1] + _1Byte;
  315.  
  316.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].LightColour.Colour[0] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[2] + _1Byte;
  317.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].LightColour.Colour[1] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].LightColour.Colour[0] + _1Byte;
  318.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].LightColour.Colour[2] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].LightColour.Colour[1] + _1Byte;
  319.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].LightColour.Colour[3] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].LightColour.Colour[2] + _1Byte;
  320.  
  321.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].CloudColour1.Colour[0] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].LightColour.Colour[3] + _1Byte;
  322.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].CloudColour1.Colour[1] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].CloudColour1.Colour[0] + _1Byte;
  323.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].CloudColour1.Colour[2] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].CloudColour1.Colour[1] + _1Byte;
  324.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].CloudColour1.Colour[3] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].CloudColour1.Colour[2] + _1Byte;
  325.  
  326.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].CloudColour2.Colour[0] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].CloudColour1.Colour[3] + _1Byte;
  327.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].CloudColour2.Colour[1] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].CloudColour2.Colour[0] + _1Byte;
  328.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].CloudColour2.Colour[2] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].CloudColour2.Colour[1] + _1Byte;
  329.                         Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].CloudColour2.Colour[3] = Sky[TimeOfDayEnum::Night].GenericSettings.Settings[0].CloudColour2.Colour[2] + _1Byte;
  330.                 }
  331.         }
  332.  
  333.         void do_DrawGUI()
  334.         {
  335.                 do_draw_gui_fileDialog();
  336.                 do_ConfigStuff();
  337.  
  338.                 // ===========================
  339.  
  340.                 ImGuiColorEditFlags misc_coloredit_flags = (hdr ? ImGuiColorEditFlags_HDR : 0) | (drag_and_drop ? 0 : ImGuiColorEditFlags_NoDragDrop) | (alpha_half_preview ? ImGuiColorEditFlags_AlphaPreviewHalf : (alpha_preview ? ImGuiColorEditFlags_AlphaPreview : 0) | ImGuiColorEditFlags_AlphaBar);
  341.                 ImGuiTabBarFlags tab_bar_flags = ImGuiTabItemFlags_NoCloseButton;
  342.                 const char *names[] = { "Day""Dusk""Night" };
  343.                 static bool opened[] = { truetruetrue }; // Persistent user state
  344.                 for (int n = 0; n < IM_ARRAYSIZE(opened); n++)
  345.                         if (opened[n] && ImGui::TreeNode(names[n]))
  346.                         {
  347.                                 ImGui::ColorEdit4("SkyUpperColour"*Sky[n].GenericSettings.Settings[0].SkyUpperColour.Colour, misc_coloredit_flags);
  348.                                 ImGui::ColorEdit4("SkyColour"*Sky[n].GenericSettings.Settings[0].SkyColour.Colour, misc_coloredit_flags);
  349.                                 ImGui::ColorEdit4("HorizonColour"*Sky[n].GenericSettings.Settings[0].HorizonColour.Colour, misc_coloredit_flags);
  350.                                 ImGui::ColorEdit4("SunColour"*Sky[n].GenericSettings.Settings[0].SunColour.Colour, misc_coloredit_flags);
  351.                                 ImGui::ColorEdit4("SkySolarColour"*Sky[n].GenericSettings.Settings[0].SkySolarColour.Colour, misc_coloredit_flags);
  352.                                 ImGui::ColorEdit4("LightColour"*Sky[n].GenericSettings.Settings[0].LightColour.Colour, misc_coloredit_flags);
  353.                                 ImGui::ColorEdit4("FogColour"*Sky[n].GenericSettings.Settings[0].FogColour.Colour, misc_coloredit_flags);
  354.                                 ImGui::ColorEdit4("HeightFogColour"*Sky[n].GenericSettings.Settings[0].HeightFogColour.Colour, misc_coloredit_flags);
  355.  
  356.                                 //Sky Gradient Speed
  357.                                 {
  358.                                         static float minVal{ -10.f };
  359.                                         static float maxVal{ 10.f };
  360.                                         ImGui::SliderFloat3("SkyGradientSpeed"*Sky[n].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f, minVal, maxVal);
  361.                                         if (ImGui::BeginPopupContextItem("my popup"))
  362.                                         {
  363.                                                 ImGui::InputFloat("Min value"&minVal);
  364.                                                 ImGui::InputFloat("Max value"&maxVal);
  365.                                                 if (ImGui::Button("Close")) ImGui::CloseCurrentPopup();
  366.                                                 ImGui::EndPopup();
  367.                                         }
  368.                                         ImGui::SameLine();
  369.                                         if (ImGui::Button("Reset"))
  370.                                                 for (int vector3f = 0; vector3f < 3; vector3f++)
  371.                                                 {
  372.                                                         if (== TimeOfDayEnum::Day)
  373.                                                         {
  374.                                                                 *Sky[n].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[vector3f] = 1.f;
  375.                                                         }
  376.                                                         if (== TimeOfDayEnum::Dusk)
  377.                                                         {
  378.                                                                 *Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[0] = 1.f;
  379.                                                                 *Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[1] = 0.943f;
  380.                                                                 *Sky[TimeOfDayEnum::Dusk].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[2] = 0.579f;
  381.                                                         }
  382.                                                         if (== TimeOfDayEnum::Night)
  383.                                                         {
  384.                                                                 *Sky[n].GenericSettings.Settings[0].SkyGradientSpeed.Vector3f[vector3f] = 1.f;
  385.                                                         }
  386.                                                 };
  387.                                 }
  388.  
  389.                                 ImGui::ColorEdit4("CloudColourTop"*Sky[n].GenericSettings.Settings[0].CloudColour1.Colour, misc_coloredit_flags);
  390.                                 ImGui::ColorEdit4("CloudColourBottom"*Sky[n].GenericSettings.Settings[0].CloudColour2.Colour, misc_coloredit_flags);
  391.  
  392.                                 // Modifiers
  393.                                 {
  394.                                         for (int colChan = 0; colChan < 4; colChan++)
  395.                                         {
  396.                                                 if (forceColour)
  397.                                                 {
  398.                                                         if (forceSkyColour)
  399.                                                                 *(float *)(Sky[TimeOfDay].GenericSettings.Settings[0].SkyColour.Colour[colChan]) = *Sky[TimeOfDay].GenericSettings.Settings[0].SkyUpperColour.Colour[colChan];
  400.  
  401.                                                         if (forceHorizonColour)
  402.                                                                 *(float *)(Sky[TimeOfDay].GenericSettings.Settings[0].HorizonColour.Colour[colChan]) = *Sky[TimeOfDay].GenericSettings.Settings[0].SkyUpperColour.Colour[colChan];
  403.  
  404.                                                         if (forceSunColour)
  405.                                                                 *(float *)(Sky[TimeOfDay].GenericSettings.Settings[0].SunColour.Colour[colChan]) = *Sky[TimeOfDay].GenericSettings.Settings[0].SkyUpperColour.Colour[colChan];
  406.  
  407.                                                         if (forceSkySolarColour)
  408.                                                                 *(float *)(Sky[TimeOfDay].GenericSettings.Settings[0].SkySolarColour.Colour[colChan]) = *Sky[TimeOfDay].GenericSettings.Settings[0].SkyUpperColour.Colour[colChan];
  409.  
  410.                                                         if (forceLightColour)
  411.                                                                 *(float *)(Sky[TimeOfDay].GenericSettings.Settings[0].LightColour.Colour[colChan]) = *Sky[TimeOfDay].GenericSettings.Settings[0].SkyUpperColour.Colour[colChan];
  412.                                        
  413.                                                         if (forceFogColour)
  414.                                                                 *(float *)(Sky[TimeOfDay].GenericSettings.Settings[0].FogColour.Colour[colChan]) = *Sky[TimeOfDay].GenericSettings.Settings[0].SkyUpperColour.Colour[colChan];
  415.  
  416.                                                         if (forceHeightFogColour)
  417.                                                                 *(float *)(Sky[TimeOfDay].GenericSettings.Settings[0].HeightFogColour.Colour[colChan]) = *Sky[TimeOfDay].GenericSettings.Settings[0].SkyUpperColour.Colour[colChan];
  418.  
  419.                                                         if (forceCloudColourTop)
  420.                                                                 *(float *)(Sky[TimeOfDay].GenericSettings.Settings[0].CloudColour1.Colour[colChan]) = *Sky[TimeOfDay].GenericSettings.Settings[0].SkyUpperColour.Colour[colChan];
  421.  
  422.                                                         if (forceCloudColourBottom)
  423.                                                                 *(float *)(Sky[TimeOfDay].GenericSettings.Settings[0].CloudColour2.Colour[colChan]) = *Sky[TimeOfDay].GenericSettings.Settings[0].SkyUpperColour.Colour[colChan];
  424.                                                 }
  425.                                         }
  426.                                 }
  427.  
  428.                                 ImGui::TreePop();
  429.                         }
  430.  
  431.                 if (!ImGui::IsItemHovered() && ImGui::IsMouseClicked(2))
  432.                         ImGui::OpenPopup("foobar", ImGuiPopupFlags_None);
  433.                 if (ImGui::BeginPopup("foobar"))
  434.                 {
  435.                         if (ImGui::BeginTabBar("foobar"))
  436.                         {
  437.                                 if (ImGui::BeginTabItem("Color Picker Options"))
  438.                                 {
  439.                                         ImGui::Checkbox("With Alpha Preview"&alpha_preview);  ImGui::SameLine(); HelpMarker("Displays Alpha Preview Color Box.");
  440.                                         ImGui::Checkbox("With Half Alpha Preview"&alpha_half_preview); ImGui::SameLine(); HelpMarker("Displays Alpha Preview in half of Color Box.");
  441.                                         ImGui::Checkbox("With Drag and Drop"&drag_and_drop); ImGui::SameLine(); HelpMarker("Drag & Drop Color box to transfer color.");
  442.                                         ImGui::Checkbox("With HDR"&hdr); ImGui::SameLine(); HelpMarker("Currently all this does is lift the 0..1 limits on dragging widgets.");
  443.                                         ImGui::EndTabItem();
  444.                                 }
  445.                                 if (ImGui::BeginTabItem("Modifiers"))
  446.                                 {
  447.                                         //Create combo box for planet names
  448.                                         const char *time_of_day[] = { "Day""Dusk""Night"};
  449.                                         if (ImGui::Combo("Time Of Day"&TimeOfDay, time_of_day, IM_ARRAYSIZE(time_of_day))) { forceColour = false; };
  450.                                         if (ImGui::TreeNode("Force Colour"))
  451.                                         {
  452.                                                 HelpMarker("Forces All to match SkyUpperColour");
  453.                                                 ImGui::Checkbox("Force"&forceColour);
  454.  
  455.                                                 if (ImGui::TreeNode("Force Type"))
  456.                                                 {
  457.                                                         ImGui::Checkbox("SkyColour"&forceSkyColour);
  458.                                                         ImGui::Checkbox("HorizonColour"&forceHorizonColour);
  459.                                                         ImGui::Checkbox("SunColour"&forceSunColour);
  460.                                                         ImGui::Checkbox("SkySolarColour"&forceSkySolarColour);
  461.                                                         ImGui::Checkbox("LightColour"&forceLightColour);
  462.                                                         ImGui::Checkbox("FogColour"&forceFogColour);
  463.                                                         ImGui::Checkbox("HeightFogColour"&forceHeightFogColour);
  464.                                                         ImGui::Checkbox("CloudColourTop"&forceCloudColourTop);
  465.                                                         ImGui::Checkbox("CloudColourBottom"&forceCloudColourBottom);
  466.                                                         ImGui::Separator();
  467.                                                         if (ImGui::Button("All"))
  468.                                                         {
  469.                                                                 forceSkyColour = true; forceHorizonColour = true; forceSunColour = true; forceSkySolarColour = true; forceLightColour = true; forceFogColour = true; forceHeightFogColour = true; forceCloudColourTop = true; forceCloudColourBottom = true;
  470.                                                         }
  471.                                                         if (ImGui::Button("Disable All"))
  472.                                                         {
  473.                                                                 forceSkyColour = false; forceHorizonColour = false; forceSunColour = false; forceSkySolarColour = false; forceLightColour = false; forceFogColour = false; forceHeightFogColour = false; forceCloudColourTop = false; forceCloudColourBottom = false;
  474.                                                         }
  475.                                                         if (ImGui::Button("Preset 1"))
  476.                                                         {
  477.                                                                 forceSkyColour = true; forceHorizonColour = true; forceSunColour = false;  forceSkySolarColour = false; forceLightColour = false; forceFogColour = false; forceHeightFogColour = false; forceCloudColourTop = false; forceCloudColourBottom = false;
  478.                                                         }
  479.                                                         if (ImGui::Button("Preset 2"))
  480.                                                         {
  481.                                                                 forceSkyColour = true; forceHorizonColour = true; forceSunColour = false; forceSkySolarColour = false; forceLightColour = false; forceFogColour = true; forceHeightFogColour = true; forceCloudColourTop = false; forceCloudColourBottom = false;
  482.                                                         }
  483.                                                         if (ImGui::Button("Preset 3"))
  484.                                                         {
  485.                                                                 forceSkyColour = true; forceHorizonColour = true; forceSunColour = true; forceSkySolarColour = true; forceLightColour = true;  forceFogColour = true; forceHeightFogColour = true; forceCloudColourTop = false; forceCloudColourBottom = false;
  486.                                                         }
  487.                                                         ImGui::TreePop();
  488.                                                 }
  489.                                                 ImGui::TreePop();
  490.                                         }
  491.                                 }
  492.                                 ImGui::EndTabBar();
  493.                         }
  494.  
  495.                         ImGui::Spacing();
  496.                         ImGui::Separator();
  497.  
  498.                         if (ImGui::Button("Close")) ImGui::CloseCurrentPopup();
  499.                         ImGui::EndPopup();
  500.                 }
  501.         }
  502.  
  503.         void draw_gui_nmsdebugger_skycolours()
  504.         {
  505.                 if (NMSProxy::Initialize::ptrAddr.SkyColour_Day != NULL)
  506.                         addressesFound = true;
  507.  
  508.                 if (ImGui::CollapsingHeader("SkyColours"))
  509.                 {
  510.                         if (addressesFound)
  511.                         {
  512.                                 // Update Offsets
  513.                                 static bool init{ false };
  514.                                 if (!init)
  515.                                 {
  516.                                         do_UpdateOffsets();
  517.                                         init = !init;
  518.                                 }
  519.  
  520.                                 do_DrawGUI();
  521.                         }
  522.                 }
  523.         }
  524. }
  525.  

Editor

You can edit this paste and save as new:


File Description
  • DaySkyColours
  • Paste Code
  • 21 Jan-2022
  • 36.75 Kb
You can Share it: