diff --git a/.gitignore b/.gitignore index 53cfcee2d..e94cb6340 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,7 @@ Sound/XRSound/**/Release-with-OrbiterRelease/ [Bb]uild/ Extern/irrKlang + +Doc/**/*.log +Doc/**/*.pdf +Doc/**/*.gz diff --git a/CMakeLists.txt b/CMakeLists.txt index 614f170ad..59ebd3142 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -318,54 +318,6 @@ if (ORBITER_SANITIZER AND MSVC) enable_sanitizer(${ORBITER_SANITIZER}) endif() -# For a given argument string template (odt_to_pdf_arglist) and source file name (infile) -# return the explicit argument string (arglist), full source path (source_path) and full target path (target_path) -# to invoke the ODT to PDF conversion tool - -function(odt_to_pdf_arglist infile arglist source_path target_path) - string(REPLACE - "" "${CMAKE_CURRENT_BINARY_DIR}" - tmp1_string - ${ODT_TO_PDF_FLAGS} - ) - string(REPLACE - "" "${CMAKE_CURRENT_SOURCE_DIR}/${infile}.odt" - tmp2_string - ${tmp1_string} - ) - separate_arguments(odt_arg - WINDOWS_COMMAND - ${tmp2_string} - ) - set(${arglist} ${odt_arg} PARENT_SCOPE) - set(${source_path} "${CMAKE_CURRENT_SOURCE_DIR}/${infile}.odt" PARENT_SCOPE) - set(${target_path} "${CMAKE_CURRENT_BINARY_DIR}/${infile}.pdf" PARENT_SCOPE) -endfunction() - - -# For a given argument string template (odt_to_pdf_arglist) and source file name (infile) -# return the explicit argument string (arglist), full source path (source_path) and full target path (target_path) -# to invoke the DOC to PDF conversion tool - -function(doc_to_pdf_arglist infile arglist source_path target_path) - string(REPLACE - "" "${CMAKE_CURRENT_BINARY_DIR}" - tmp1_string - ${DOC_TO_PDF_FLAGS} - ) - string(REPLACE - "" "${CMAKE_CURRENT_SOURCE_DIR}/${infile}.doc" - tmp2_string - ${tmp1_string} - ) - separate_arguments(doc_arg - WINDOWS_COMMAND - ${tmp2_string} - ) - set(${arglist} ${doc_arg} PARENT_SCOPE) - set(${source_path} "${CMAKE_CURRENT_SOURCE_DIR}/${infile}.doc" PARENT_SCOPE) - set(${target_path} "${CMAKE_CURRENT_BINARY_DIR}/${infile}.pdf" PARENT_SCOPE) -endfunction() # Given a source directory (srcdir) and a target root directory (tgtroot), # generate a list of all files found in srcdir (srclist) and a list of output files diff --git a/Config/transx.cfg b/Config/transx.cfg deleted file mode 100644 index e69de29bb..000000000 diff --git a/Doc/CMakeLists.txt b/Doc/CMakeLists.txt index f3b6fc45d..237887e0a 100644 --- a/Doc/CMakeLists.txt +++ b/Doc/CMakeLists.txt @@ -1,91 +1,3 @@ -# Orbiter.pdf ------------------------------------------------------------ - -odt_to_pdf_arglist("Orbiter" arglist src out) -add_custom_command( - OUTPUT ${out} - COMMAND ${ODT_TO_PDF_COMPILER} ${arglist} - DEPENDS ${src} - JOB_POOL soffice -) -add_custom_target(OrbiterDoc - DEPENDS ${out} -) -add_dependencies(${OrbiterTgt} - OrbiterDoc -) -set_target_properties(OrbiterDoc - PROPERTIES - FOLDER Doc -) -install(FILES ${out} - DESTINATION ${ORBITER_INSTALL_DOC_DIR} -) - -# OrbiterConfig.pdf ------------------------------------------------------ - -odt_to_pdf_arglist("OrbiterConfig" arglist src out) -add_custom_command( - OUTPUT ${out} - COMMAND ${ODT_TO_PDF_COMPILER} ${arglist} - DEPENDS ${src} - JOB_POOL soffice -) -add_custom_target(OrbiterConfigDoc - DEPENDS ${out} -) -add_dependencies(${OrbiterTgt} - OrbiterConfigDoc -) -set_target_properties(OrbiterConfigDoc - PROPERTIES - FOLDER Doc -) -install(FILES ${out} - DESTINATION ${ORBITER_INSTALL_DOC_DIR} -) - -# PlanetTextures.pdf ----------------------------------------------------- - -odt_to_pdf_arglist("PlanetTextures" arglist src out) -add_custom_command( - OUTPUT ${out} - COMMAND ${ODT_TO_PDF_COMPILER} ${arglist} - DEPENDS ${src} - JOB_POOL soffice -) -add_custom_target(PlanetTexturesDoc - DEPENDS ${out} -) -add_dependencies(${OrbiterTgt} - PlanetTexturesDoc -) -set_target_properties(PlanetTexturesDoc - PROPERTIES - FOLDER Doc -) -install(FILES ${out} - DESTINATION ${ORBITER_INSTALL_DOC_DIR} -) - -# Credit.pdf ------------------------------------------------------------- - -doc_to_pdf_arglist("Credit" arglist src out) -add_custom_command( - OUTPUT ${out} - COMMAND ${DOC_TO_PDF_COMPILER} ${arglist} - DEPENDS ${src} - JOB_POOL soffice -) -add_custom_target(OrbiterCreditDoc - DEPENDS ${out} -) -add_dependencies(OrbiterDoc - OrbiterCreditDoc -) -install(FILES ${out} - DESTINATION ${ORBITER_INSTALL_DOC_DIR} -) - -# Technotes -------------------------------------------------------------- - -add_subdirectory(Technotes) +add_subdirectory("Orbiter Developer Manual") +add_subdirectory("Orbiter Technical Reference") +add_subdirectory("Orbiter User Manual") diff --git a/Doc/Credit.doc b/Doc/Credit.doc deleted file mode 100644 index 1c277edcf..000000000 Binary files a/Doc/Credit.doc and /dev/null differ diff --git a/Doc/D3D9Client.pdf b/Doc/D3D9Client.pdf deleted file mode 100644 index c734a0948..000000000 Binary files a/Doc/D3D9Client.pdf and /dev/null differ diff --git a/Doc/Orbiter Developer Manual/CMakeLists.txt b/Doc/Orbiter Developer Manual/CMakeLists.txt new file mode 100644 index 000000000..f5b6f2990 --- /dev/null +++ b/Doc/Orbiter Developer Manual/CMakeLists.txt @@ -0,0 +1,29 @@ +set(name "Orbiter Developer Manual") + +set(src_path ${CMAKE_CURRENT_SOURCE_DIR}/${name}.tex) +set(out_path ${CMAKE_CURRENT_BINARY_DIR}/${name}.pdf) +set(pdflatex_cmd ${PDFLATEX_COMPILER} --synctex=1 -output-directory=${CMAKE_CURRENT_BINARY_DIR} ${src_path}) +set(bibtex_cmd ${BIBTEX_COMPILER} ${CMAKE_CURRENT_BINARY_DIR}/${name}) + +add_custom_command( + OUTPUT ${out_path} + COMMAND ${pdflatex_cmd} + COMMAND ${bibtex_cmd} + COMMAND ${pdflatex_cmd} + DEPENDS ${src_path} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + JOB_POOL latex +) +add_custom_target(OrbiterDeveloperManual + DEPENDS ${out_path} +) +add_dependencies(${OrbiterTgt} + OrbiterDeveloperManual +) +set_target_properties(OrbiterDeveloperManual + PROPERTIES + FOLDER Doc +) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}.pdf + DESTINATION ${ORBITER_INSTALL_ROOT_DIR}/Doc +) diff --git a/Doc/Orbiter Developer Manual/CONFIG.tex b/Doc/Orbiter Developer Manual/CONFIG.tex new file mode 100644 index 000000000..7f4adb2fe --- /dev/null +++ b/Doc/Orbiter Developer Manual/CONFIG.tex @@ -0,0 +1,1117 @@ +\documentclass[Orbiter Developer Manual.tex]{subfiles} +\begin{document} + +\section{Orbiter configuration files} +Configuration files allow the customisation of various aspects of the simulator. Configuration files have file extension .cfg. They are ASCII text files which can be edited with any text editor capable of writing plain text files (e.g. notepad).\\ +Each line contains an item and its value, using the format + +\begin{lstlisting}[language=OSFS] + = +\end{lstlisting} + +\noindent +A semicolon starts a comment, continuing to the end of the line.\\ +All configuration files, except the main configuration file (see "Main configuration file" in Orbiter User Manual), are located in a subdirectory tree defined by the ConfigDir entry in the main file, usually ".\textbackslash Config". + +\subsection{Planetary systems} +\label{ssec:planetery_sys} +Planetary systems contain stars, planets and moons. Each planetary system requires at least one star. Stars, planets and moons are defined in the planetary system's configuration file\\ +\indent .\textbackslash Config\textbackslash <\textit{Solsys-name}>.cfg\\ +Orbiter can support multiple planetary systems, but only one per scenario. The planetary system to be used by a scenario is referenced in the scenario file (see section \ref{sec:scn_files}). + +\subsubsection*{General parameters} + +%\begin{table}[H] + %\centering + \begin{longtable}{ |p{0.25\textwidth}|p{0.09\textwidth}|p{0.58\textwidth}| } + \hline\rule{0pt}{2ex} + \textbf{Item} & \textbf{Type} & \textbf{Description}\\ + \hline\rule{0pt}{2ex} + Name & String & A name for the planetary system\\ + \hline\rule{0pt}{2ex} + MarkerPath & String & Directory path containing celestial marker lists for the planetary system (see section \ref{ssec:custom_markers}). Default: .\textbackslash Config\textbackslash <\textit{Solsys-name}>\textbackslash Marker\textbackslash \\ + \hline + \end{longtable} +%\end{table} + +\subsubsection*{Object list} +The object list defines the celestial bodies populating the planetary system and their hierarchy.\\ +\\ +\textbf{Star entries:} + +\begin{lstlisting}[language=OSFS] +Star = +\end{lstlisting} + +\noindent +where <\textit{i}> is an index running from 1 upward. (Note: planetary systems with more than one central star are not currently supported).\\ +\\ +\textbf{Planet entries:} + +\begin{lstlisting}[language=OSFS] +Planet = +\end{lstlisting} + +\noindent +where <\textit{i}> is an index running from 1 upward.\\ +\\ +\textbf{Moon entries:} + +\begin{lstlisting}[language=OSFS] +:Moon = +\end{lstlisting} + +\noindent +where <\textit{Planet}> is the name of a planet defined before, and <\textit{i}> is an index enumerating the moons of this planet, running from 1 upward.\\ +\\ +\textbf{Example:} + +\begin{lstlisting}[language=OSFS] +Star1 = Sun +Planet1 = Mercury +Planet2 = Venus +Planet3 = Earth +Earth:Moon1 = Moon +Planet4 = Mars +Mars:Moon1 = Phobos +Mars:Moon2 = Deimos +\end{lstlisting} + + +\subsection{Planets} +\label{ssec:planets} +Adding a new celestial body (planet or moon) to a planetary system requires the following steps: + +\begin{itemize} +\item Add an entry for the body in the planetary system configuration file (see section \ref{ssec:planetery_sys}). +\item Create a configuration file for the planet, defining its orbital, physical and visual parameters, located in .\textbackslash Config\textbackslash <\textit{Planet-name}>.cfg, for example, Config\textbackslash Earth.cfg. The configuration entries are described below. +\item Create the required surface texture maps, and optionally elevation, night light, water mask, cloud layer and feature label maps. See section \ref{ssec:planetery_tex} for details. +\item Optionally, create configuration files for surface bases in .\textbackslash Config\textbackslash <\textit{Planet-name}>\textbackslash Base and reference them in the planet configuration file. See section \ref{ssec:surface_bases} for details on surface base definitions. +\item Optionally, compile a DLL module for the planet for ephemeris calculations and atmospheric parameter computation. See the Orbiter sources for examples, e.g., the Src\textbackslash Celbody\textbackslash Vsop87 project. +\item Optionally, create polyline definitions for coastlines (.\textbackslash Config\textbackslash <\textit{Planet-name}>\textbackslash Data\textbackslash coast.vec) and/or topography (.\textbackslash Config\textbackslash <\textit{Planet-name}>\textbackslash Data\textbackslash contour.vec) to be used in scalable map displays. See .\textbackslash Config\textbackslash Earth\textbackslash Data\textbackslash coast.vec for an example. +\end{itemize} + +\noindent +The components of the planet configuration file are listed below. An example for a configuration file can be found in .\textbackslash Config\textbackslash Earth.cfg. + +\subsubsection*{General parameters} +%\begin{table}[H] + %\centering + \begin{longtable}{ |p{0.25\textwidth}|p{0.09\textwidth}|p{0.58\textwidth}| } + \hline\rule{0pt}{2ex} + \textbf{Item} & \textbf{Type} & \textbf{Description}\\ + \hline\rule{0pt}{2ex} + Name & String & Planet name\\ + \hline\rule{0pt}{2ex} + Module & String & Name of a dynamic link library performing calculations for the planet. Default: none\\ + \hline\rule{0pt}{2ex} + ErrorLimit & Float & Max. rel. error for position/velocity calculations (only used if the module supports precision adjustment)\\ + \hline\rule{0pt}{2ex} + EllipticOrbit & Bool & If TRUE, use analytic 2-body solution for planet position/velocity calculation, otherwise update dynamically (ignored if module supports position/velocity calculation)\\ + \hline\rule{0pt}{2ex} + HasElements & Bool & If TRUE, the initial position/velocity is calculated from the provided set of orbital elements, otherwise from an explicit position/velocity pair (ignored if the module supports position/velocity calculation)\\ + \hline\rule{0pt}{2ex} + InitPos & Vec3 & TODO (legacy?)\\ + \hline\rule{0pt}{2ex} + InitVel & Vec3 & TODO (legacy?)\\ + \hline + \end{longtable} +%\end{table} + +\noindent +Notes:\\ +If the module calculates the planet position and velocity from a numerical series expansion solution, the value of ErrorLimit affects the number of terms used for the calculation. A lower value increases the number of terms required to achieve that limit, and thus increases calculation time. The valid range for ErrorLimit depends on the module, but is typically 10$^{-3}$ $\leq$ ErrorLimit $\leq$ 10$^{-8}$. + + +\subsubsection*{Orbital parameters} +Ignored if a module is active that supports position/velocity calculation or if HasElements = FALSE. + +%\begin{table}[H] + %\centering + \begin{longtable}{ |p{0.25\textwidth}|p{0.09\textwidth}|p{0.58\textwidth}| } + \hline\rule{0pt}{2ex} + \textbf{Item} & \textbf{Type} & \textbf{Description}\\ + \hline\rule{0pt}{2ex} + Epoch & Float & Orbital element reference epoch (e.g. 2000)\\ + \hline\rule{0pt}{2ex} + ElReference & Flag & Orbit reference frame (ParentEquator or Ecliptic). Default: Ecliptic\\ + \hline\rule{0pt}{2ex} + SemiMajorAxis & Float & Orbit semi-major axis \textit{a} [m]\\ + \hline\rule{0pt}{2ex} + Eccentricity & Float & Orbit eccentricity \textit{e}.\\ + \hline\rule{0pt}{2ex} + Inclination & Float & Orbit inclination against reference frame \textit{i} [rad]\\ + \hline\rule{0pt}{2ex} + LongAscNode & Float & Longitude of ascending node $\Omega$ [rad]\\ + \hline\rule{0pt}{2ex} + LongPerihelion & Float & Longitude of periapsis $\overline{\omega}$ [rad]\\ + \hline\rule{0pt}{2ex} + MeanLongitude & Float & Mean longitude \textit{l} at epoch [rad]\\ + \hline + \end{longtable} +%\end{table} + + +\subsubsection*{Physical parameters} +%\begin{table}[H] + %\centering + \begin{longtable}{ |p{0.25\textwidth}|p{0.09\textwidth}|p{0.58\textwidth}| } + \hline\rule{0pt}{2ex} + \textbf{Item} & \textbf{Type} & \textbf{Description}\\ + \hline\rule{0pt}{2ex} + Mass & Float & Planet mass [kg]\\ + \hline\rule{0pt}{2ex} + Size & Float & Mean planet radius [m]\\ + \hline\rule{0pt}{2ex} + JCoeff & List & Coefficients Jn of the harmonic expansion of planet ellipsoid shape, starting with J2\\ + \hline + \end{longtable} +%\end{table} + + +\subsubsection*{Rotation and precession elements} +See also "Planetary axis precession" in Orbiter Technical Reference. + +%\begin{table}[H] + %\centering + \begin{longtable}{ |p{0.25\textwidth}|p{0.09\textwidth}|p{0.58\textwidth}| } + \hline\rule{0pt}{2ex} + \textbf{Item} & \textbf{Type} & \textbf{Description}\\ + \hline\rule{0pt}{2ex} + SidRotPeriod & Float & Sidereal rotation period [s]. Default: infinite\\ + \hline\rule{0pt}{2ex} + SidRotOffset & Float & Rotation at epoch [rad]. Default: 0\\ + \hline\rule{0pt}{2ex} + Obliquity & Float & Obliquity of axis: angle between planet axis and precession reference axis [rad]. Default: 0\\ + \hline\rule{0pt}{2ex} + LAN & Float & Longitude of ascending node of equatorial plane [rad]. Default: 0\\ + \hline\rule{0pt}{2ex} + LAN\_MJD & Float & Reference data for LAN [MJD]. Default: 51544.5\\ + \hline\rule{0pt}{2ex} + PrecessionPeriod & Float & Period of precession of axis [days]. Default: infinite\\ + \hline\rule{0pt}{2ex} + PrecessionObliquity & Float & Obliquity of precession reference axis with respect to ecliptic north pole at J2000 [rad]. Default: 0\\ + \hline\rule{0pt}{2ex} + PrecessionLAN & Float & Longitude of ascending node of precession reference plane [rad]. Default: 0\\ + \hline + \end{longtable} +%\end{table} + + +\subsubsection*{Gravity model parameters} +Gravity model only used it all parameters are present. See also "Nonspherical gravitational field perturbations" in Orbiter Technical Reference. + +%\begin{table}[H] + %\centering + \begin{longtable}{ |p{0.25\textwidth}|p{0.09\textwidth}|p{0.58\textwidth}| } + \hline\rule{0pt}{2ex} + \textbf{Item} & \textbf{Type} & \textbf{Description}\\ + \hline\rule{0pt}{2ex} + GravModelPath & String & Gravity model file name (with extension), relative to ".\textbackslash GravityModels" folder.\\ + \hline\rule{0pt}{2ex} + GravCoeffCutoff & Int & Gravity model coefficient cutoff.\\ + \hline + \end{longtable} +%\end{table} + + +\subsubsection*{Terrain parameters} +%\begin{table}[H] + %\centering + \begin{longtable}{ |p{0.25\textwidth}|p{0.09\textwidth}|p{0.58\textwidth}| } + \hline\rule{0pt}{2ex} + \textbf{Item} & \textbf{Type} & \textbf{Description}\\ + \hline\rule{0pt}{2ex} + TileFormat & Int & 1 = legacy, 2 = 2016 format. Default: 1\\ + \hline\rule{0pt}{2ex} + MaxPatchResolution & Int & Max. resolution level for surface texture maps (1-21)\\ + \hline\rule{0pt}{2ex} + MaxElevation & Float & Max. surface elevation rel. to planet mean radius [m].\\ + \hline\rule{0pt}{2ex} + MinElevation & Float & Min. surface elevation rel. to planet mean radius [m]. Used to adjust lower edge of rendered horizon.\\ + \hline\rule{0pt}{2ex} + ElevationResolution & Float & Target resolution of elevation data [m].\\ + \hline\rule{0pt}{2ex} + HorizonExcess & Float & Specifies how far beyond the sphere-based horizon to render tiles (to avoid mountains to disappear) [planet radius]. Default: 0.002\\ + \hline + \end{longtable} +%\end{table} + + +\subsubsection*{Atmospheric parameters} +Only required if the planet defines an atmosphere. + +%\begin{table}[H] + %\centering + \begin{longtable}{ |p{0.25\textwidth}|p{0.09\textwidth}|p{0.58\textwidth}| } + \hline\rule{0pt}{2ex} + \textbf{Item} & \textbf{Type} & \textbf{Description}\\ + \hline\rule{0pt}{2ex} + AtmPressure0 & Float & (Mean) atmospheric pressure at zero altitude (reference radius) [Pa]\\ + \hline\rule{0pt}{2ex} + AtmDensity0 & Float & (Mean) atmospheric density at zero altitude [kg/m$^{3}$]\\ + \hline\rule{0pt}{2ex} + AtmGasConstant & Float & Specific gas constant [J K$^{-1}$ kg$^{-1}$]. Default: 286.91 (Earth value)\\ + \hline\rule{0pt}{2ex} + AtmGamma & Float & Ratio of specific heats $c_{p}$/$c_{v}$. Default: 1.4 (Earth value)\\ + \hline\rule{0pt}{2ex} + AtmColor0 & Vec3 & RGB triplet for atmospheric colour at ground level (0-1 each)\\ + \hline\rule{0pt}{2ex} + AtmAltLimit & Float & Altitude limit beyond which atmospheric effects can be ignored [m]\\ + \hline\rule{0pt}{2ex} + AtmHazeExtent & Float & Width parameter for extent of horizon haze rendering. Range: 0 (thinnest) to 1 (widest). Default: 0.1\\ + \hline\rule{0pt}{2ex} + AtmHazeShift & Float & Shift the reference altitude of the haze base line (in units of planet radius). Can be used to adjust haze altitude to a cloud layer. Default: 0 (align with surface horizon). Shift is not applied if camera is below cloud layer.\\ + \hline\rule{0pt}{2ex} + AtmHazeDensity & Float & Modify the density at which the horizon haze is rendered (basic density is calculated from atmospheric density). Default: 1.0\\ + \hline\rule{0pt}{2ex} + AtmHazeColor & Vec3 & RGB triplet for horizon haze colour (0-1 each). Default: use AtmColor0 values.\\ + \hline\rule{0pt}{2ex} + AtmFogColor & Vec3 & RGB triplet for distance fog colour (0-1 each).\\ + \hline\rule{0pt}{2ex} + AtmFogParam & Vec3 & Value 1: fog density at surface level\newline + Value 2: fog density at reference altitude\newline + Value 3: reference altitude [m]\\ + \hline\rule{0pt}{2ex} + AtmTintColor & Vec3 & RGB triplet for additive colour component (0-1 each) added to surface rendering at high altitude\\ + \hline\rule{0pt}{2ex} + AtmAttenuationAlt & Float & Altitude limit for calculation of light attenuation on vessels [m].\\ + \hline\rule{0pt}{2ex} + AtmHorizonAlt & Float & Altitude scale for horizon haze rendering [m]. Default: 0.01 of planet radius.\\ + \hline\rule{0pt}{2ex} + ShadowDepth & Float & Depth ("blackness") of object shadows (0-1, where 0 = black, 1 = no shadows). Default: exp(-$\rho_{0}$/2), where $\rho_{0}$ is atmospheric density at the surface. This option is only used when stencil buffering is enabled, otherwise shadows are always black.\\ + \hline + \end{longtable} +%\end{table} + + +\subsubsection*{Cloud parameters} +Only required if the planet defines a cloud layer. + +%\begin{table}[H] + %\centering + \begin{longtable}{ |p{0.25\textwidth}|p{0.09\textwidth}|p{0.58\textwidth}| } + \hline\rule{0pt}{2ex} + \textbf{Item} & \textbf{Type} & \textbf{Description}\\ + \hline\rule{0pt}{2ex} + CloudFormat & Int & 1 = legacy, 2 = 2016 format. Default: 1\\ + \hline\rule{0pt}{2ex} + MinCloudResolution & Int & Min. resolution at which clouds are rendered as a separate layer (1-8)\\ + \hline\rule{0pt}{2ex} + MaxCloudResolution & Int & Max. cloud resolution level (MinCloudResolution - 19)\\ + \hline\rule{0pt}{2ex} + CloudAlt & Float & Altitude of cloud layer [m]\\ + \hline\rule{0pt}{2ex} + CloudShadowDepth & Float & Depth ("blackness") of cloud shadows on the ground (0-1, where 0 = black, 1 = don't render shadows). Default: 1\\ + \hline\rule{0pt}{2ex} + CloudRotPeriod & Float & Rotation period of cloud layer against surface [s]. Default: 0 (static cloud layer)\\ + \hline\rule{0pt}{2ex} + CloudMicrotextureAlt & Float Float & Altitude range for cloud microtexturing.\newline + Value 1: altitude at which full microtexturing is applied.\newline + Value 2: altitude at which microtexture starts to kick in\newline + Value 1 $\geq$ 0 and Value 2 > Value 1 is required. Default: no microtexture\\ + \hline\rule{0pt}{2ex} + BrightenClouds & Bool & Use a brighter cloud rendering algorithm\\ + \hline + \end{longtable} +%\end{table} + + +\subsubsection*{Visualisation parameters} +%\begin{table}[H] + %\centering + \begin{longtable}{ |p{0.25\textwidth}|p{0.09\textwidth}|p{0.58\textwidth}| } + \hline\rule{0pt}{2ex} + \textbf{Item} & \textbf{Type} & \textbf{Description}\\ + \hline\rule{0pt}{2ex} + SpecularRipple & Bool & If TRUE, and if "Specular ripples" option is enabled in the Launchpad dialog, specularly reflecting surfaces use a "water ripple" microtexture. Default: FALSE\\ + \hline\rule{0pt}{2ex} + AlbedoRGB & Vec3 & Albedo for dot representation (when far away). Default: (1, 1, 1)\\ + \hline\rule{0pt}{2ex} + BBExcess & Float & Specifies how much to inflate the bounding box (1 = double each side)\\ + \hline + \end{longtable} +%\end{table} + + +\subsubsection*{Planetary ring parameters} +Only required if the planet defines a ring system. All parameters needed. + +%\begin{table}[H] + %\centering + \begin{longtable}{ |p{0.25\textwidth}|p{0.09\textwidth}|p{0.58\textwidth}| } + \hline\rule{0pt}{2ex} + \textbf{Item} & \textbf{Type} & \textbf{Description}\\ + \hline\rule{0pt}{2ex} + RingMaxRadius & Float & Max. ring diamenter [planet radius].\\ + \hline\rule{0pt}{2ex} + RingMinRadius & Float & Min. ring diamenter [planet radius].\\ + \hline + \end{longtable} +%\end{table} + + +\subsubsection*{Surface marker parameters} +%\begin{table}[H] + %\centering + \begin{longtable}{ |p{0.25\textwidth}|p{0.09\textwidth}|p{0.58\textwidth}| } + \hline\rule{0pt}{2ex} + \textbf{Item} & \textbf{Type} & \textbf{Description}\\ + \hline\rule{0pt}{2ex} + LabelFormat & Int & 1 = legacy surface markers (see section \ref{ssec:custom_markers}), 2 = quadtree-based marker definitions, see section \ref{sssec:label_tile_format}, uses tiles. Default: 1\\ + \hline\rule{0pt}{2ex} + MarkerPath & String & Directory path to the legacy surface marker files for the planet. Default: .\textbackslash Config\textbackslash <\textit{Planet-name}>\textbackslash Marker\textbackslash \\ + \hline + \end{longtable} +%\end{table} + + +\subsubsection*{Surface bases (optional)} +This is a list containing the names and locations of surface landing installations ("spaceports"). Each entry in the list must be accompanied by a configuration file for the corresponding surface base (see section \ref{ssec:surface_bases}). + +\begin{lstlisting}[language=OSFS] +BEGIN_SURFBASE + +END_SURFBASE +\end{lstlisting} + +\noindent +Base list entries have the following format: + +\begin{lstlisting}[language=OSFS] + +\end{lstlisting} + +\noindent +where + +\begin{itemize} +\item <\textit{name}> $\Rightarrow$ Name identifying the base config file (<\textit{name}>.cfg). The actual base name as it appears in Orbiter is given by the NAME tag in the base config file. +\item <\textit{lng}> <\textit{lat}> $\Rightarrow$ Base centre position in equatorial coordinates [deg] +\end{itemize} + + +\subsubsection*{Ground-based observer sites (optional)} +This is a list containing the pre-defined locations for ground-based observers (launch cameras, spectators, etc.) which can be selected in the Camera dialog. The format of the list is + +\begin{lstlisting}[language=OSFS] +BEGIN_OBSERVER + +END_OBSERVER +\end{lstlisting} + +\noindent +List entries have the following format: + +\begin{lstlisting}[language=OSFS] +:: +\end{lstlisting} + +\noindent +where + +\begin{itemize} +\item <\textit{site}> $\Rightarrow$ Name identifying the site (e.g. KSC) +\item <\textit{spot}> $\Rightarrow$ The particular location at the site (e.g. Launch pad 39A) +\item <\textit{lng}> <\textit{lat}> $\Rightarrow$ Observer position in equatorial coordinates [deg] +\item <\textit{alt}> $\Rightarrow$ observer altitude (> 0) [m] +\end{itemize} + +\noindent +The easiest way to find the coordinates for a new observer spot is to open the Camera dialog (\Ctrl+\keystroke{F1}), and select a nearby location under the Ground tab. Then move the camera to the new spot using \Ctrl\DArrow\UArrow\RArrow\LArrow and \keystroke{PageUp}\keystroke{PageDown}. The coordinates are displayed in the dialog and can be directly copied into the configuration file. + + +\subsubsection*{Navbeacon transmitter list (optional)} +This is a list containing the specs of all navigation radio transmitters on the planet surface except for those directly associated with a spaceport, which are defined in the base definition file (see section \ref{ssec:surface_bases}). The list format is as follows: + +\begin{lstlisting}[language=OSFS] +BEGIN_NAVBEACON +