This Week in Fyrox #5
Fyrox is a Rust game engine with lots of out-of-box game-ready features and a full-featured editor. This week contains lots of small improvements in the animation editors, move gizmo, various UI widgets and as usual a bunch of bug fixes.
# Smart Placement Mode for Move Gizmo
Move Gizmo now have smart placement mode (kudos to @kgyrtkirk (opens new window)). It automatically follows the geometry under cursor and helps you place objects on top of some other objects.
# Animation
Animation editors (animation and state machine editors) is getting improved as well. On this week, it got a separate toolbar for the track list, it allows you to search tracks, expand or collapse the tree. It is now possible to select playback time slice and it will be highlighted in the curve editor as bright rectangle. Time ruler now shows seconds, which makes reading playback time less confusing. Check how the toolbar in the track list looks like in dynamics:
Also it is now possible to remove tracks by right-clicking on them and pressing "remove selected tracks" menu item. To get a better understanding about animation pipeline of the engine, check this video of animation editing process:
This video shows another new feature - ability to import animations from separate files to an animation player. It is very useful if you have multiple animations stored in different files. ABSM editor now allows you to switch values of parameters in preview mode, any changes made to parameters list during the preview model will be discarded when the preview mode is disabled.
Animation system is now correctly handles numeric type casting when setting properties via reflection. Previously only
f32
type worked correctly. Now the list includes f32..f64
+ u8/i8..u64/i64
+ bool
and vectors (2/3/4) of these
types.
# Curve Editor Improvements
Curve editor is a major part of the animation editor, it is used to define how value changes over time. On this week it got an ability to zoom non-uniformly via shift or ctrl pressed during zooming. Also it got an ability to add zones for highlighting - this is useful when you need to visually highlight some zone. As an example of it you can check the animation editor screenshot above - brighter area on the curve editor.
# Other
NumericUpDown
widget is now have an ability to change min, max, step and precision values at runtime using
respective messages.
# Full List of Changes in Random Order
- Toolbar for tracks list in the animation editor (allows you to filter tracks, collapse or expand all tracks)
- Ability to zoom non-uniformly via shift or ctrl pressed during zooming.
- Automatically select newly create animations in the animation editor.
- Highlight animation's time slice in the animation editor.
- Ability to add zones for highlighting in the curve editor.
- Improvements for track list in the animation editor (added track context menu - it allows you to remove selected tracks, fixed ui syncing issues, sync selection in the track list with actual editor's selection).
- Ability to insert and remove tracks from animations.
- Add seconds to time ruler.
- Automatic type conversion in animation track values (since animations are f32-curve-based, f32 must be converted to a real property type before trying to apply it to the property via reflection).
- Add missing value blending branches.
- Make sure animation will use property setters when setting field values.
Reflect::set_field_by_path
- a small helper that allows you set a field using its setter in parent entity.- Smart placement mode for move gizmo.
- Disable curve editor in the animation editor if theres no curve selected.
- Set keys value and location in the curve editor.
- Name imported animations using file name.
- Ability to import animations to an animation player from some file (allows to transfer animations from multiple files into single animation player).
- Split
Model::retarget_animations
in two separate methods (Model::retarget_animations_directly
allows to get a list of animations without adding them to an animation player). - Ensure that all tracks of an animation will serialize its key frames.
- Prevent panic when trying to iterate over pool items using reflection (pool is a sparse array that could have empty
entries and calling
unwrap
on an empty element will result in panicking). - Ability to switch parameters of absm without leaving preview mode.
- Revert state of absm when leaving preview mode.
- Disable animation and state machine when instantiating a prefab.
- Prevent crash when copying a scene node.
- Remove unused ABSM root.
- Ability to set time slice for animations in the animation editor.
- Remove animation length and use time_slice instead in the animation.
- Ability to set min, max values, step, precision for
NumericUpDown
widget via respective messages.
# Support
If you want to support the development of the project, click one of the links below. Preferable way is to use Boosty (opens new window) - this way the money will be available for the development immediately. Alternatively you can can use Patreon (opens new window), but in this case the money will be on-hold for unknown period of time (details are here (opens new window)).
Also, you can help by fixing one of the "good first issues" (opens new window), adding a desired feature to the engine, or making a contribution to the book (opens new window)