[cpp] SkyColours

Viewer

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

Editor

You can edit this paste and save as new: