* JaSMIn is now able to handle playlists! Playlists are simple json files, listing game logs (title and url). At the moment I simply use the .json ending for playlist files, but probably change to .gll (game log list) or similar in the future to prevent confusion and simplify internal parser selection. You can use the "list" query parameter, e.g. "?list=path/to/list.json", for direct linking to a specific playlist.
* Introduced model package for holding all data-model related classes.
* Fixed the second major memory leak related to gpu memory. All field objects are now created via a WorldModelFactory class, which is buffering field related geometries and textures. All geometries and textures are now reused as much as possible when creating a new world representation. The result is overall less memory usage, no memory leaking and faster switch between world representations.
* Made World and Field classes reusable.
* Refactored creation of field objects. The goals skeletons and field lines are now a single geometry, all 2D planes use the same geometry, etc. This slightly reduces rendering calls.
* Extracted 2D and 3D related definitions into own namespaces (JaSMIn.D2 and JaSMIn.D3).
* Introduced data models for the general monitor as well as the log player component. This drastically improves on ui inter-dependency and simplifies ui updating procedures.
* Refactored handling and storing of user preferences. Preferences are now serialized JSON objects. Still missing the option to enable/disable remember settings, but they will follow once a general configuration panel is available.
* Created ParserException class for better handling of parsing exceptions and proper error propagation to the ui.
* Added playlist model and the corresponding playlist loader.
* Added GameLogInfo class, extracting the data/time, left/right team name and score from the name of the game log file.
* Added MonitorParameter class for simple parameter access.
* Refactored ui components to use the new model classes.
* Replaced old Monitor class with GLPanel class. The GLPanel is a general util class, only focusing on handling the webgl rendering.
* Renamed MonitorAPI to Monitor, representing the external interface.
* Improved info overlay.
* Renamed about overlay to help overlay (not used at the moment).
* Improved error handling. You shold get more informative error messages now. However, detecting invalid CORS requests is still a challenge, since the browser doesn't provide an unique error status on CORS errors.
* Added playlist overlay for displaying the active playlist.
* Added listing of playlists to archive.php and ArchiveExplorer component.
* Allow Drag & Drop and opening of multiple files. Opening multiple game log files now results in a playlist.
* Added playlist file example.
* Added list and playlist icons to icons.svg.