Video rework

This release is a complete overhaul of the video module.

new video decoder

The video decoding class has be fully rewritten and can now actually skip ahead in the movie file instead of only advancing a frame. This increases the performance by a huge amount especially if the video has to be advanced more than a few frames.

switch to imgui

The biggest change is the move from pure sdl2 window management to imgui with opengl4.6 and sdl2. This allows for more than window to be part of the application.

status display

To demonstrate this all of the status variables like speed, framerate, position, etc. are no longer displayed using the terminal but instead using a window that is part of the extras module. For more other custom windows the statusDisplay module is a good starting point since it is a minimal implementation and should be easy to understand.

new video class and texture class

The new video class is now longer a singleton. Because of this a new instance can be created once you are done with a track. In theory this is the least, that is needed to have a fully functional UI with a track selection and a settings window (those still have to be implemented). Another feature of the new video manager is that is allows overlaying a texture on top of the video. This allows other modules to create overlays like weather or HUDs which can be attached to the main video window. Please note that this requires some knowledge of opengl since you have to render you overlay into a texture using a framebuffer. The texture class tries to make it as easy as possible but you still have to create all of the object buffers and use your own shader.

shader class

There is a shader class which allows for easy management of opengl glsl shaders. This class handles loading the shader files from storage, compiling and linking them into a program. There are also a lot of functions to set uniform variables and a function to easily use the shader for the next render call. It still requires some basic knowledge of opengl to be used but makes the shaders actually manageable.

format 0.8.0

The new json format version has two new fields in the simulator_configuration. The first one is the folder that contains all of the shader files (it is required so make sure to update your settings). The second one is a flag to notify that the setting files should be read only. It is not used yet but is really useful/necessary once settings windows are there. On some installation methods you are not allowed to change these files so this is a preparation for that.