Core
- Added support for 2019-11-19 (should speed up startup a bit).
- Added "Unload scripts" option to the menu, if it's enabled in the settings.
- Added a new method of Maniaplanet code hooking. This will eventually allow for script-level hooks as well.
- Added the ability to set the script timeout to 0 in order to disable the timeout for performance improvements.
- Added update branch option to the settings. (All branches are the same right now, but this might be used in the future.)
- Fixed powersaving option not saving.
- Changed assertions to be less obnoxious and more helpful. They'll also show in the log now.
- Started working on basic support for Linux dedicated server builds.
- Internal change of handling vectors, matrices, and quaternions.
- *Research.*
- Redesigned the main interface a bit.
- Redesigned Nod Explorer.
- Redesigned the log window.
- Added a notification system, which is used for events inside of Openplanet and can also be created by scripts.
- Added the ability to call procs directly from Nod Explorer.
- Added the Nod's IdName (if it is set) in Nod Explorer.
- Added traits to Nod Explorer. This is currently unfinished.
- Fixed a lot of Nod Explorer visual things and shortcomings.
- Window backgrounds are now less transparent to make text on them easier to read.
- Added the ability for UI elements to have colors in texts, by using a Maniaplanet-like format: `\$f00Red\$z`
- Fixed crash when clicking Explore Pack inside of Pack Explorer.
- Updated ImGui.
- Added a couple more titlepacks to Discord Rich Presence.
- Replaced Discord rich presence notifications with native Openplanet notifications via its new API.
- Added `Icons.as` which plugins can include to get access to the set of FontAwesome icons that are available in both Openplanet and ManiaPlanet itself.
- Added `Import::GetLibrary` (and `Import::Library`), which replaces `Import::GetFunction` entirely. This new approach allows dll's to be unloaded and replaced at runtime when plugins are unloaded.
- Added support for string return values (in C: `const char*`) in the `Import` API.
- Added support for wstring return values (in C: `const wchar_t*`) in the `Import` API.
- Added support for wstring function arguments in the `Import` API.
- Added Import::Ref, which can be used as a function parameter for output parameters.
- Added the ability to load setting structures from settings.
- Added `Settings` API and the corresponding `OnSettingsSave` and `OnSettingsLoad` plugin callbacks.
- Added the `hidden` keyword to plugin settings to make them not show up in the settings dialog.
- Added `RenderMenuMain` plugin callback, so that plugins can place stuff in Openplanet's main menu.
- Added VirtualKey enum which is now also accepted in a plugin's `OnKeyPress` callback.
- Added the ability to load setting structures from settings.
- Changed the plugin function `Update(int dt)` to take a float instead. The old callback will throw a deprecation warning.
- Added the ability to load and render textures via `Resources::GetTexture`, `UI::Image`, and `Draw::DrawTexture`.
- Added `UI::SliderInt`, `UI::SliderFloat`, `UI::VSliderInt`, and `UI::VSliderFloat`.
- Added `power` parameter to `UI::VSliderFloat`.
- Added `UI::InputText`.
- Added `UI::PushFont` and `UI::PopFont`.
- Added NanoVG API. See the `nvg` namespace documentation. Ultimately this is supposed to somewhat replace the `Draw` API.
- Added warn() and error() functions to scripts.
- Added `XML::Node::Content`.
- Added `string::opIndex`.
- Added documentation for `string::Join`.
- Fixed broken proc calls due to a Maniaplanet change.
- Added `mat3` type to perform 2D transformations.
- Added Length, LengthSquared, and Normalized functions to vectors in scripting API.
- Fixed potential crashes when using `iso3` and `iso4` types in scripts.
- Added a `Resources::Sound` type which holds a wave file and can be played.
- Added `IO::IndexFolder` function, which can be used to list files and folders.
- Added listening API to Net::Socket.
- Added support for writing `#region` and `#endregion`. (The compiler just ignores them)
- Added init param to MemoryBuffer constructor.
- Fixed OnSetCurChallenge callback causing a crash.
- Fixed font size change not working in font loading.
- Fixed crash when reloading font at runtime.
- Throw exception when trying to load a font while font atlas is locked.
- Fixed crash when getting class members with reflection API.
- Fixed crash when getting script properties that have a defined range.
- Fixed crash that could occur when instantiating wide strings.
- Fixed failed assertion when passing enum values in some cases.
- Fixed not being able to concatenate wstring and string objects.
- Fixed memory leak for certain strings in scripts.
- Added Angelscript's `ref` type, which can contain any type of handle.
- Added a `startnew()` variation that also accepts a userdata parameter.
- Added some more `Dev` API functions, as well as removing some limitations.
- Updated Angelscript.