2024.9.11.677 - Footstep events & animation improvements, other fixes

Resonite

Enter a novel digital universe with infinite possibilities. Whether you resonate with people around the world in a casual conversation, playing games and socializing or you riff off each other when creating anything from art to programming complex games, you'll find your place here.

I got another build for you! This has a bunch more improvements for the locomotion animation system. I still haven't touched the defaults, I'll give those a bit more time and then look at which ones would be good to integrate to replace the current ones. I've also added a bonus that I wanted to implement with this system, because it made it much easier - footstep event system! This allows the environment to receive events whenever player lands a footstep on them. Currently there's mainly a node which gives you the raw event data, so you can do whatever you want with it! There will be more components built on top of this, espeically to make it easy to setup footstep sound effects in the world! The system also doesn't detect footsteps from full body movement yet (though when you walk around and the animation system takes over it will get that), but this will be added later too. There's a few other small additions. I've also started work on more optimizations (notably the session server join hitch), but that is a bit bigger thing. [h2]New Features:[/h2] - Add better body turning detection for locomotion animation while in VR -- The hands are used to distinguish from the head moving around vs the whole body moving around - the body will move only if the hands move with it - Added DeltaAngle(Rad) node which computes angle between two 2D vectors and the direction -- Positive angle is clockwise, negative counter-clockwise -- Positive Y coordinate is up - Added a general system for sending footstep events into the world -- This can be used by a number of components and systems, with more to come! Right now you get the raw events themselves, I plan on adding a component that will make it easy to setup sound effects for this soon as well! -- Currently this only receives footstep events coming from the locomotion simulation - it will not detect footsteps coming from full body tracking (except when simulation takes over when you walk) - this will be added later - Added FootstepEventRelay component (under Locomotion/Footsteps) -- This allows to relay the footstep events to another Slot - Add FootstepEvents node (under Locomotion) -- You need to provide the FootstepEventRelay node as a source -- This will locally fire for each user who performs a footstep on the collider the event is sourced from -- You will receive the foot side (left/right), position and rotation of the footstep, impact velocity and whether the footstep is from landing (e.g. when falling), the hit collider and hit triangle index (if mesh collider was hit) - Added FootstepEventDebugVisualizer -- This visualizes footstep events received by the collider that this component is on -- This is mostly for diagnostic purposes - do not use this to build any specific behaviors! - Add RelayName network statistic of type string (issue #2751) -- When user is connected through a relay, this will be filled with the name of that relay [h2]Tweaks:[/h2] - Add more detailed logging to world destroy events and ensure events get called even if one of them throws an exception (based on report by @_deltawolf, @zyro1331, @aritosuits, @stiefeljackal, issue #2681) [h2]Locale:[/h2] - Merged German locale tweak by @muppeq [h2]Removals:[/h2] - Remove DebugSetting component since it's no longer needed (based on report by @dustysprinkles, issue #2911) [h2]Fixes:[/h2] - Fix session asset gather jobs not unregistering world destroyed events, resulting in resource leak and also exceptions when the world is closed after the asset has already been processed (based on report by @_deltawolf, @zyro1331, @aritosuits, @stiefeljackal, issue #2681)