+
diff --git a/Docs/html/structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO.js b/Docs/html/structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO.js
index c2324858..7429f0af 100644
--- a/Docs/html/structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO.js
+++ b/Docs/html/structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO.js
@@ -1,5 +1,11 @@
var structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO =
[
[ "centerOfMotionId", "structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO.html#aa2a4ad33eca57dafa55fb9c0ba1d4dac", null ],
- [ "id", "structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO.html#a60d670a07c638d350d67344c272a9e70", null ]
+ [ "Error", "structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO.html#aae2e2aafadb3a86c9a40a155babca4ed", null ],
+ [ "FrameId", "structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO.html#a2f5720669728eabfd91fa6cd36db3f2b", null ],
+ [ "FrameName", "structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO.html#ae2f99558614ed846ba5a7ecac12ace9d", null ],
+ [ "GM", "structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO.html#ac0f5111140d7687c5a4729152281a4f1", null ],
+ [ "Id", "structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO.html#a7a2d2b139b6042457cf21457dd304893", null ],
+ [ "Name", "structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO.html#ac58bd7effed87fb64a593b795a357a03", null ],
+ [ "Radii", "structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO.html#a09be131402eaa380ad0b9c52527c1b97", null ]
];
\ No newline at end of file
diff --git a/Docs/latex/CelestialBodyDTO_8h_source.tex b/Docs/latex/CelestialBodyDTO_8h_source.tex
index cfe7c6b8..0370722e 100644
--- a/Docs/latex/CelestialBodyDTO_8h_source.tex
+++ b/Docs/latex/CelestialBodyDTO_8h_source.tex
@@ -12,10 +12,16 @@
\DoxyCodeLine{8 \{}
\DoxyCodeLine{9 \textcolor{keyword}{struct }\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO}{CelestialBodyDTO}}}
\DoxyCodeLine{10 \{}
-\DoxyCodeLine{11 \textcolor{keywordtype}{int} \textcolor{keywordtype}{id}\{-\/1\};}
+\DoxyCodeLine{11 \textcolor{keywordtype}{int} \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_a7a2d2b139b6042457cf21457dd304893}{Id}}\{-\/1\};}
\DoxyCodeLine{12 \textcolor{keywordtype}{int} \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_aa2a4ad33eca57dafa55fb9c0ba1d4dac}{centerOfMotionId}}\{-\/1\};}
-\DoxyCodeLine{13 \};}
-\DoxyCodeLine{14 \}}
-\DoxyCodeLine{15 \textcolor{preprocessor}{\#endif }\textcolor{comment}{//IOSDK\_CELESTIALBODYDTO\_H}}
+\DoxyCodeLine{13 \textcolor{keywordtype}{char} *\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_ac58bd7effed87fb64a593b795a357a03}{Name}}\{\};}
+\DoxyCodeLine{14 \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1Vector3DDTO}{IO::SDK::API::DTO::Vector3DDTO}} \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_a09be131402eaa380ad0b9c52527c1b97}{Radii}}\{\};}
+\DoxyCodeLine{15 \textcolor{keywordtype}{double} \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_ac0f5111140d7687c5a4729152281a4f1}{GM}}\{\};}
+\DoxyCodeLine{16 \textcolor{keywordtype}{char} *\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_ae2f99558614ed846ba5a7ecac12ace9d}{FrameName}}\{\};}
+\DoxyCodeLine{17 \textcolor{keywordtype}{int} \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_a2f5720669728eabfd91fa6cd36db3f2b}{FrameId}}\{\};}
+\DoxyCodeLine{18 \textcolor{keywordtype}{char} * \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_aae2e2aafadb3a86c9a40a155babca4ed}{Error}}\{\};}
+\DoxyCodeLine{19 \};}
+\DoxyCodeLine{20 \}}
+\DoxyCodeLine{21 \textcolor{preprocessor}{\#endif }\textcolor{comment}{//IOSDK\_CELESTIALBODYDTO\_H}}
\end{DoxyCode}
diff --git a/Docs/latex/CelestialBody_8h_source.tex b/Docs/latex/CelestialBody_8h_source.tex
index c00f45b9..52a9d6d3 100644
--- a/Docs/latex/CelestialBody_8h_source.tex
+++ b/Docs/latex/CelestialBody_8h_source.tex
@@ -51,15 +51,16 @@
\DoxyCodeLine{104 \textcolor{keyword}{static} \textcolor{keywordtype}{bool} \mbox{\hyperlink{classIO_1_1SDK_1_1Body_1_1CelestialBody_a893e43b3bea582ee7a7143c7cbf71162}{IsAsteroid}}(\textcolor{keywordtype}{int} celestialBodyId);}
\DoxyCodeLine{105 \textcolor{keyword}{static} \textcolor{keywordtype}{bool} \mbox{\hyperlink{classIO_1_1SDK_1_1Body_1_1CelestialBody_ad13cee9329c5ececbe5c1a6652cedc76}{IsMoon}}(\textcolor{keywordtype}{int} celestialBodyId);}
\DoxyCodeLine{106 \textcolor{keyword}{static} \textcolor{keywordtype}{int} \mbox{\hyperlink{classIO_1_1SDK_1_1Body_1_1CelestialBody_a7387c787cf8e1597dbd97a3f8d039037}{FindCenterOfMotionId}}(\textcolor{keywordtype}{int} celestialBodyNaifId);}
-\DoxyCodeLine{107 }
-\DoxyCodeLine{108 \};}
-\DoxyCodeLine{117 \textcolor{keywordtype}{double} \mbox{\hyperlink{namespaceIO_1_1SDK_1_1Body_a9abfd773dafb894db167ef501387abc2}{SphereOfInfluence}}(\textcolor{keywordtype}{double} a, \textcolor{keywordtype}{double} majorMass, \textcolor{keywordtype}{double} minorMass);}
-\DoxyCodeLine{118 }
-\DoxyCodeLine{127 \textcolor{keywordtype}{double} \mbox{\hyperlink{namespaceIO_1_1SDK_1_1Body_a5284cae8d8f1d235b18f568019a5cb13}{HillSphere}}(\textcolor{keywordtype}{double} a, \textcolor{keywordtype}{double} e, \textcolor{keywordtype}{double} majorMass, \textcolor{keywordtype}{double} minorMass);}
-\DoxyCodeLine{128 }
+\DoxyCodeLine{107 \textcolor{keyword}{static} \textcolor{keywordtype}{bool} \mbox{\hyperlink{classIO_1_1SDK_1_1Body_1_1CelestialBody_a49b16afff71b1b9d99f99970706cc892}{IsBarycenter}}(\textcolor{keywordtype}{int} celestialBodyId);}
+\DoxyCodeLine{108 }
+\DoxyCodeLine{109 \};}
+\DoxyCodeLine{118 \textcolor{keywordtype}{double} \mbox{\hyperlink{namespaceIO_1_1SDK_1_1Body_a9abfd773dafb894db167ef501387abc2}{SphereOfInfluence}}(\textcolor{keywordtype}{double} a, \textcolor{keywordtype}{double} majorMass, \textcolor{keywordtype}{double} minorMass);}
+\DoxyCodeLine{119 }
+\DoxyCodeLine{128 \textcolor{keywordtype}{double} \mbox{\hyperlink{namespaceIO_1_1SDK_1_1Body_a5284cae8d8f1d235b18f568019a5cb13}{HillSphere}}(\textcolor{keywordtype}{double} a, \textcolor{keywordtype}{double} e, \textcolor{keywordtype}{double} majorMass, \textcolor{keywordtype}{double} minorMass);}
\DoxyCodeLine{129 }
\DoxyCodeLine{130 }
-\DoxyCodeLine{131 \}}
-\DoxyCodeLine{132 \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{131 }
+\DoxyCodeLine{132 \}}
+\DoxyCodeLine{133 \textcolor{preprocessor}{\#endif}}
\end{DoxyCode}
diff --git a/Docs/latex/Proxy_8cpp.tex b/Docs/latex/Proxy_8cpp.tex
index 86dd6523..be3b3dda 100644
--- a/Docs/latex/Proxy_8cpp.tex
+++ b/Docs/latex/Proxy_8cpp.tex
@@ -100,6 +100,10 @@
void \mbox{\hyperlink{Proxy_8cpp_a389131e56e754d5a3578f009c8bbab91}{Build\+Nadir\+Attitude}} (\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Scenario\+DTO}} \&scenario\+Dto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO\+::\+SDK\+::\+Scenario}} \&scenario, std\+::map$<$ int, std\+::shared\+\_\+ptr$<$ \mbox{\hyperlink{classIO_1_1SDK_1_1Maneuvers_1_1ManeuverBase}{IO\+::\+SDK\+::\+Maneuvers\+::\+Maneuver\+Base}} $>$ $>$ \&maneuvers)
\item
void \mbox{\hyperlink{Proxy_8cpp_a70191d395a750d5ca92dd638564d35b2}{Build\+Zenith\+Attitude}} (\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Scenario\+DTO}} \&scenario\+Dto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO\+::\+SDK\+::\+Scenario}} \&scenario, std\+::map$<$ int, std\+::shared\+\_\+ptr$<$ \mbox{\hyperlink{classIO_1_1SDK_1_1Maneuvers_1_1ManeuverBase}{IO\+::\+SDK\+::\+Maneuvers\+::\+Maneuver\+Base}} $>$ $>$ \&maneuvers)
+\item
+\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO}{IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Celestial\+Body\+DTO}} \mbox{\hyperlink{Proxy_8cpp_aa8abb0c4718f86f122a29fd992b3e67a}{Get\+Celestial\+Body\+Info\+Proxy}} (int body\+Id)
+\item
+char $\ast$ \mbox{\hyperlink{Proxy_8cpp_a070706fba8ff9475ca3b778c3bc1e115}{Handle\+Error}} ()
\end{DoxyCompactItemize}
@@ -283,6 +287,12 @@
\doxysubsubsection{\texorpdfstring{FindWindowsOnOccultationConstraintProxy()}{FindWindowsOnOccultationConstraintProxy()}}
{\footnotesize\ttfamily void Find\+Windows\+On\+Occultation\+Constraint\+Proxy (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1WindowDTO}{IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Window\+DTO}}}]{search\+Window, }\item[{int}]{observer\+Id, }\item[{int}]{target\+Id, }\item[{const char $\ast$}]{target\+Frame, }\item[{const char $\ast$}]{target\+Shape, }\item[{int}]{front\+Body\+Id, }\item[{const char $\ast$}]{front\+Frame, }\item[{const char $\ast$}]{front\+Shape, }\item[{const char $\ast$}]{occultation\+Type, }\item[{const char $\ast$}]{aberration, }\item[{double}]{step\+Size, }\item[{\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1WindowDTO}{IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Window\+DTO}} $\ast$}]{windows }\end{DoxyParamCaption})}
+\mbox{\Hypertarget{Proxy_8cpp_aa8abb0c4718f86f122a29fd992b3e67a}\label{Proxy_8cpp_aa8abb0c4718f86f122a29fd992b3e67a}}
+\index{Proxy.cpp@{Proxy.cpp}!GetCelestialBodyInfoProxy@{GetCelestialBodyInfoProxy}}
+\index{GetCelestialBodyInfoProxy@{GetCelestialBodyInfoProxy}!Proxy.cpp@{Proxy.cpp}}
+\doxysubsubsection{\texorpdfstring{GetCelestialBodyInfoProxy()}{GetCelestialBodyInfoProxy()}}
+{\footnotesize\ttfamily \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO}{IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Celestial\+Body\+DTO}} Get\+Celestial\+Body\+Info\+Proxy (\begin{DoxyParamCaption}\item[{int}]{body\+Id }\end{DoxyParamCaption})}
+
\mbox{\Hypertarget{Proxy_8cpp_a1bd1683bf72804ee2be2dfe91e4bb337}\label{Proxy_8cpp_a1bd1683bf72804ee2be2dfe91e4bb337}}
\index{Proxy.cpp@{Proxy.cpp}!GetSpiceVersionProxy@{GetSpiceVersionProxy}}
\index{GetSpiceVersionProxy@{GetSpiceVersionProxy}!Proxy.cpp@{Proxy.cpp}}
@@ -292,6 +302,12 @@
Get the spice version \begin{DoxyReturn}{Returns}
version
\end{DoxyReturn}
+\mbox{\Hypertarget{Proxy_8cpp_a070706fba8ff9475ca3b778c3bc1e115}\label{Proxy_8cpp_a070706fba8ff9475ca3b778c3bc1e115}}
+\index{Proxy.cpp@{Proxy.cpp}!HandleError@{HandleError}}
+\index{HandleError@{HandleError}!Proxy.cpp@{Proxy.cpp}}
+\doxysubsubsection{\texorpdfstring{HandleError()}{HandleError()}}
+{\footnotesize\ttfamily char $\ast$ Handle\+Error (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
+
\mbox{\Hypertarget{Proxy_8cpp_a971a5440d542fbeee8d215f22dc2e9d8}\label{Proxy_8cpp_a971a5440d542fbeee8d215f22dc2e9d8}}
\index{Proxy.cpp@{Proxy.cpp}!LaunchProxy@{LaunchProxy}}
\index{LaunchProxy@{LaunchProxy}!Proxy.cpp@{Proxy.cpp}}
diff --git a/Docs/latex/Proxy_8h.tex b/Docs/latex/Proxy_8h.tex
index 2805be6e..07998381 100644
--- a/Docs/latex/Proxy_8h.tex
+++ b/Docs/latex/Proxy_8h.tex
@@ -9,6 +9,8 @@
\#define \mbox{\hyperlink{Proxy_8h_a283b8fd63f96d196027ef6ad48c4cb85}{MODULE\+\_\+\+API}}
\item
\#define \mbox{\hyperlink{Proxy_8h_a96f1aaaa516ec73ec2f412566f9d2ffd}{PROXY\+\_\+H}}
+\item
+\#define \mbox{\hyperlink{Proxy_8h_a95ef82c0dc2925216e61145c48f63a91}{ERRORMSGLENGTH}}~1024
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
@@ -45,6 +47,10 @@
\item
\mbox{\hyperlink{Proxy_8h_a283b8fd63f96d196027ef6ad48c4cb85}{MODULE\+\_\+\+API}} double \mbox{\hyperlink{Proxy_8h_ab9c954c87940d8be415c2f8b7696ed15}{Convert\+UTCTo\+TDBProxy}} (double utc)
\item
+\mbox{\hyperlink{Proxy_8h_a283b8fd63f96d196027ef6ad48c4cb85}{MODULE\+\_\+\+API}} \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO}{IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Celestial\+Body\+DTO}} \mbox{\hyperlink{Proxy_8h_aa744385eb805ddd19576c1059d59fd5e}{Get\+Celestial\+Body\+Info\+Proxy}} (int body\+Id)
+\item
+char $\ast$ \mbox{\hyperlink{Proxy_8h_a070706fba8ff9475ca3b778c3bc1e115}{Handle\+Error}} ()
+\item
std\+::map$<$ int, std\+::shared\+\_\+ptr$<$ \mbox{\hyperlink{classIO_1_1SDK_1_1Body_1_1CelestialBody}{IO\+::\+SDK\+::\+Body\+::\+Celestial\+Body}} $>$ $>$ \mbox{\hyperlink{Proxy_8h_ad45407eab2a930ba06148832da6fcbd5}{Build\+Celestial\+Bodies}} (\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Scenario\+DTO}} \&scenario)
\item
void \mbox{\hyperlink{Proxy_8h_ac6213574be074a2bf1b4f87f2818d76a}{Build\+Payload}} (const \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Scenario\+DTO}} \&scenario\+Dto, \mbox{\hyperlink{classIO_1_1SDK_1_1Body_1_1Spacecraft_1_1Spacecraft}{IO\+::\+SDK\+::\+Body\+::\+Spacecraft\+::\+Spacecraft}} \&spacecraft)
@@ -96,6 +102,12 @@
\doxysubsection{Macro Definition Documentation}
+\mbox{\Hypertarget{Proxy_8h_a95ef82c0dc2925216e61145c48f63a91}\label{Proxy_8h_a95ef82c0dc2925216e61145c48f63a91}}
+\index{Proxy.h@{Proxy.h}!ERRORMSGLENGTH@{ERRORMSGLENGTH}}
+\index{ERRORMSGLENGTH@{ERRORMSGLENGTH}!Proxy.h@{Proxy.h}}
+\doxysubsubsection{\texorpdfstring{ERRORMSGLENGTH}{ERRORMSGLENGTH}}
+{\footnotesize\ttfamily \#define ERRORMSGLENGTH~1024}
+
\mbox{\Hypertarget{Proxy_8h_a283b8fd63f96d196027ef6ad48c4cb85}\label{Proxy_8h_a283b8fd63f96d196027ef6ad48c4cb85}}
\index{Proxy.h@{Proxy.h}!MODULE\_API@{MODULE\_API}}
\index{MODULE\_API@{MODULE\_API}!Proxy.h@{Proxy.h}}
@@ -396,6 +408,12 @@
{\em windows} & \\
\hline
\end{DoxyParams}
+\mbox{\Hypertarget{Proxy_8h_aa744385eb805ddd19576c1059d59fd5e}\label{Proxy_8h_aa744385eb805ddd19576c1059d59fd5e}}
+\index{Proxy.h@{Proxy.h}!GetCelestialBodyInfoProxy@{GetCelestialBodyInfoProxy}}
+\index{GetCelestialBodyInfoProxy@{GetCelestialBodyInfoProxy}!Proxy.h@{Proxy.h}}
+\doxysubsubsection{\texorpdfstring{GetCelestialBodyInfoProxy()}{GetCelestialBodyInfoProxy()}}
+{\footnotesize\ttfamily \mbox{\hyperlink{Proxy_8h_a283b8fd63f96d196027ef6ad48c4cb85}{MODULE\+\_\+\+API}} \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO}{IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Celestial\+Body\+DTO}} Get\+Celestial\+Body\+Info\+Proxy (\begin{DoxyParamCaption}\item[{int}]{body\+Id }\end{DoxyParamCaption})}
+
\mbox{\Hypertarget{Proxy_8h_a762431b7740df9d560ebe822564369f1}\label{Proxy_8h_a762431b7740df9d560ebe822564369f1}}
\index{Proxy.h@{Proxy.h}!GetSpiceVersionProxy@{GetSpiceVersionProxy}}
\index{GetSpiceVersionProxy@{GetSpiceVersionProxy}!Proxy.h@{Proxy.h}}
@@ -405,6 +423,12 @@
Get the spice version \begin{DoxyReturn}{Returns}
version
\end{DoxyReturn}
+\mbox{\Hypertarget{Proxy_8h_a070706fba8ff9475ca3b778c3bc1e115}\label{Proxy_8h_a070706fba8ff9475ca3b778c3bc1e115}}
+\index{Proxy.h@{Proxy.h}!HandleError@{HandleError}}
+\index{HandleError@{HandleError}!Proxy.h@{Proxy.h}}
+\doxysubsubsection{\texorpdfstring{HandleError()}{HandleError()}}
+{\footnotesize\ttfamily char $\ast$ Handle\+Error (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
+
\mbox{\Hypertarget{Proxy_8h_a1d806e18515093a7f25ad338020ec56d}\label{Proxy_8h_a1d806e18515093a7f25ad338020ec56d}}
\index{Proxy.h@{Proxy.h}!LaunchProxy@{LaunchProxy}}
\index{LaunchProxy@{LaunchProxy}!Proxy.h@{Proxy.h}}
diff --git a/Docs/latex/Proxy_8h_source.tex b/Docs/latex/Proxy_8h_source.tex
index 294ecf01..84d896b4 100644
--- a/Docs/latex/Proxy_8h_source.tex
+++ b/Docs/latex/Proxy_8h_source.tex
@@ -82,90 +82,93 @@
\DoxyCodeLine{206 \mbox{\hyperlink{Proxy_8h_a283b8fd63f96d196027ef6ad48c4cb85}{MODULE\_API}} \textcolor{keywordtype}{double} \mbox{\hyperlink{Proxy_8h_a21e5be456b638ec478bbe753d51d4d82}{ConvertTDBToUTCProxy}}(\textcolor{keywordtype}{double} tdb);}
\DoxyCodeLine{207 }
\DoxyCodeLine{213 \mbox{\hyperlink{Proxy_8h_a283b8fd63f96d196027ef6ad48c4cb85}{MODULE\_API}} \textcolor{keywordtype}{double} \mbox{\hyperlink{Proxy_8h_ab9c954c87940d8be415c2f8b7696ed15}{ConvertUTCToTDBProxy}}(\textcolor{keywordtype}{double} utc);}
-\DoxyCodeLine{214 \textcolor{preprocessor}{\#ifdef \_\_cplusplus}}
-\DoxyCodeLine{215 \}}
-\DoxyCodeLine{216 \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{217 \textcolor{preprocessor}{\#pragma endregion}}
-\DoxyCodeLine{218 }
-\DoxyCodeLine{219 \textcolor{preprocessor}{\#ifndef PROXY\_H}}
-\DoxyCodeLine{220 \textcolor{preprocessor}{\#define PROXY\_H}}
-\DoxyCodeLine{221 }
-\DoxyCodeLine{222 std::map>}
-\DoxyCodeLine{223 \mbox{\hyperlink{Proxy_8h_ad45407eab2a930ba06148832da6fcbd5}{BuildCelestialBodies}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenario);}
-\DoxyCodeLine{224 }
-\DoxyCodeLine{225 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_ac6213574be074a2bf1b4f87f2818d76a}{BuildPayload}}(\textcolor{keyword}{const} \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Body_1_1Spacecraft_1_1Spacecraft}{IO::SDK::Body::Spacecraft::Spacecraft}} \&spacecraft);}
-\DoxyCodeLine{226 }
-\DoxyCodeLine{227 \textcolor{keywordtype}{void}}
-\DoxyCodeLine{228 \mbox{\hyperlink{Proxy_8h_a4ed0bdca1f06eded1b33477141a77ff4}{BuildInstruments}}(\textcolor{keyword}{const} \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDTO, \mbox{\hyperlink{classIO_1_1SDK_1_1Body_1_1Spacecraft_1_1Spacecraft}{IO::SDK::Body::Spacecraft::Spacecraft}} \&spacecraft);}
+\DoxyCodeLine{214 }
+\DoxyCodeLine{215 \mbox{\hyperlink{Proxy_8h_a283b8fd63f96d196027ef6ad48c4cb85}{MODULE\_API}} \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO}{IO::SDK::API::DTO::CelestialBodyDTO}} \mbox{\hyperlink{Proxy_8h_aa744385eb805ddd19576c1059d59fd5e}{GetCelestialBodyInfoProxy}}(\textcolor{keywordtype}{int} bodyId);}
+\DoxyCodeLine{216 \textcolor{preprocessor}{\#ifdef \_\_cplusplus}}
+\DoxyCodeLine{217 \}}
+\DoxyCodeLine{218 \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{219 \textcolor{preprocessor}{\#pragma endregion}}
+\DoxyCodeLine{220 }
+\DoxyCodeLine{221 \textcolor{preprocessor}{\#ifndef PROXY\_H}}
+\DoxyCodeLine{222 \textcolor{preprocessor}{\#define PROXY\_H}}
+\DoxyCodeLine{223 \textcolor{preprocessor}{\#define ERRORMSGLENGTH 1024}}
+\DoxyCodeLine{224 \textcolor{keywordtype}{char} *\mbox{\hyperlink{Proxy_8h_a070706fba8ff9475ca3b778c3bc1e115}{HandleError}}();}
+\DoxyCodeLine{225 std::map>}
+\DoxyCodeLine{226 \mbox{\hyperlink{Proxy_8h_ad45407eab2a930ba06148832da6fcbd5}{BuildCelestialBodies}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenario);}
+\DoxyCodeLine{227 }
+\DoxyCodeLine{228 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_ac6213574be074a2bf1b4f87f2818d76a}{BuildPayload}}(\textcolor{keyword}{const} \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Body_1_1Spacecraft_1_1Spacecraft}{IO::SDK::Body::Spacecraft::Spacecraft}} \&spacecraft);}
\DoxyCodeLine{229 }
-\DoxyCodeLine{230 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a88f9374e58b0d18eae74c7b7af4d1988}{BuildEngines}}(\textcolor{keyword}{const} \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDTO, \mbox{\hyperlink{classIO_1_1SDK_1_1Body_1_1Spacecraft_1_1Spacecraft}{IO::SDK::Body::Spacecraft::Spacecraft}} \&spacecraft);}
-\DoxyCodeLine{231 }
-\DoxyCodeLine{232 \textcolor{keywordtype}{void}}
-\DoxyCodeLine{233 \mbox{\hyperlink{Proxy_8h_a444759ce742846c2f1f52befdbb211be}{BuildFuelTank}}(\textcolor{keyword}{const} \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDTO, \mbox{\hyperlink{classIO_1_1SDK_1_1Body_1_1Spacecraft_1_1Spacecraft}{IO::SDK::Body::Spacecraft::Spacecraft}} \&spacecraft);}
+\DoxyCodeLine{230 \textcolor{keywordtype}{void}}
+\DoxyCodeLine{231 \mbox{\hyperlink{Proxy_8h_a4ed0bdca1f06eded1b33477141a77ff4}{BuildInstruments}}(\textcolor{keyword}{const} \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDTO, \mbox{\hyperlink{classIO_1_1SDK_1_1Body_1_1Spacecraft_1_1Spacecraft}{IO::SDK::Body::Spacecraft::Spacecraft}} \&spacecraft);}
+\DoxyCodeLine{232 }
+\DoxyCodeLine{233 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a88f9374e58b0d18eae74c7b7af4d1988}{BuildEngines}}(\textcolor{keyword}{const} \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDTO, \mbox{\hyperlink{classIO_1_1SDK_1_1Body_1_1Spacecraft_1_1Spacecraft}{IO::SDK::Body::Spacecraft::Spacecraft}} \&spacecraft);}
\DoxyCodeLine{234 }
-\DoxyCodeLine{235 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a7486ed1a8282bf3a560293bfb277999f}{BuildApogeeManeuver}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
-\DoxyCodeLine{236 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
+\DoxyCodeLine{235 \textcolor{keywordtype}{void}}
+\DoxyCodeLine{236 \mbox{\hyperlink{Proxy_8h_a444759ce742846c2f1f52befdbb211be}{BuildFuelTank}}(\textcolor{keyword}{const} \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDTO, \mbox{\hyperlink{classIO_1_1SDK_1_1Body_1_1Spacecraft_1_1Spacecraft}{IO::SDK::Body::Spacecraft::Spacecraft}} \&spacecraft);}
\DoxyCodeLine{237 }
-\DoxyCodeLine{238 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a566ad9c1f30ae8c312dddd06bfbced01}{BuildPerigeeManeuver}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
-\DoxyCodeLine{239 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
+\DoxyCodeLine{238 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a7486ed1a8282bf3a560293bfb277999f}{BuildApogeeManeuver}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
+\DoxyCodeLine{239 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
\DoxyCodeLine{240 }
-\DoxyCodeLine{241 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a6f1de3af5690e1feed42099f39919d30}{BuildApsidalManeuver}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
-\DoxyCodeLine{242 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers,}
-\DoxyCodeLine{243 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&celestialBodies);}
-\DoxyCodeLine{244 }
-\DoxyCodeLine{245 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a92c53c4d657938e271d054a5d9cf1723}{BuildCombinedManeuver}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
-\DoxyCodeLine{246 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
+\DoxyCodeLine{241 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a566ad9c1f30ae8c312dddd06bfbced01}{BuildPerigeeManeuver}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
+\DoxyCodeLine{242 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
+\DoxyCodeLine{243 }
+\DoxyCodeLine{244 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a6f1de3af5690e1feed42099f39919d30}{BuildApsidalManeuver}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
+\DoxyCodeLine{245 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers,}
+\DoxyCodeLine{246 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&celestialBodies);}
\DoxyCodeLine{247 }
-\DoxyCodeLine{248 \textcolor{keywordtype}{void}}
-\DoxyCodeLine{249 \mbox{\hyperlink{Proxy_8h_a296f11ad5c2d250c0b15cd9894df78d7}{BuildOrbitalPlaneManeuver}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
-\DoxyCodeLine{250 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers,}
-\DoxyCodeLine{251 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&celestialBodies);}
-\DoxyCodeLine{252 }
-\DoxyCodeLine{253 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a122e6a78b5bcdc264eb9e74ad7c8c437}{BuildPhasingManeuver}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
-\DoxyCodeLine{254 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers,}
-\DoxyCodeLine{255 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&celestialBodies);}
-\DoxyCodeLine{256 }
-\DoxyCodeLine{257 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_abb049e2c0f71131a987bf56c3f4fbcf3}{BuildManeuvers}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
-\DoxyCodeLine{258 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&celestialBodies,}
-\DoxyCodeLine{259 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
-\DoxyCodeLine{260 }
-\DoxyCodeLine{261 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_ad109937e075918a4169dbe2876ac2e30}{BuildProgradeAttitude}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
-\DoxyCodeLine{262 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
+\DoxyCodeLine{248 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a92c53c4d657938e271d054a5d9cf1723}{BuildCombinedManeuver}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
+\DoxyCodeLine{249 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
+\DoxyCodeLine{250 }
+\DoxyCodeLine{251 \textcolor{keywordtype}{void}}
+\DoxyCodeLine{252 \mbox{\hyperlink{Proxy_8h_a296f11ad5c2d250c0b15cd9894df78d7}{BuildOrbitalPlaneManeuver}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
+\DoxyCodeLine{253 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers,}
+\DoxyCodeLine{254 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&celestialBodies);}
+\DoxyCodeLine{255 }
+\DoxyCodeLine{256 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a122e6a78b5bcdc264eb9e74ad7c8c437}{BuildPhasingManeuver}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
+\DoxyCodeLine{257 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers,}
+\DoxyCodeLine{258 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&celestialBodies);}
+\DoxyCodeLine{259 }
+\DoxyCodeLine{260 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_abb049e2c0f71131a987bf56c3f4fbcf3}{BuildManeuvers}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
+\DoxyCodeLine{261 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&celestialBodies,}
+\DoxyCodeLine{262 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
\DoxyCodeLine{263 }
-\DoxyCodeLine{264 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a85720c91750cd873d1dbf050fa3d2a18}{BuildRetrogradeAttitude}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
-\DoxyCodeLine{265 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
+\DoxyCodeLine{264 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_ad109937e075918a4169dbe2876ac2e30}{BuildProgradeAttitude}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
+\DoxyCodeLine{265 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
\DoxyCodeLine{266 }
-\DoxyCodeLine{267 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a70191d395a750d5ca92dd638564d35b2}{BuildZenithAttitude}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
-\DoxyCodeLine{268 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
+\DoxyCodeLine{267 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a85720c91750cd873d1dbf050fa3d2a18}{BuildRetrogradeAttitude}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
+\DoxyCodeLine{268 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
\DoxyCodeLine{269 }
-\DoxyCodeLine{270 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a389131e56e754d5a3578f009c8bbab91}{BuildNadirAttitude}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
-\DoxyCodeLine{271 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
+\DoxyCodeLine{270 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a70191d395a750d5ca92dd638564d35b2}{BuildZenithAttitude}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
+\DoxyCodeLine{271 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
\DoxyCodeLine{272 }
-\DoxyCodeLine{273 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a820df7ddc7223c06513f52b0845db89e}{BuildInstrumentPointingToAttitude}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
-\DoxyCodeLine{274 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers,}
-\DoxyCodeLine{275 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&celestialBodies);}
-\DoxyCodeLine{276 }
-\DoxyCodeLine{277 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a466bec93a33dfabd6a60722c8edf333f}{ReadApogeeManeuverResult}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto,}
-\DoxyCodeLine{278 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
+\DoxyCodeLine{273 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a389131e56e754d5a3578f009c8bbab91}{BuildNadirAttitude}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
+\DoxyCodeLine{274 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
+\DoxyCodeLine{275 }
+\DoxyCodeLine{276 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a820df7ddc7223c06513f52b0845db89e}{BuildInstrumentPointingToAttitude}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto, \mbox{\hyperlink{classIO_1_1SDK_1_1Scenario}{IO::SDK::Scenario}} \&scenario,}
+\DoxyCodeLine{277 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers,}
+\DoxyCodeLine{278 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&celestialBodies);}
\DoxyCodeLine{279 }
-\DoxyCodeLine{280 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_aa7d09fd7d9d73216a3ee6020565d061e}{ReadPerigeeManeuverResult}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto,}
-\DoxyCodeLine{281 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
+\DoxyCodeLine{280 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a466bec93a33dfabd6a60722c8edf333f}{ReadApogeeManeuverResult}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto,}
+\DoxyCodeLine{281 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
\DoxyCodeLine{282 }
-\DoxyCodeLine{283 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a717c7d3ca5a48e85b637148eb0262df8}{ReadOrbitalPlaneManeuverResult}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto,}
-\DoxyCodeLine{284 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
+\DoxyCodeLine{283 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_aa7d09fd7d9d73216a3ee6020565d061e}{ReadPerigeeManeuverResult}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto,}
+\DoxyCodeLine{284 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
\DoxyCodeLine{285 }
-\DoxyCodeLine{286 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a29b830927e678eac49585d2c12370135}{ReadCombinedManeuverResult}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto,}
-\DoxyCodeLine{287 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
+\DoxyCodeLine{286 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a717c7d3ca5a48e85b637148eb0262df8}{ReadOrbitalPlaneManeuverResult}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto,}
+\DoxyCodeLine{287 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
\DoxyCodeLine{288 }
-\DoxyCodeLine{289 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a274e1f3865453efe582b74fce0b657a1}{ReadApsidalAlignmentManeuverResult}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto,}
-\DoxyCodeLine{290 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
+\DoxyCodeLine{289 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a29b830927e678eac49585d2c12370135}{ReadCombinedManeuverResult}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto,}
+\DoxyCodeLine{290 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
\DoxyCodeLine{291 }
-\DoxyCodeLine{292 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a6c39e673976b509ad3fa42613ffa38d7}{ReadPhasingManeuverResult}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto,}
-\DoxyCodeLine{293 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
+\DoxyCodeLine{292 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a274e1f3865453efe582b74fce0b657a1}{ReadApsidalAlignmentManeuverResult}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto,}
+\DoxyCodeLine{293 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
\DoxyCodeLine{294 }
-\DoxyCodeLine{295 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a55b5f32b6b7ab7369fe7847e4ebc045b}{ReadManeuverResults}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto,}
-\DoxyCodeLine{296 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
+\DoxyCodeLine{295 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a6c39e673976b509ad3fa42613ffa38d7}{ReadPhasingManeuverResult}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto,}
+\DoxyCodeLine{296 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
\DoxyCodeLine{297 }
-\DoxyCodeLine{298 \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{298 \textcolor{keywordtype}{void} \mbox{\hyperlink{Proxy_8h_a55b5f32b6b7ab7369fe7847e4ebc045b}{ReadManeuverResults}}(\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1ScenarioDTO}{IO::SDK::API::DTO::ScenarioDTO}} \&scenarioDto,}
+\DoxyCodeLine{299 std::map<\textcolor{keywordtype}{int}, std::shared\_ptr> \&maneuvers);}
+\DoxyCodeLine{300 }
+\DoxyCodeLine{301 \textcolor{preprocessor}{\#endif}}
\end{DoxyCode}
diff --git a/Docs/latex/classIO_1_1SDK_1_1Body_1_1Body.pdf b/Docs/latex/classIO_1_1SDK_1_1Body_1_1Body.pdf
index 62316644..80053ec2 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Body_1_1Body.pdf and b/Docs/latex/classIO_1_1SDK_1_1Body_1_1Body.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Body_1_1CelestialBody.pdf b/Docs/latex/classIO_1_1SDK_1_1Body_1_1CelestialBody.pdf
index 6de571de..139d518b 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Body_1_1CelestialBody.pdf and b/Docs/latex/classIO_1_1SDK_1_1Body_1_1CelestialBody.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Body_1_1CelestialBody.tex b/Docs/latex/classIO_1_1SDK_1_1Body_1_1CelestialBody.tex
index d13ce8e5..4cd785b4 100644
--- a/Docs/latex/classIO_1_1SDK_1_1Body_1_1CelestialBody.tex
+++ b/Docs/latex/classIO_1_1SDK_1_1Body_1_1CelestialBody.tex
@@ -49,6 +49,8 @@
static bool \mbox{\hyperlink{classIO_1_1SDK_1_1Body_1_1CelestialBody_ad13cee9329c5ececbe5c1a6652cedc76}{Is\+Moon}} (int celestial\+Body\+Id)
\item
static int \mbox{\hyperlink{classIO_1_1SDK_1_1Body_1_1CelestialBody_a7387c787cf8e1597dbd97a3f8d039037}{Find\+Center\+Of\+Motion\+Id}} (int celestial\+Body\+Naif\+Id)
+\item
+static bool \mbox{\hyperlink{classIO_1_1SDK_1_1Body_1_1CelestialBody_a49b16afff71b1b9d99f99970706cc892}{Is\+Barycenter}} (int celestial\+Body\+Id)
\end{DoxyCompactItemize}
\doxysubsection*{Additional Inherited Members}
@@ -186,6 +188,12 @@
\doxysubsubsection{\texorpdfstring{IsAsteroid()}{IsAsteroid()}}
{\footnotesize\ttfamily bool IO\+::\+SDK\+::\+Body\+::\+Celestial\+Body\+::\+Is\+Asteroid (\begin{DoxyParamCaption}\item[{int}]{celestial\+Body\+Id }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}
+\mbox{\Hypertarget{classIO_1_1SDK_1_1Body_1_1CelestialBody_a49b16afff71b1b9d99f99970706cc892}\label{classIO_1_1SDK_1_1Body_1_1CelestialBody_a49b16afff71b1b9d99f99970706cc892}}
+\index{IO::SDK::Body::CelestialBody@{IO::SDK::Body::CelestialBody}!IsBarycenter@{IsBarycenter}}
+\index{IsBarycenter@{IsBarycenter}!IO::SDK::Body::CelestialBody@{IO::SDK::Body::CelestialBody}}
+\doxysubsubsection{\texorpdfstring{IsBarycenter()}{IsBarycenter()}}
+{\footnotesize\ttfamily bool IO\+::\+SDK\+::\+Body\+::\+Celestial\+Body\+::\+Is\+Barycenter (\begin{DoxyParamCaption}\item[{int}]{celestial\+Body\+Id }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}
+
\mbox{\Hypertarget{classIO_1_1SDK_1_1Body_1_1CelestialBody_a7cafdbfbf4e2215de2d943f945acd3d7}\label{classIO_1_1SDK_1_1Body_1_1CelestialBody_a7cafdbfbf4e2215de2d943f945acd3d7}}
\index{IO::SDK::Body::CelestialBody@{IO::SDK::Body::CelestialBody}!IsInHillSphere@{IsInHillSphere}}
\index{IsInHillSphere@{IsInHillSphere}!IO::SDK::Body::CelestialBody@{IO::SDK::Body::CelestialBody}}
diff --git a/Docs/latex/classIO_1_1SDK_1_1Body_1_1Spacecraft_1_1Spacecraft.pdf b/Docs/latex/classIO_1_1SDK_1_1Body_1_1Spacecraft_1_1Spacecraft.pdf
index 1129d324..541d6114 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Body_1_1Spacecraft_1_1Spacecraft.pdf and b/Docs/latex/classIO_1_1SDK_1_1Body_1_1Spacecraft_1_1Spacecraft.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Exception_1_1InvalidArgumentException.pdf b/Docs/latex/classIO_1_1SDK_1_1Exception_1_1InvalidArgumentException.pdf
index d20ca4ff..07074b76 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Exception_1_1InvalidArgumentException.pdf and b/Docs/latex/classIO_1_1SDK_1_1Exception_1_1InvalidArgumentException.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Exception_1_1PropagatorException.pdf b/Docs/latex/classIO_1_1SDK_1_1Exception_1_1PropagatorException.pdf
index 4e6650b3..a915cdb2 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Exception_1_1PropagatorException.pdf and b/Docs/latex/classIO_1_1SDK_1_1Exception_1_1PropagatorException.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Exception_1_1SDKException.pdf b/Docs/latex/classIO_1_1SDK_1_1Exception_1_1SDKException.pdf
index 38f1dd45..a49a0116 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Exception_1_1SDKException.pdf and b/Docs/latex/classIO_1_1SDK_1_1Exception_1_1SDKException.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Exception_1_1TooEarlyManeuverException.pdf b/Docs/latex/classIO_1_1SDK_1_1Exception_1_1TooEarlyManeuverException.pdf
index e1e22a41..0df481d5 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Exception_1_1TooEarlyManeuverException.pdf and b/Docs/latex/classIO_1_1SDK_1_1Exception_1_1TooEarlyManeuverException.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Frames_1_1BodyFixedFrames.pdf b/Docs/latex/classIO_1_1SDK_1_1Frames_1_1BodyFixedFrames.pdf
index 46788497..1c09982b 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Frames_1_1BodyFixedFrames.pdf and b/Docs/latex/classIO_1_1SDK_1_1Frames_1_1BodyFixedFrames.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Frames_1_1FrameFile.pdf b/Docs/latex/classIO_1_1SDK_1_1Frames_1_1FrameFile.pdf
index c8d4a10b..3d0795ac 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Frames_1_1FrameFile.pdf and b/Docs/latex/classIO_1_1SDK_1_1Frames_1_1FrameFile.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Frames_1_1Frames.pdf b/Docs/latex/classIO_1_1SDK_1_1Frames_1_1Frames.pdf
index d3e55f50..1acf45ce 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Frames_1_1Frames.pdf and b/Docs/latex/classIO_1_1SDK_1_1Frames_1_1Frames.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Frames_1_1InertialFrames.pdf b/Docs/latex/classIO_1_1SDK_1_1Frames_1_1InertialFrames.pdf
index 25705933..ff72825f 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Frames_1_1InertialFrames.pdf and b/Docs/latex/classIO_1_1SDK_1_1Frames_1_1InertialFrames.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Frames_1_1InstrumentFrameFile.pdf b/Docs/latex/classIO_1_1SDK_1_1Frames_1_1InstrumentFrameFile.pdf
index 16d39f19..eabcfa5a 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Frames_1_1InstrumentFrameFile.pdf and b/Docs/latex/classIO_1_1SDK_1_1Frames_1_1InstrumentFrameFile.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Frames_1_1SiteFrameFile.pdf b/Docs/latex/classIO_1_1SDK_1_1Frames_1_1SiteFrameFile.pdf
index 999ec972..b3a10dce 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Frames_1_1SiteFrameFile.pdf and b/Docs/latex/classIO_1_1SDK_1_1Frames_1_1SiteFrameFile.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Frames_1_1SpacecraftFrameFile.pdf b/Docs/latex/classIO_1_1SDK_1_1Frames_1_1SpacecraftFrameFile.pdf
index 1191d1ac..1ce32e0a 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Frames_1_1SpacecraftFrameFile.pdf and b/Docs/latex/classIO_1_1SDK_1_1Frames_1_1SpacecraftFrameFile.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1Forces_1_1Force.pdf b/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1Forces_1_1Force.pdf
index 10f18821..b27a4bb8 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1Forces_1_1Force.pdf and b/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1Forces_1_1Force.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1Forces_1_1GravityForce.pdf b/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1Forces_1_1GravityForce.pdf
index c83f41d1..4fb5c743 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1Forces_1_1GravityForce.pdf and b/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1Forces_1_1GravityForce.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1IntegratorBase.pdf b/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1IntegratorBase.pdf
index ff034a15..08fd83a8 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1IntegratorBase.pdf and b/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1IntegratorBase.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1TLEIntegrator.pdf b/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1TLEIntegrator.pdf
index 8ba48dab..589d6937 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1TLEIntegrator.pdf and b/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1TLEIntegrator.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1VVIntegrator.pdf b/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1VVIntegrator.pdf
index f3af81fd..6265bcfe 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1VVIntegrator.pdf and b/Docs/latex/classIO_1_1SDK_1_1Integrators_1_1VVIntegrator.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1CircularInstrumentKernel.pdf b/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1CircularInstrumentKernel.pdf
index bce39001..784518f3 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1CircularInstrumentKernel.pdf and b/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1CircularInstrumentKernel.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1EllipticalInstrumentKernel.pdf b/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1EllipticalInstrumentKernel.pdf
index e420cfbd..d8174e60 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1EllipticalInstrumentKernel.pdf and b/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1EllipticalInstrumentKernel.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1EphemerisKernel.pdf b/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1EphemerisKernel.pdf
index fca02f00..3d6987c0 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1EphemerisKernel.pdf and b/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1EphemerisKernel.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1InstrumentKernel.pdf b/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1InstrumentKernel.pdf
index 5d290b0b..f53f680b 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1InstrumentKernel.pdf and b/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1InstrumentKernel.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1Kernel.pdf b/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1Kernel.pdf
index 8c2dd546..cdc27314 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1Kernel.pdf and b/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1Kernel.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1OrientationKernel.pdf b/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1OrientationKernel.pdf
index cfc50012..1dbabdf5 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1OrientationKernel.pdf and b/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1OrientationKernel.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1RectangularInstrumentKernel.pdf b/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1RectangularInstrumentKernel.pdf
index 4054dd1a..f18e69e4 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1RectangularInstrumentKernel.pdf and b/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1RectangularInstrumentKernel.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1SpacecraftClockKernel.pdf b/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1SpacecraftClockKernel.pdf
index 4ffb1701..514864d4 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1SpacecraftClockKernel.pdf and b/Docs/latex/classIO_1_1SDK_1_1Kernels_1_1SpacecraftClockKernel.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1ApogeeHeightChangingManeuver.pdf b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1ApogeeHeightChangingManeuver.pdf
index 8ecc191e..f89c5719 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1ApogeeHeightChangingManeuver.pdf and b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1ApogeeHeightChangingManeuver.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1ApsidalAlignmentManeuver.pdf b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1ApsidalAlignmentManeuver.pdf
index 1eebd21e..945a44d0 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1ApsidalAlignmentManeuver.pdf and b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1ApsidalAlignmentManeuver.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1InstrumentPointingToAttitude.pdf b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1InstrumentPointingToAttitude.pdf
index 1fc7e2eb..eae9cca5 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1InstrumentPointingToAttitude.pdf and b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1InstrumentPointingToAttitude.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1NadirAttitude.pdf b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1NadirAttitude.pdf
index e4e20ba8..8fd96dd9 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1NadirAttitude.pdf and b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1NadirAttitude.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1ProgradeAttitude.pdf b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1ProgradeAttitude.pdf
index 5267e63b..5128fcb2 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1ProgradeAttitude.pdf and b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1ProgradeAttitude.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1RetrogradeAttitude.pdf b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1RetrogradeAttitude.pdf
index 512fd5ad..e7e69c03 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1RetrogradeAttitude.pdf and b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1RetrogradeAttitude.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1TowardObjectAttitude.pdf b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1TowardObjectAttitude.pdf
index 2f0dd664..700465e8 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1TowardObjectAttitude.pdf and b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1TowardObjectAttitude.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1ZenithAttitude.pdf b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1ZenithAttitude.pdf
index 130fe011..24ec9b6d 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1ZenithAttitude.pdf and b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1Attitudes_1_1ZenithAttitude.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1CombinedManeuver.pdf b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1CombinedManeuver.pdf
index f7df43b5..079409be 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1CombinedManeuver.pdf and b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1CombinedManeuver.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1ManeuverBase.pdf b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1ManeuverBase.pdf
index 354bdd7a..9d5578db 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1ManeuverBase.pdf and b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1ManeuverBase.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1OrbitalPlaneChangingManeuver.pdf b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1OrbitalPlaneChangingManeuver.pdf
index b687715b..50dd8dda 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1OrbitalPlaneChangingManeuver.pdf and b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1OrbitalPlaneChangingManeuver.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1PerigeeHeightChangingManeuver.pdf b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1PerigeeHeightChangingManeuver.pdf
index 1eb2c5aa..a0aa945f 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1PerigeeHeightChangingManeuver.pdf and b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1PerigeeHeightChangingManeuver.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1PhasingManeuver.pdf b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1PhasingManeuver.pdf
index 861e0c41..4a625667 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1PhasingManeuver.pdf and b/Docs/latex/classIO_1_1SDK_1_1Maneuvers_1_1PhasingManeuver.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1ConicOrbitalElements.pdf b/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1ConicOrbitalElements.pdf
index ded4e11f..cedacb45 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1ConicOrbitalElements.pdf and b/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1ConicOrbitalElements.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1EquinoctialElements.pdf b/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1EquinoctialElements.pdf
index a37ecb47..4afde502 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1EquinoctialElements.pdf and b/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1EquinoctialElements.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1OrbitalParameters.pdf b/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1OrbitalParameters.pdf
index d5195e73..1a401cae 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1OrbitalParameters.pdf and b/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1OrbitalParameters.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1StateVector.pdf b/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1StateVector.pdf
index 520e8322..69055aab 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1StateVector.pdf and b/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1StateVector.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1TLE.pdf b/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1TLE.pdf
index eef5b4d1..16f8b941 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1TLE.pdf and b/Docs/latex/classIO_1_1SDK_1_1OrbitalParameters_1_1TLE.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Sites_1_1LaunchSite.pdf b/Docs/latex/classIO_1_1SDK_1_1Sites_1_1LaunchSite.pdf
index fc103df5..64c0de8a 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Sites_1_1LaunchSite.pdf and b/Docs/latex/classIO_1_1SDK_1_1Sites_1_1LaunchSite.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Sites_1_1Site.pdf b/Docs/latex/classIO_1_1SDK_1_1Sites_1_1Site.pdf
index b9e81c65..ae8d106d 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Sites_1_1Site.pdf and b/Docs/latex/classIO_1_1SDK_1_1Sites_1_1Site.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Time_1_1DateTime.pdf b/Docs/latex/classIO_1_1SDK_1_1Time_1_1DateTime.pdf
index 649c39bc..b4596ae2 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Time_1_1DateTime.pdf and b/Docs/latex/classIO_1_1SDK_1_1Time_1_1DateTime.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Time_1_1TDB.pdf b/Docs/latex/classIO_1_1SDK_1_1Time_1_1TDB.pdf
index 23f3eb76..95397edb 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Time_1_1TDB.pdf and b/Docs/latex/classIO_1_1SDK_1_1Time_1_1TDB.pdf differ
diff --git a/Docs/latex/classIO_1_1SDK_1_1Time_1_1UTC.pdf b/Docs/latex/classIO_1_1SDK_1_1Time_1_1UTC.pdf
index 98538962..6b554551 100644
Binary files a/Docs/latex/classIO_1_1SDK_1_1Time_1_1UTC.pdf and b/Docs/latex/classIO_1_1SDK_1_1Time_1_1UTC.pdf differ
diff --git a/Docs/latex/structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO.tex b/Docs/latex/structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO.tex
index faade457..2c795051 100644
--- a/Docs/latex/structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO.tex
+++ b/Docs/latex/structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO.tex
@@ -7,9 +7,21 @@
\doxysubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item
-int \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_a60d670a07c638d350d67344c272a9e70}{id}} \{-\/1\}
+int \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_a7a2d2b139b6042457cf21457dd304893}{Id}} \{-\/1\}
\item
int \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_aa2a4ad33eca57dafa55fb9c0ba1d4dac}{center\+Of\+Motion\+Id}} \{-\/1\}
+\item
+char $\ast$ \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_ac58bd7effed87fb64a593b795a357a03}{Name}} \{\}
+\item
+\mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1Vector3DDTO}{IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Vector3\+DDTO}} \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_a09be131402eaa380ad0b9c52527c1b97}{Radii}} \{\}
+\item
+double \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_ac0f5111140d7687c5a4729152281a4f1}{GM}} \{\}
+\item
+char $\ast$ \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_ae2f99558614ed846ba5a7ecac12ace9d}{Frame\+Name}} \{\}
+\item
+int \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_a2f5720669728eabfd91fa6cd36db3f2b}{Frame\+Id}} \{\}
+\item
+char $\ast$ \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_aae2e2aafadb3a86c9a40a155babca4ed}{Error}} \{\}
\end{DoxyCompactItemize}
@@ -20,11 +32,47 @@
\doxysubsubsection{\texorpdfstring{centerOfMotionId}{centerOfMotionId}}
{\footnotesize\ttfamily int IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Celestial\+Body\+DTO\+::center\+Of\+Motion\+Id \{-\/1\}}
-\mbox{\Hypertarget{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_a60d670a07c638d350d67344c272a9e70}\label{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_a60d670a07c638d350d67344c272a9e70}}
-\index{IO::SDK::API::DTO::CelestialBodyDTO@{IO::SDK::API::DTO::CelestialBodyDTO}!id@{id}}
-\index{id@{id}!IO::SDK::API::DTO::CelestialBodyDTO@{IO::SDK::API::DTO::CelestialBodyDTO}}
-\doxysubsubsection{\texorpdfstring{id}{id}}
-{\footnotesize\ttfamily int IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Celestial\+Body\+DTO\+::id \{-\/1\}}
+\mbox{\Hypertarget{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_aae2e2aafadb3a86c9a40a155babca4ed}\label{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_aae2e2aafadb3a86c9a40a155babca4ed}}
+\index{IO::SDK::API::DTO::CelestialBodyDTO@{IO::SDK::API::DTO::CelestialBodyDTO}!Error@{Error}}
+\index{Error@{Error}!IO::SDK::API::DTO::CelestialBodyDTO@{IO::SDK::API::DTO::CelestialBodyDTO}}
+\doxysubsubsection{\texorpdfstring{Error}{Error}}
+{\footnotesize\ttfamily char$\ast$ IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Celestial\+Body\+DTO\+::\+Error \{\}}
+
+\mbox{\Hypertarget{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_a2f5720669728eabfd91fa6cd36db3f2b}\label{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_a2f5720669728eabfd91fa6cd36db3f2b}}
+\index{IO::SDK::API::DTO::CelestialBodyDTO@{IO::SDK::API::DTO::CelestialBodyDTO}!FrameId@{FrameId}}
+\index{FrameId@{FrameId}!IO::SDK::API::DTO::CelestialBodyDTO@{IO::SDK::API::DTO::CelestialBodyDTO}}
+\doxysubsubsection{\texorpdfstring{FrameId}{FrameId}}
+{\footnotesize\ttfamily int IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Celestial\+Body\+DTO\+::\+Frame\+Id \{\}}
+
+\mbox{\Hypertarget{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_ae2f99558614ed846ba5a7ecac12ace9d}\label{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_ae2f99558614ed846ba5a7ecac12ace9d}}
+\index{IO::SDK::API::DTO::CelestialBodyDTO@{IO::SDK::API::DTO::CelestialBodyDTO}!FrameName@{FrameName}}
+\index{FrameName@{FrameName}!IO::SDK::API::DTO::CelestialBodyDTO@{IO::SDK::API::DTO::CelestialBodyDTO}}
+\doxysubsubsection{\texorpdfstring{FrameName}{FrameName}}
+{\footnotesize\ttfamily char$\ast$ IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Celestial\+Body\+DTO\+::\+Frame\+Name \{\}}
+
+\mbox{\Hypertarget{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_ac0f5111140d7687c5a4729152281a4f1}\label{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_ac0f5111140d7687c5a4729152281a4f1}}
+\index{IO::SDK::API::DTO::CelestialBodyDTO@{IO::SDK::API::DTO::CelestialBodyDTO}!GM@{GM}}
+\index{GM@{GM}!IO::SDK::API::DTO::CelestialBodyDTO@{IO::SDK::API::DTO::CelestialBodyDTO}}
+\doxysubsubsection{\texorpdfstring{GM}{GM}}
+{\footnotesize\ttfamily double IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Celestial\+Body\+DTO\+::\+GM \{\}}
+
+\mbox{\Hypertarget{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_a7a2d2b139b6042457cf21457dd304893}\label{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_a7a2d2b139b6042457cf21457dd304893}}
+\index{IO::SDK::API::DTO::CelestialBodyDTO@{IO::SDK::API::DTO::CelestialBodyDTO}!Id@{Id}}
+\index{Id@{Id}!IO::SDK::API::DTO::CelestialBodyDTO@{IO::SDK::API::DTO::CelestialBodyDTO}}
+\doxysubsubsection{\texorpdfstring{Id}{Id}}
+{\footnotesize\ttfamily int IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Celestial\+Body\+DTO\+::\+Id \{-\/1\}}
+
+\mbox{\Hypertarget{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_ac58bd7effed87fb64a593b795a357a03}\label{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_ac58bd7effed87fb64a593b795a357a03}}
+\index{IO::SDK::API::DTO::CelestialBodyDTO@{IO::SDK::API::DTO::CelestialBodyDTO}!Name@{Name}}
+\index{Name@{Name}!IO::SDK::API::DTO::CelestialBodyDTO@{IO::SDK::API::DTO::CelestialBodyDTO}}
+\doxysubsubsection{\texorpdfstring{Name}{Name}}
+{\footnotesize\ttfamily char$\ast$ IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Celestial\+Body\+DTO\+::\+Name \{\}}
+
+\mbox{\Hypertarget{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_a09be131402eaa380ad0b9c52527c1b97}\label{structIO_1_1SDK_1_1API_1_1DTO_1_1CelestialBodyDTO_a09be131402eaa380ad0b9c52527c1b97}}
+\index{IO::SDK::API::DTO::CelestialBodyDTO@{IO::SDK::API::DTO::CelestialBodyDTO}!Radii@{Radii}}
+\index{Radii@{Radii}!IO::SDK::API::DTO::CelestialBodyDTO@{IO::SDK::API::DTO::CelestialBodyDTO}}
+\doxysubsubsection{\texorpdfstring{Radii}{Radii}}
+{\footnotesize\ttfamily \mbox{\hyperlink{structIO_1_1SDK_1_1API_1_1DTO_1_1Vector3DDTO}{IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Vector3\+DDTO}} IO\+::\+SDK\+::\+API\+::\+DTO\+::\+Celestial\+Body\+DTO\+::\+Radii \{\}}
diff --git a/IO.SDK.Tests/APITests.cpp b/IO.SDK.Tests/APITests.cpp
index 6ae0e143..40c01409 100644
--- a/IO.SDK.Tests/APITests.cpp
+++ b/IO.SDK.Tests/APITests.cpp
@@ -12,7 +12,7 @@
TEST(API, DTOSize)
{
auto size2 = sizeof(IO::SDK::API::DTO::ScenarioDTO);
- ASSERT_EQ(18816, size2);
+ ASSERT_EQ(21440, size2);
}
TEST(API, TDBToString)
@@ -33,9 +33,9 @@ TEST(API, SitePropagation)
scenario.Name = "scenatiosites";
scenario.Window.start = 668085625.01523638;
scenario.Window.end = 668174330.814560;
- scenario.CelestialBodies[0].id = 399;
+ scenario.CelestialBodies[0].Id = 399;
scenario.CelestialBodies[0].centerOfMotionId = 10;
- scenario.CelestialBodies[1].id = 10;
+ scenario.CelestialBodies[1].Id = 10;
scenario.Sites[0].id = 399033;
scenario.Sites[0].name = "S33";
std::string sitePath(SitePath);
@@ -48,7 +48,7 @@ TEST(API, SitePropagation)
scenario.Spacecraft.name = "spc1";
scenario.Spacecraft.dryOperatingMass = 1000.0;
scenario.Spacecraft.maximumOperatingMass = 3000.0;
- scenario.Spacecraft.initialOrbitalParameter.centerOfMotion.id = 399;
+ scenario.Spacecraft.initialOrbitalParameter.centerOfMotion.Id = 399;
scenario.Spacecraft.initialOrbitalParameter.centerOfMotion.centerOfMotionId = 10;
scenario.Spacecraft.initialOrbitalParameter.epoch = 668085625.01523638;
scenario.Spacecraft.initialOrbitalParameter.inertialFrame = "J2000";
@@ -71,10 +71,10 @@ TEST(API, SpacecraftPropagation)
scenario.Name = "scenatiosites";
scenario.Window.start = 668085625.015240;
scenario.Window.end = 668174469.185440;
- scenario.CelestialBodies[0].id = 10;
- scenario.CelestialBodies[1].id = 399;
+ scenario.CelestialBodies[0].Id = 10;
+ scenario.CelestialBodies[1].Id = 399;
scenario.CelestialBodies[1].centerOfMotionId = 10;
- scenario.CelestialBodies[2].id = 301;
+ scenario.CelestialBodies[2].Id = 301;
scenario.CelestialBodies[2].centerOfMotionId = 399;
scenario.Spacecraft.id = -1111;
scenario.Spacecraft.name = "spc1";
@@ -82,7 +82,7 @@ TEST(API, SpacecraftPropagation)
scenario.Spacecraft.maximumOperatingMass = 10000.0;
std::string spacecraftPath(SpacecraftPath);
scenario.Spacecraft.directoryPath = spacecraftPath.c_str();
- scenario.Spacecraft.initialOrbitalParameter.centerOfMotion.id = 399;
+ scenario.Spacecraft.initialOrbitalParameter.centerOfMotion.Id = 399;
scenario.Spacecraft.initialOrbitalParameter.centerOfMotion.centerOfMotionId = 10;
scenario.Spacecraft.initialOrbitalParameter.epoch = 667915269.18539762;
scenario.Spacecraft.initialOrbitalParameter.inertialFrame = "J2000";
@@ -115,7 +115,7 @@ TEST(API, SpacecraftPropagation)
scenario.Spacecraft.orbitalPlaneChangingManeuvers[0].targetOrbit.velocity.x = -4979.4693432656513;
scenario.Spacecraft.orbitalPlaneChangingManeuvers[0].targetOrbit.velocity.y = 3033.2639866911495;
scenario.Spacecraft.orbitalPlaneChangingManeuvers[0].targetOrbit.velocity.z = 6933.1803797017265;
- scenario.Spacecraft.orbitalPlaneChangingManeuvers[0].targetOrbit.centerOfMotion.id = 399;
+ scenario.Spacecraft.orbitalPlaneChangingManeuvers[0].targetOrbit.centerOfMotion.Id = 399;
scenario.Spacecraft.orbitalPlaneChangingManeuvers[0].targetOrbit.centerOfMotion.centerOfMotionId = 10;
scenario.Spacecraft.orbitalPlaneChangingManeuvers[0].targetOrbit.epoch = 667915269.18539762;
scenario.Spacecraft.orbitalPlaneChangingManeuvers[0].targetOrbit.inertialFrame = "J2000";
@@ -251,7 +251,7 @@ TEST(API, ReadEphemerisProxy)
searchWindow.start = 0.0;
searchWindow.end = 100.0;
- IO::SDK::API::DTO::StateVectorDTO sv[10000];
+ IO::SDK::API::DTO::StateVectorDTO sv[5000];
ReadEphemerisProxy(searchWindow, 399, 301, "J2000", "LT", 10.0, sv);
ASSERT_DOUBLE_EQ(-291569264.48965073, sv[0].position.x);
ASSERT_DOUBLE_EQ(-266709187.1624887, sv[0].position.y);
@@ -259,7 +259,7 @@ TEST(API, ReadEphemerisProxy)
ASSERT_DOUBLE_EQ(643.53061483971885, sv[0].velocity.x);
ASSERT_DOUBLE_EQ(-666.08181440799092, sv[0].velocity.y);
ASSERT_DOUBLE_EQ(-301.32283209101018, sv[0].velocity.z);
- ASSERT_DOUBLE_EQ(399, sv[0].centerOfMotion.id);
+ ASSERT_DOUBLE_EQ(399, sv[0].centerOfMotion.Id);
ASSERT_DOUBLE_EQ(10, sv[0].centerOfMotion.centerOfMotionId);
ASSERT_STREQ("J2000", sv[0].inertialFrame);
ASSERT_DOUBLE_EQ(0.0, sv[0].epoch);
@@ -271,7 +271,7 @@ TEST(API, ReadEphemerisProxyException)
searchWindow.start = 0.0;
searchWindow.end = 10001.0;
- IO::SDK::API::DTO::StateVectorDTO sv[10000];
+ IO::SDK::API::DTO::StateVectorDTO sv[5000];
ASSERT_THROW(ReadEphemerisProxy(searchWindow, 399, 301, "J2000", "LT", 1.0, sv), IO::SDK::Exception::InvalidArgumentException);
}
@@ -364,7 +364,7 @@ TEST(API, WriteEphemeris)
sv[i].velocity.y = 8.0 + i * 0.001;
sv[i].velocity.z = i;
sv[i].epoch = i;
- sv[i].centerOfMotion.id = 399;
+ sv[i].centerOfMotion.Id = 399;
sv[i].centerOfMotion.centerOfMotionId = 10;
sv[i].inertialFrame = "J2000";
}
@@ -389,8 +389,30 @@ TEST(API, WriteEphemeris)
ASSERT_DOUBLE_EQ(svresult[i].velocity.y, 8 + i * 0.001);
ASSERT_DOUBLE_EQ(svresult[i].velocity.z, i);
ASSERT_DOUBLE_EQ(svresult[i].epoch, i);
- ASSERT_EQ(svresult[i].centerOfMotion.id, 399);
+ ASSERT_EQ(svresult[i].centerOfMotion.Id, 399);
ASSERT_DOUBLE_EQ(svresult[i].centerOfMotion.centerOfMotionId, 10);
ASSERT_STREQ(svresult[i].inertialFrame, "J2000");
}
}
+
+TEST(API, GetBodyInformation)
+{
+ auto res = GetCelestialBodyInfoProxy(399);
+ ASSERT_EQ(399, res.Id);
+ ASSERT_EQ(10, res.centerOfMotionId);
+ ASSERT_STREQ("EARTH", res.Name);
+ ASSERT_STREQ("", res.Error);
+ ASSERT_EQ(13000, res.FrameId);
+ ASSERT_STREQ("ITRF93", res.FrameName);
+ ASSERT_DOUBLE_EQ(398600.43543609593, res.GM);
+ ASSERT_DOUBLE_EQ(6378.1365999999998, res.Radii.x);
+ ASSERT_DOUBLE_EQ(6378.1365999999998, res.Radii.y);
+ ASSERT_DOUBLE_EQ(6356.7519000000002, res.Radii.z);
+}
+
+TEST(API, GetBodyInformationInvalidId)
+{
+ auto res = GetCelestialBodyInfoProxy(398);
+ ASSERT_STREQ("Not found", res.Error);
+
+}
diff --git a/IO.SDK/API/DTO/CelestialBodyDTO.h b/IO.SDK/API/DTO/CelestialBodyDTO.h
index bf1b9ebe..d3e11382 100644
--- a/IO.SDK/API/DTO/CelestialBodyDTO.h
+++ b/IO.SDK/API/DTO/CelestialBodyDTO.h
@@ -8,8 +8,14 @@ namespace IO::SDK::API::DTO
{
struct CelestialBodyDTO
{
- int id{-1};
+ int Id{-1};
int centerOfMotionId{-1};
+ char *Name{};
+ IO::SDK::API::DTO::Vector3DDTO Radii{};
+ double GM{};
+ char *FrameName{};
+ int FrameId{};
+ char * Error{};
};
}
#endif //IOSDK_CELESTIALBODYDTO_H
diff --git a/IO.SDK/API/Proxy.cpp b/IO.SDK/API/Proxy.cpp
index 8644d414..bd4a9435 100644
--- a/IO.SDK/API/Proxy.cpp
+++ b/IO.SDK/API/Proxy.cpp
@@ -78,7 +78,7 @@ void PropagateProxy(IO::SDK::API::DTO::ScenarioDTO &scenarioDto)
//==========Build Spacecraft===============
std::map> maneuvers;
- auto cbody = celestialBodies[scenarioDto.Spacecraft.initialOrbitalParameter.centerOfMotion.id];
+ auto cbody = celestialBodies[scenarioDto.Spacecraft.initialOrbitalParameter.centerOfMotion.Id];
auto tdb = IO::SDK::Time::TDB(std::chrono::duration(scenarioDto.Spacecraft.initialOrbitalParameter.epoch));
auto frame = IO::SDK::Frames::InertialFrames(scenarioDto.Spacecraft.initialOrbitalParameter.inertialFrame);
std::unique_ptr initialOrbitalParameters = std::make_unique(
@@ -127,12 +127,12 @@ bool WriteEphemerisProxy(const char *filePath, int objectId, IO::SDK::API::DTO::
for (int i = 0; i < size; ++i)
{
- if (celestialBodies.find(sv[0].centerOfMotion.id) == celestialBodies.end())
+ if (celestialBodies.find(sv[0].centerOfMotion.Id) == celestialBodies.end())
{
- celestialBodies[sv[i].centerOfMotion.id] = std::make_shared(
- sv[i].centerOfMotion.id);
+ celestialBodies[sv[i].centerOfMotion.Id] = std::make_shared(
+ sv[i].centerOfMotion.Id);
}
- states.emplace_back(celestialBodies[sv[i].centerOfMotion.id], ToVector3D(sv[i].position),
+ states.emplace_back(celestialBodies[sv[i].centerOfMotion.Id], ToVector3D(sv[i].position),
ToVector3D(sv[i].velocity),
IO::SDK::Time::TDB(std::chrono::duration(sv[i].epoch)),
IO::SDK::Frames::Frames(sv[i].inertialFrame));
@@ -253,7 +253,7 @@ void ReadEphemerisProxy(IO::SDK::API::DTO::WindowDTO searchWindow, int observerI
spkezr_c(std::to_string(targetId).c_str(), epoch, frame, aberration, std::to_string(observerId).c_str(), vs,
<);
- stateVectors[idx].centerOfMotion.id = observerId;
+ stateVectors[idx].centerOfMotion.Id = observerId;
stateVectors[idx].centerOfMotion.centerOfMotionId = IO::SDK::Body::CelestialBody::FindCenterOfMotionId(
observerId);
@@ -547,46 +547,46 @@ BuildCelestialBodies(IO::SDK::API::DTO::ScenarioDTO &scenario)
// insert sun
for (auto &cb: scenario.CelestialBodies)
{
- if (cb.id == -1)
+ if (cb.Id == -1)
{
break;
}
- if (IO::SDK::Body::CelestialBody::IsSun(cb.id))
+ if (IO::SDK::Body::CelestialBody::IsSun(cb.Id))
{
- IO::SDK::Body::CelestialBody c(cb.id);
- celestialBodies[cb.id] = std::make_shared(cb.id);
+ IO::SDK::Body::CelestialBody c(cb.Id);
+ celestialBodies[cb.Id] = std::make_shared(cb.Id);
break;
}
}
//insert planets or asteroids
for (auto &cb: scenario.CelestialBodies)
{
- if (cb.id == -1)
+ if (cb.Id == -1)
{
break;
}
- if (IO::SDK::Body::CelestialBody::IsAsteroid(cb.id) || IO::SDK::Body::CelestialBody::IsPlanet(cb.id))
+ if (IO::SDK::Body::CelestialBody::IsAsteroid(cb.Id) || IO::SDK::Body::CelestialBody::IsPlanet(cb.Id))
{
- IO::SDK::Body::CelestialBody c(cb.id);
- celestialBodies.emplace(cb.id, std::make_shared(cb.id,
+ IO::SDK::Body::CelestialBody c(cb.Id);
+ celestialBodies.emplace(cb.Id, std::make_shared(cb.Id,
celestialBodies[IO::SDK::Body::CelestialBody::FindCenterOfMotionId(
- cb.id)]));
+ cb.Id)]));
}
}
//insert moons
for (auto &cb: scenario.CelestialBodies)
{
- if (cb.id == -1)
+ if (cb.Id == -1)
{
break;
}
- if (IO::SDK::Body::CelestialBody::IsMoon(cb.id))
+ if (IO::SDK::Body::CelestialBody::IsMoon(cb.Id))
{
- IO::SDK::Body::CelestialBody c(cb.id);
- celestialBodies.emplace(cb.id, std::make_shared(cb.id,
+ IO::SDK::Body::CelestialBody c(cb.Id);
+ celestialBodies.emplace(cb.Id, std::make_shared(cb.Id,
celestialBodies[IO::SDK::Body::CelestialBody::FindCenterOfMotionId(
- cb.id)]));
+ cb.Id)]));
}
}
@@ -821,7 +821,7 @@ void BuildApsidalManeuver(IO::SDK::API::DTO::ScenarioDTO &scenarioDto, IO::SDK::
strdup(engine))));
}
auto targetOrbit = std::make_shared(
- celestialBodies[maneuver.targetOrbit.centerOfMotion.id],
+ celestialBodies[maneuver.targetOrbit.centerOfMotion.Id],
ToVector3D(maneuver.targetOrbit.position),
ToVector3D(maneuver.targetOrbit.velocity),
IO::SDK::Time::TDB(std::chrono::duration(maneuver.targetOrbit.epoch)),
@@ -886,7 +886,7 @@ BuildOrbitalPlaneManeuver(IO::SDK::API::DTO::ScenarioDTO &scenarioDto, IO::SDK::
strdup(engine))));
}
auto targetOrbit = std::make_shared(
- celestialBodies[maneuver.targetOrbit.centerOfMotion.id],
+ celestialBodies[maneuver.targetOrbit.centerOfMotion.Id],
ToVector3D(maneuver.targetOrbit.position),
ToVector3D(maneuver.targetOrbit.velocity),
IO::SDK::Time::TDB(std::chrono::duration(maneuver.targetOrbit.epoch)),
@@ -921,7 +921,7 @@ void BuildPhasingManeuver(IO::SDK::API::DTO::ScenarioDTO &scenarioDto, IO::SDK::
strdup(engine))));
}
auto targetOrbit = std::make_shared(
- celestialBodies[maneuver.targetOrbit.centerOfMotion.id],
+ celestialBodies[maneuver.targetOrbit.centerOfMotion.Id],
ToVector3D(maneuver.targetOrbit.position),
ToVector3D(maneuver.targetOrbit.velocity),
IO::SDK::Time::TDB(std::chrono::duration(maneuver.targetOrbit.epoch)),
@@ -1057,4 +1057,77 @@ void BuildZenithAttitude(IO::SDK::API::DTO::ScenarioDTO &scenarioDto, IO::SDK::S
}
}
+IO::SDK::API::DTO::CelestialBodyDTO GetCelestialBodyInfoProxy(int bodyId)
+{
+ SpiceChar errorMode[7] = "RETURN";
+ erract_c("SET", 1024, errorMode);
+ IO::SDK::API::DTO::CelestialBodyDTO res;
+ res.Error = strdup("Not found");
+ SpiceChar name[32];
+ SpiceBoolean found{false};
+
+ bodc2n_c(bodyId, 32, name, &found);
+ if (found)
+ {
+ res.Error = strdup("");
+ res.Id = bodyId;
+ res.Name = strdup(name);
+ res.centerOfMotionId=IO::SDK::Body::CelestialBody::FindCenterOfMotionId(bodyId);
+
+ SpiceInt dim;
+ // Search body's radii
+ if (bodyId >= 10)
+ {
+
+ SpiceDouble radiiRes[3];
+ bodvcd_c(bodyId, "RADII", 3, &dim, radiiRes);
+ if (dim > 0)
+ {
+ res.Radii.x = radiiRes[0];
+ if (dim > 1)
+ {
+ res.Radii.y = radiiRes[1];
+ if (dim > 2)
+ {
+ res.Radii.z = radiiRes[2];
+ }
+ }
+ }
+ }
+
+ // Search Body's mass
+ SpiceDouble gmRes{};
+ dim = 0;
+ bodvcd_c(bodyId, "GM", 3, &dim, &gmRes);
+ if (dim == 1)
+ {
+ res.GM = gmRes;
+ }
+
+ // Search
+ SpiceBoolean frameFound{false};
+ SpiceChar frname[33]{};
+ SpiceInt frcode{};
+ cnmfrm_c(name, 33, &frcode, frname, &frameFound);
+ if (frameFound)
+ {
+ res.FrameName = strdup(frname);
+ res.FrameId = frcode;
+ }
+ }
+ if (failed_c())
+ {
+ res.Error = strdup(HandleError());
+ }
+ return res;
+}
+
+char *HandleError()
+{
+ static SpiceChar msg[ERRORMSGLENGTH];
+ getmsg_c("LONG", ERRORMSGLENGTH, msg);
+ reset_c();
+ return msg;
+}
+
#pragma endregion
\ No newline at end of file
diff --git a/IO.SDK/API/Proxy.h b/IO.SDK/API/Proxy.h
index 2ec7f3c3..3b199346 100644
--- a/IO.SDK/API/Proxy.h
+++ b/IO.SDK/API/Proxy.h
@@ -211,6 +211,8 @@ MODULE_API double ConvertTDBToUTCProxy(double tdb);
* @return
*/
MODULE_API double ConvertUTCToTDBProxy(double utc);
+
+MODULE_API IO::SDK::API::DTO::CelestialBodyDTO GetCelestialBodyInfoProxy(int bodyId);
#ifdef __cplusplus
}
#endif
@@ -218,7 +220,8 @@ MODULE_API double ConvertUTCToTDBProxy(double utc);
#ifndef PROXY_H
#define PROXY_H
-
+#define ERRORMSGLENGTH 1024
+char *HandleError();
std::map>
BuildCelestialBodies(IO::SDK::API::DTO::ScenarioDTO &scenario);
diff --git a/IO.SDK/Body/CelestialBody.cpp b/IO.SDK/Body/CelestialBody.cpp
index 02814040..46abfdbf 100644
--- a/IO.SDK/Body/CelestialBody.cpp
+++ b/IO.SDK/Body/CelestialBody.cpp
@@ -25,7 +25,8 @@ IO::SDK::Body::CelestialBody::CelestialBody(const int id, std::shared_ptr(m_sphereOfInfluence) = IO::SDK::Body::SphereOfInfluence(m_orbitalParametersAtEpoch->GetSemiMajorAxis(),
m_orbitalParametersAtEpoch->GetCenterOfMotion()->GetMu(), m_mu);
const_cast(m_hillSphere) = IO::SDK::Body::HillSphere(m_orbitalParametersAtEpoch->GetSemiMajorAxis(), m_orbitalParametersAtEpoch->GetEccentricity(),
@@ -38,7 +39,8 @@ IO::SDK::Body::CelestialBody::CelestialBody(const int id, std::shared_ptr(m_hillSphere) = std::numeric_limits::infinity();
}
-double IO::SDK::Body::CelestialBody::GetSphereOfInfluence() const {
+double IO::SDK::Body::CelestialBody::GetSphereOfInfluence() const
+{
return m_sphereOfInfluence;
}
-double IO::SDK::Body::CelestialBody::GetHillSphere() const {
+double IO::SDK::Body::CelestialBody::GetHillSphere() const
+{
return m_hillSphere;
}
-double IO::SDK::Body::SphereOfInfluence(double a, double majorMass, double minorMass) {
+double IO::SDK::Body::SphereOfInfluence(double a, double majorMass, double minorMass)
+{
return a * std::pow((minorMass / majorMass), 2.0 / 5.0);
}
-double IO::SDK::Body::HillSphere(double a, double e, double majorMass, double minorMass) {
+double IO::SDK::Body::HillSphere(double a, double e, double majorMass, double minorMass)
+{
return a * (1 - e) * std::cbrt(minorMass / (3 * majorMass));
}
-double IO::SDK::Body::CelestialBody::ReadGM(int id) {
+double IO::SDK::Body::CelestialBody::ReadGM(int id)
+{
SpiceInt dim;
SpiceDouble res[1];
bodvcd_c(id, "GM", 1, &dim, res);
return res[0] * 1E+09;
}
-IO::SDK::OrbitalParameters::StateVector IO::SDK::Body::CelestialBody::GetRelativeStatevector(const IO::SDK::OrbitalParameters::StateVector &targetStateVector) const {
- if (*targetStateVector.GetCenterOfMotion() == *this) {
+IO::SDK::OrbitalParameters::StateVector IO::SDK::Body::CelestialBody::GetRelativeStatevector(const IO::SDK::OrbitalParameters::StateVector &targetStateVector) const
+{
+ if (*targetStateVector.GetCenterOfMotion() == *this)
+ {
return targetStateVector;
}
@@ -82,21 +91,25 @@ IO::SDK::OrbitalParameters::StateVector IO::SDK::Body::CelestialBody::GetRelativ
targetStateVector.GetVelocity() - sv.GetVelocity(), targetStateVector.GetEpoch(), targetStateVector.GetFrame()};
}
-bool IO::SDK::Body::CelestialBody::IsInSphereOfInfluence(const IO::SDK::OrbitalParameters::StateVector &targetStateVector) const {
+bool IO::SDK::Body::CelestialBody::IsInSphereOfInfluence(const IO::SDK::OrbitalParameters::StateVector &targetStateVector) const
+{
auto sv = GetRelativeStatevector(targetStateVector);
return sv.GetPosition().Magnitude() <= m_sphereOfInfluence;
}
-bool IO::SDK::Body::CelestialBody::IsInHillSphere(const IO::SDK::OrbitalParameters::StateVector &targetStateVector) const {
+bool IO::SDK::Body::CelestialBody::IsInHillSphere(const IO::SDK::OrbitalParameters::StateVector &targetStateVector) const
+{
auto sv = GetRelativeStatevector(targetStateVector);
return sv.GetPosition().Magnitude() <= m_hillSphere;
}
-const IO::SDK::Frames::BodyFixedFrames &IO::SDK::Body::CelestialBody::GetBodyFixedFrame() const {
+const IO::SDK::Frames::BodyFixedFrames &IO::SDK::Body::CelestialBody::GetBodyFixedFrame() const
+{
return m_BodyFixedFrame;
}
-IO::SDK::Math::Vector3D IO::SDK::Body::CelestialBody::GetRadius() const {
+IO::SDK::Math::Vector3D IO::SDK::Body::CelestialBody::GetRadius() const
+{
SpiceInt dim;
SpiceDouble res[3];
bodvcd_c(m_id, "RADII", 3, &dim, res);
@@ -104,44 +117,63 @@ IO::SDK::Math::Vector3D IO::SDK::Body::CelestialBody::GetRadius() const {
return IO::SDK::Math::Vector3D{res[0], res[1], res[2]};
}
-double IO::SDK::Body::CelestialBody::GetFlattening() const {
+double IO::SDK::Body::CelestialBody::GetFlattening() const
+{
auto radius = GetRadius();
return (radius.GetX() - radius.GetZ()) / radius.GetX();
}
-double IO::SDK::Body::CelestialBody::GetAngularVelocity(const IO::SDK::Time::TDB &epoch) const {
+double IO::SDK::Body::CelestialBody::GetAngularVelocity(const IO::SDK::Time::TDB &epoch) const
+{
auto initialVector = m_BodyFixedFrame.TransformVector(IO::SDK::Frames::InertialFrames::GetICRF(), IO::SDK::Math::Vector3D::VectorX, epoch);
auto finalVector = m_BodyFixedFrame.TransformVector(IO::SDK::Frames::InertialFrames::GetICRF(), IO::SDK::Math::Vector3D::VectorX, epoch + IO::SDK::Time::TimeSpan(1000.0s));
return std::abs(finalVector.GetAngle(initialVector)) / 1000.0;
}
-IO::SDK::Time::TimeSpan IO::SDK::Body::CelestialBody::GetSideralRotationPeriod(const IO::SDK::Time::TDB &epoch) const {
+IO::SDK::Time::TimeSpan IO::SDK::Body::CelestialBody::GetSideralRotationPeriod(const IO::SDK::Time::TDB &epoch) const
+{
return IO::SDK::Time::TimeSpan{std::chrono::duration(IO::SDK::Constants::_2PI / GetAngularVelocity(epoch))};
}
-bool IO::SDK::Body::CelestialBody::IsSun(int celestialBodyId) {
+bool IO::SDK::Body::CelestialBody::IsBarycenter(int celestialBodyId)
+{
+ return celestialBodyId >= 0 && celestialBodyId < 10;
+}
+
+bool IO::SDK::Body::CelestialBody::IsSun(int celestialBodyId)
+{
return celestialBodyId == 10;
}
-bool IO::SDK::Body::CelestialBody::IsPlanet(int celestialBodyId) {
+bool IO::SDK::Body::CelestialBody::IsPlanet(int celestialBodyId)
+{
return celestialBodyId > 100 && celestialBodyId < 1000 && (celestialBodyId % 100) == 99;
}
-bool IO::SDK::Body::CelestialBody::IsAsteroid(int celestialBodyId) {
+bool IO::SDK::Body::CelestialBody::IsAsteroid(int celestialBodyId)
+{
return celestialBodyId > 1000;
}
-bool IO::SDK::Body::CelestialBody::IsMoon(int celestialBodyId) {
+bool IO::SDK::Body::CelestialBody::IsMoon(int celestialBodyId)
+{
return celestialBodyId > 100 && celestialBodyId < 1000 && (celestialBodyId % 100) != 99;
}
-int IO::SDK::Body::CelestialBody::FindCenterOfMotionId(int celestialBodyNaifId) {
+int IO::SDK::Body::CelestialBody::FindCenterOfMotionId(int celestialBodyNaifId)
+{
+ if(IO::SDK::Body::CelestialBody::IsBarycenter(celestialBodyNaifId))
+ {
+ return 0;
+ }
if (IO::SDK::Body::CelestialBody::IsSun(celestialBodyNaifId) || IO::SDK::Body::CelestialBody::IsPlanet(celestialBodyNaifId) ||
- IO::SDK::Body::CelestialBody::IsAsteroid(celestialBodyNaifId)) {
+ IO::SDK::Body::CelestialBody::IsAsteroid(celestialBodyNaifId))
+ {
return 10;
}
- if (IO::SDK::Body::CelestialBody::IsMoon(celestialBodyNaifId)) {
+ if (IO::SDK::Body::CelestialBody::IsMoon(celestialBodyNaifId))
+ {
return celestialBodyNaifId - (celestialBodyNaifId % 100) + 99;
}
diff --git a/IO.SDK/Body/CelestialBody.h b/IO.SDK/Body/CelestialBody.h
index ccd1c2c4..a0108d33 100644
--- a/IO.SDK/Body/CelestialBody.h
+++ b/IO.SDK/Body/CelestialBody.h
@@ -104,6 +104,7 @@ namespace IO::SDK::Body
static bool IsAsteroid(int celestialBodyId);
static bool IsMoon(int celestialBodyId);
static int FindCenterOfMotionId(int celestialBodyNaifId);
+ static bool IsBarycenter(int celestialBodyId);
};
/**