diff --git a/data/assets/scene/solarsystem/sssb/amor_asteroid.asset b/data/assets/scene/solarsystem/sssb/amor_asteroid.asset index beadc38112..2c5d7f0979 100644 --- a/data/assets/scene/solarsystem/sssb/amor_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/amor_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Amor Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_amor_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/apollo_asteroid.asset b/data/assets/scene/solarsystem/sssb/apollo_asteroid.asset index a5d0e9f1a9..4b051e11ff 100644 --- a/data/assets/scene/solarsystem/sssb/apollo_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/apollo_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Apollo Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_apollo_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/aten_asteroid.asset b/data/assets/scene/solarsystem/sssb/aten_asteroid.asset index 7e8443b73b..ae3d5f0f72 100644 --- a/data/assets/scene/solarsystem/sssb/aten_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/aten_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Aten Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_aten_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/atira_asteroid.asset b/data/assets/scene/solarsystem/sssb/atira_asteroid.asset index c66267f262..ac1f7023ec 100644 --- a/data/assets/scene/solarsystem/sssb/atira_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/atira_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Atira Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_atira_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset b/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset index e6dc435ac2..8b2468a1bf 100644 --- a/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Centaur Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_centaur_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/chiron-type_comet.asset b/data/assets/scene/solarsystem/sssb/chiron-type_comet.asset index 14ab843d84..48b7f01a89 100644 --- a/data/assets/scene/solarsystem/sssb/chiron-type_comet.asset +++ b/data/assets/scene/solarsystem/sssb/chiron-type_comet.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Chiron-type Comet)", Type = "HttpSynchronization", Identifier = "sssb_data_chiron-type_comet", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/encke-type_comet.asset b/data/assets/scene/solarsystem/sssb/encke-type_comet.asset index 7f81cf5dcf..6ebc6a16a8 100644 --- a/data/assets/scene/solarsystem/sssb/encke-type_comet.asset +++ b/data/assets/scene/solarsystem/sssb/encke-type_comet.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Encke-type Comet)", Type = "HttpSynchronization", Identifier = "sssb_data_encke-type_comet", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/halley-type_comet.asset b/data/assets/scene/solarsystem/sssb/halley-type_comet.asset index 5485aeb1ee..81b8efafec 100644 --- a/data/assets/scene/solarsystem/sssb/halley-type_comet.asset +++ b/data/assets/scene/solarsystem/sssb/halley-type_comet.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Halley-type Comet)", Type = "HttpSynchronization", Identifier = "sssb_data_halley-type_comet", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/inner_main_belt_asteroid.asset b/data/assets/scene/solarsystem/sssb/inner_main_belt_asteroid.asset index fde88485e1..17ea63d52d 100644 --- a/data/assets/scene/solarsystem/sssb/inner_main_belt_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/inner_main_belt_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Inner Main Belt Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_inner_main_belt_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/jupiter-family_comet.asset b/data/assets/scene/solarsystem/sssb/jupiter-family_comet.asset index 40891fed51..fc9aa2e9e2 100644 --- a/data/assets/scene/solarsystem/sssb/jupiter-family_comet.asset +++ b/data/assets/scene/solarsystem/sssb/jupiter-family_comet.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Jupiter Family Comet)", Type = "HttpSynchronization", Identifier = "sssb_data_jupiter-family_comet", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/jupiter_trojan_asteroid.asset b/data/assets/scene/solarsystem/sssb/jupiter_trojan_asteroid.asset index 2606fc2b39..f2ad637137 100644 --- a/data/assets/scene/solarsystem/sssb/jupiter_trojan_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/jupiter_trojan_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Jupiter Trojan Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_jupiter_trojan_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/main_belt_asteroid.asset b/data/assets/scene/solarsystem/sssb/main_belt_asteroid.asset index ba984508ab..850e3d9b9a 100644 --- a/data/assets/scene/solarsystem/sssb/main_belt_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/main_belt_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Main Belt Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_main_belt_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/mars-crossing_asteroid.asset b/data/assets/scene/solarsystem/sssb/mars-crossing_asteroid.asset index d6a681aead..ed44f28a94 100644 --- a/data/assets/scene/solarsystem/sssb/mars-crossing_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/mars-crossing_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Mars-Crossing Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_mars-crossing_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/outer_main_belt_asteroid.asset b/data/assets/scene/solarsystem/sssb/outer_main_belt_asteroid.asset index 669505c62f..3047d60dfa 100644 --- a/data/assets/scene/solarsystem/sssb/outer_main_belt_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/outer_main_belt_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Outer Main Belt Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_outer_main_belt_asteroid", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/pha.asset b/data/assets/scene/solarsystem/sssb/pha.asset index 6d10eea764..ddc49f421e 100644 --- a/data/assets/scene/solarsystem/sssb/pha.asset +++ b/data/assets/scene/solarsystem/sssb/pha.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Potentially hazardous Asteroids)", Type = "HttpSynchronization", Identifier = "sssb_data_pha", - Version = 2 + Version = 3 }) diff --git a/data/assets/scene/solarsystem/sssb/transneptunian_object_asteroid.asset b/data/assets/scene/solarsystem/sssb/transneptunian_object_asteroid.asset index b16990e027..33de963562 100644 --- a/data/assets/scene/solarsystem/sssb/transneptunian_object_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/transneptunian_object_asteroid.asset @@ -6,7 +6,7 @@ local sssb = asset.syncedResource({ Name = "Small SolarSystem Body Data (Trans-Neptunian Object Asteroid)", Type = "HttpSynchronization", Identifier = "sssb_data_transneptunian_object_asteroid", - Version = 2 + Version = 3 }) diff --git a/modules/space/kepler.cpp b/modules/space/kepler.cpp index 314823d43a..1af07182bb 100644 --- a/modules/space/kepler.cpp +++ b/modules/space/kepler.cpp @@ -239,8 +239,9 @@ namespace { } double epochFromYMDdSubstring(const std::string& epoch) { - // The epochString is in the form: + // The epochString can be in one of two forms: // YYYYMMDD.ddddddd + // YYYY-MM-DD.ddddddd // With YYYY as the year, MM the month (1 - 12), DD the day of month (1-31), // and dddd the fraction of that day. @@ -258,8 +259,14 @@ namespace { e += ".0"; } // 1, 2 + size_t nDashes = std::count_if( + epoch.begin(), + epoch.end(), + [](char c) { return c == '-'; } + ); + std::string formatString = (nDashes == 2) ? "{:4}-{:2}-{:2}{}" : "{:4}{:2}{:2}{}"; auto [res, year, monthNum, dayOfMonthNum, fractionOfDay] = - scn::scan_tuple(e, "{:4}{:2}{:2}{}"); + scn::scan_tuple(e, formatString); if (!res) { throw ghoul::RuntimeError(fmt::format("Error parsing epoch '{}'", epoch)); } @@ -598,10 +605,12 @@ std::vector readSbdbFile(std::filesystem::path file) { std::string line; std::getline(f, line); + // Newer versions downloaded from the JPL SBDB website have " around variables + line.erase(remove(line.begin(), line.end(), '\"'), line.end()); if (line != ExpectedHeader) { throw ghoul::RuntimeError(fmt::format( "Expected JPL SBDB file to start with '{}' but found '{}' instead", - ExpectedHeader, line + ExpectedHeader, line.substr(0, 100) )); }