[release] v1.2.0
Update 1.2 introduces a host of new features, mostly for the VM, to support modding frameworks like Ikarus and LeGo.
There are also many bugfixes, which mostly address issues with games files provided by mods. Notably, there is one
small breaking change which only affects users who have been manually passing include_polygons
to mesh::parse()
,
as described below.
Breaking Changes
- [33f6f6d] For performance reasons,
mesh::parse()
now takes a vector of ints instead of anunordered_set
. Thanks, @Try!
Features
- [69f1df0] You can now call script functions manually, pushing values onto the stack as required, by using
vm::unsafe_call()
. This addition was made for compatibility with the C interface. - [637b888] You can now register a custom default external function for manually handling the stack. This addition was
made for compatibility with the C interface. - [78a1c82] Added a new implementation of the VFS in the form of
Vfs
. This will fully replace the oldvdf_file
implementation in phoenix 2.0. - [5230465] Meshes can now be parsed without passing
include_polygons
. - [bbec4cc,f46144fa] Added named constants for Gothic 1/2 specific enum values in
npc_type
. - [e481bca] The VM now supports overriding functions in a way which will not push a call stack frame ("naked functions"). Thanks, @Try!
- [e481bca] The VM can now report accesses of specific symbols by calling a registered callback. This is required for
supporting the Ikarus modding framework as well as debugging support. Thanks, @Try! - [13c929b] Daedalus function parameters for externals can now be explicitly passed using a new
func
type,
instead of a plainint
. - [a348a38] The VM now supports two new instance types,
opaque_instance
andtransient_instance
, which can be used
to support modding frameworks like Ikarus. Thanks, @Try!
Bugfixes
- [2c2a099]
vm::call_function()
now properly compiles when building a shared library. - [b4af7ed] The
camera_trajectory
enum now contains the correct enum value forcamera_trajectory::object
. - [fee2dd1] Added support for semicolons in model script source files.
- [ed37464] The buffer now no longer segfaults when loading empty files.
- [68714df] When reading a line at EOF, the buffer no longer throws an exception, but rather returns the empty string.
- [356647d]
light_preset
andlight
VObs now correctly support greyscale color transitions. - [3fe0f7b] Parsing of model scripts now features improved compatibility for modded installations.
- [0e7e507] For compatibility with mods, values of Daedalus string symbols are now parsed using a special algorithm
to avoid data corruption. - [9e8458e,7e447c3e,bcb47c1b] The Vfs now correctly handles trailing whitespace in node names.
Misc
- [4ac598e]
texture
s can now be copied and moved. - [1d6a3b7]
script
s can now be copied and moved. - [19ab9ac] Buffer exception constructors are now public.
- [d6566d5,bee00d13] VM stack traces are now printed using the logger.
- [3b6825b] The element count of
c_item::{text, count}
has been extracted as a constant. Thanks, @JucanAndreiDaniel!
Deprecations
- [78a1c82] Deprecated the old VFS implementation in
vdfs.hh
.