# Gaia Sky 3.3.0-RC1

## Code Refactoring

- the largest change in this version is by far the refactoring of the internal model from an object-oriented inheritance hierarchy to an entity component system  (ECS).
- abstract attitude loading system, remove Gaia class, use heliotropic satellite. 
- add `I18nFormatter` to reformat i18n files. 
- remove old date formatting infrastructure (desktop, html, mobile) in favor of a direct approach. 
- remove useless number formatting infrastructure. 

## Features

- recompute UI scale at startup when starting with default config file. 
- add back-buffer scale controls to UI. 
- add back-buffer scale API call. 
- add repository to `-v` information. 
- rename fisheye post-processing effect and shader to reprojection. Update cubemap projection from fisheye to azimuthal equidistant. 
- add shaders for Lambert equal-area, orthographic and stereographic projections.
- add re-projection GUI drop-down in preferences window. Add `setReprojectionMode()` scripting API call. 
- include orthographic projection in panorama mode. Includes both hemispheres on the screen, side by side. Can be cycled through with `ctrl`+`shift`+`k`. 
- include "orthosphere" panorama mode -- orthospherical projection with both hemispheres overlaid to give a view of the celestial sphere from the outside. 
- enable gamepad operation in welcome GUI. 
- add support for KTX and ZKTX textures. 
- change from thread to scheduled task to remove the mode change info pop-up. 
- add mode change pop-up setting to enable or disable showing a pop-up with information when changing modes (panorama, planetarium, stereo, etc.). 
- add GUI button to exit stereo mode. 
- add new object type, 'cosmic locations', to mark the positions of interesting areas or regions. 
- enable scene lights for shape objects when static light is off. 
- new model attribute 'blendMode', which defaults to 'alpha' but can also be set to 'additive' to control the object blending. 
- add several new functions to enable setting the camera state from scripts. 
- add time zone to settings. Time zone can be either UTC, or the system default. Update date dialog year limits, fix time component layout. 
- adapt raymarching effects to work with ECS model. 
- adapt light glow effect to work with ECS model. 
- introduce gamepad support for spacecraft mode, remove 'gaia scene' camera mode (can be mimicked with focus mode), refactor input controllers, fix default SDL gamepad mappings file. 
- add zero-point to gamepad configuration. 
- save configuration when closing dataset manager window. 
- add pop-up notice when opening the keyframes window if component 'others' is not visible. 
- add full screen bit depth and refresh rate to fully qualify selected full screen modes. 
- add notice when there are no datasets. 
- improve layout and information of crash window. 


## Bug Fixes

- particle set size when rendered as points and star scaling issue. 
- correctly query graphics device for resolution and apply scaling. 
- toggling SSR and motion blur does not update depth state in some shaders. 
- double definitions in shader libraries. 
- render constellation boundaries as closed polygons in order to avoid artifacts. 
- index errors in keybaord in controller GUI. 
- back-buffer scale is now applied correctly (and only once), works with external view. 
- remove angle from zenith from cubemap renderer in planetarium, use shader-based solution. 
- prevent rendering titles if panorama mode is on. 
- initialize position from coordinates object during initialization phase. 
- land at location never returns. Fixes [#674](https://codeberg.org/gaiasky/gaiasky/issues/674). [#674](https://codeberg.org/gaiasky/gaiasky/issues/674) 
- set foucs with `FocusView` object type. Fixes [#671](https://codeberg.org/gaiasky/gaiasky/issues/671). [#671](https://codeberg.org/gaiasky/gaiasky/issues/671) 
- provide a correct index mapping for arbitrary attributes with string values. 
- particle size of interactively loaded point cloud datasets. 
- vertically flip UV coordinates of two-faced billboard to correct texture orientation. 
- regression in billboard group rendering. Fixes [#663](https://codeberg.org/gaiasky/gaiasky/issues/663). [#663](https://codeberg.org/gaiasky/gaiasky/issues/663) 
- update coordinates in invisible only when present. Fixes [#662](https://codeberg.org/gaiasky/gaiasky/issues/662). [#662](https://codeberg.org/gaiasky/gaiasky/issues/662) 
- prevent runtime error due to non-invertible matrix in spacecraft entity. 
- diffuse color contribution calculated incorrectly when nLights > 1 in normal shaders. 
- names in star groups can now be localized, fix focus name in panel. 
- translate strings of filters, shapes, datasets and minimap. Fixes [#403](https://codeberg.org/gaiasky/gaiasky/issues/403). [#403](https://codeberg.org/gaiasky/gaiasky/issues/403) 
- moon orbits are recomputed more often. 
- filters crash with instanced star renderers. 
- modal windows made not collapsible by default. 
- hotkey tooltip backgrounds. 
- jump in Pluto's orbit due to deviation between full periods. 
- highlight 'all visible' setting in quad-based star renderers. 
- frame sequence number synchronized, value updated when opening preferences. 
- use view angle instead of view angle apparent in go to object API call. 
- increase number of vertices of minimap shape renderer, fixes crash in heliosphere minimap. 
- typo in Jupiter English translation file, add meshes to data descriptor file. 
- break link in dataset manager if too long. 
- make sure direction and up vectors are orthogonal in camera transition call. 
- increase size star point buffer when needed. 
- null-check satellite attitude before getting quaternion. Fixes [#402](https://codeberg.org/gaiasky/gaiasky/issues/402). [#402](https://codeberg.org/gaiasky/gaiasky/issues/402) 
- empty tips may crash Gaia Sky at startup. 
- 'add scene graph object' event missing source object. Fixes [#400](https://codeberg.org/gaiasky/gaiasky/issues/400). [#400](https://codeberg.org/gaiasky/gaiasky/issues/400) 
- remove phase of pi radians in default-model orbital elements. 
- regression with libgdx 1.11.0 that caused vertical tooltips. 
- null-check settings in crash reporter. 
- workaround for libgdx backslash bug in asset manager. Fixes [#398](https://codeberg.org/gaiasky/gaiasky/issues/398). [#398](https://codeberg.org/gaiasky/gaiasky/issues/398) 
- hide system cursor correctly with GLFW until libgdx 1.10.1 is released. 
- use minimum width for debug interface to prevent dynamic resizing depending on content. 

## Build System

- upgrade gradle wrapper version to 7.5.1. 
- move repository to [Codeberg](https://codeberg.org).
- update changelog template repository to Codeberg. 
- update GitLab references to Codeberg, when possible. Use Codeberg API for version checking. 
- remove GitLab CI file. 
- extract documentation project from submodule to its own project. 
- add `aarch64` JRE to macOS bundle for M1 machines. Move to macOS single bundle archive from deprecated old single bundle. 
- force safe graphics mode on M1 macOS. 
- upgrade to libgdx 1.11.0 and LWJGL 3.3.1 --- this adds M1 Mac support. 
- use default GC (G1) in favor of Shenandoah (only LTS). 

## Documentation

- improve comments on color maps GLSL code. 
- add new panorama orthographic projection to API javadocs. 
- remove wrong license (leftover from old copy-paste) in fisheye fragment shader code. 
- add contributor. 
- update repository pointers to Codeberg. 

