Here comes new Flax 1.6 ! This update brings various features like .NET 7, C# 11, PhysX 5, iOS support, macOS M1/M2 support , and lots of more good stuff.
For this update together with our contributors, we’ve made over 1,253 commits and merged 148 Pull Requests into Flax repositories. Thanks for your support!
Feel free to discuss the update here 
Contributors: mafiesto4, GoaLitiuM, envision3d, Tryibion, Withaust, PrecisionRender, stefnotch, RuanLucasGD, Menotdan, Swiggies, MinhCT, PhyresiCompany, HydrogenC
PRs merged: 148
Changelog:
- Add .NET 7 support with C# 11 and the latest DotNet Runtime (new JIT and GC)
- Add
Platform.BuildTargetArchitectureto build tool - Add support for mixed scripts debugging in Visual Studio (both C++ and .Net Core)
- Add logging native exception stack trace on Windows when debugger is attached before going back to the crash location
- Add unit test to verify
LibraryImportattributes usage for proper bindings - Add PhysX 5
- Add Physics Statistics and profiler
- Add
FileSystem::GetDirectorySize - Add option Skip .NET Runtime Packaging to skip backing C# class library with cooked game (to use system-installed if possible)
- Add printing output C# files size in game cooker
- Add C# class library optimization for normal game builds (without AOT)
- Add multi-threading to AOT compilation (3x faster builds for Consoles and iOS)
- Add support for handling network events immediately in
NetworkLagDriverwhen Lag is set to zero - Add Any State to Anim Graph state machines
- Add Interruption options to State Machine transition
- Add skeleton node or bone copy context menu in Editor
- Add debug drawing selected skeleton node in Skinned Model window viewport
- Add skeleton nodes names debug drawing in Editor preview when enabled
- Add skeleton retargeting to play animations on different skeletons
- Add scale parameter to
DebugDrawtext drawing to rescale text without reducing font size - Add support for importing skeleton-only as Skinned Model (eg. from animation file to have skeleton for retargeting)
- Add support for macOS arm64 (M1/M2 chips)
- Add logging missing asset type on failed load
- Add
Output/folder to .gitignore - Add
TaskGraphSystem.RemoveDependencyand automatically cleanup dependencies on system destroy - Add better looking Anim Graph state machines nodes
- Add support for using
INetworkSerializableon custom structure in C++ for networking - Add support for spawning multiple objects over network within a single group that is not from Prefabs
- Add Network Replication Hierarchy for robust control over replication in multiplayer games
- Add network error log for missing network object when accessing ownership
- Add CPU profiler events to various networking functions
- Add network replication hierarchy system to Arizona Framework with settings and scripting features
- Add
NetworkReplicator::HasObject - Add network debugging panel to actors and scripts
- Add
INetworkObject::OnNetworkSync - Add default empty implementations to
INetworkObjectfor easier suage in game scripting - Add
SoftTypeReference<T>to scripting API for lazy-load type references (via typename) - Add input action phases
- Add
Camera.UnprojectPointmethod - Add play, pause, and stop functions to the Particle Effect
- Add better tooltips for assets in Content window
- Add better organization to the style groups of UI controls
- Add better UI for linking scale values in a transform more intuitive
- Add Pivot Relative UI Sizing to controls
- Add support for editing dictionary keys that are structures
- Add asset reload option via context menu in Editor
- Add search actors by parent tag (
Level.FindActorsByParentTag) - Add
FindActorby type and name (to actor and level) - Add
CustomArgsto compile and link environment in build tool for customization - Add preferring high-performance discrete GPUs when enumerating adapters
- Add
Utilities::HertzToTextvia newUtilities::UnitsToText - Add
LineCastandLineCastAllto physics scripting - Add default new script name to
MyScriptand avoid namign it asScriptto make it easier for use - Add
Platform::GetMousePosition/WindowsPlatform::SetMousePositionfor unified access to screen-space mouse position on all platforms - Add eyedropper color picker for Editor on Windows and Linux
- Add better usability when duplicating points of a spline
- Add various
Inputclass delegates to the C#/Visual scripting API - Add automated test for loading nested prefab with different root actor
- Add bitmap data slot of Font glyphs in
FontTextureAtlas - Add
Span<T>support for scripting fields - Add
Span<T>to C++ debugger natvis file - Add HRTF Audio support (via
OpenALbackend) - Add updating the main menu shortcut keys on editor options save
- Add Copy Euler angles to Quaternion editor context menu
- Add logging
PixelFormatas string instead of integer value for better readability - Add
ClampLengthfunctions to C++Vector3 - Add InputBindings modifiable from plugin (in Editor public API)
- Add word wrapping on capital letters and underscores for better text rendering
- Add various changes to scroll bar to make it feel better
- Add de-selecting items in content view by clicking empty space in Editor
- Add the play icon to a stop icon and vice versa when clicked for the Profiler
- Add
Create collision dataaction to be performed for each model selected in the Content Window - Add improvements for Visject context menu interface in Editor
- Add ability to change the fps of the not focused editor window
- Add setting new material instance name to parent material name
- Add
EnumAddFlagsfor easy flags appending - Add
NetworkReplicator::EnableLogto optionally enable verbose logging of networking - Add
NetworkStream::SenderIdto detect message sender during object replication or RPC code - Add
NetworkManager::GetClientbyuint32 clientId - Add
NetworkRpcParamsfor sending RPC to specific set of clients or to read sender id - Add array property replication code-gen for C# networking
- Add networking replication codegen for C# array properties with object references or custom structures
- Add LateFixedUpdate event for scripts
- Add support for decimal values in
Fontsizes - Add proper POD types check in C# network replication codegen
- Add support for C# array as network RPC method parameter
- Add objects ID inverse mapping from client to server for proper C# networking codegen
- Add optional replication for network object (if Rep FPS is negative)
- Add support for changing C# nullable references context build option
- Add Content importers and exporters for scripting API
- Add more usability to model/material previews in Editor
- Add option to search only active actor with
Tag - Add output binaries folder cleanp to build clear command
- Add support for writing UTF-8 files in
FileBase::WriteAllText - Add ability to unset type reference with
nullitem - Add
SpanContainsutility to C++ scripting - Add
ReallocAlignedutility - Add support for line-breaks in
API_INJECT_CODEmacro - Add
eol=lfto gitattribute - Add removing old hot-reload files in project references on Editor startup
- Add better visuals of dragging a tree node
- Add
Unload all but this sceneto Editor scene tree context menu - Add using parent actor’s name as initial prefab name in Editor
- Add
MoveTowardsfunctions to C++ Math - Add
Tags::GetSubTagsto scripting api - Add
ViewportIconsRenderer::AddActorWithTexturefor custom actor icon per-actor - Add inputs to Random Range nodes in particle emitter surface
- Add
==operator for Actors and Scripts to properly perform comparison in C# scripts - Add
AudioDataInfo.Length - Add audio clip preview refresh on asset reimport in Editor
- Add current playback position preview with seeking functionality to Audio Clip window in Editor
- Add OpenAL
AL_SOFT_source_spatializeextension support for stereo spatial audio playback - Add
AllowSpatializationoption to Audio Source - Add
DopplerFactorto Audio Source - Add
Panto Audio Source for stereo panning - Add editor playback utilities for Audio Source and Scene Animation Player
- Add saving and re-opening all active scenes between editor sessions
- Add ensuring prefab actors static flags match parent flags or keeps it’s own
- Add logging .NET runtime version to build tool
- Add ignoring logging missing env var on Windows
- Add engine version defines for build scripts (eg.
FLAX_1_6_OR_NEWER) - Add automated test for strings formatting and localization
- Add content proxy modifications function and workspace rebuilding for custom asset types extensions
- Add build tool and game cooker caches clearing when opening project with different Editor version
- Add GC to run periodically in order to reduce stuttering
- Add
launchSettings.jsongeneration for Visual Studio 2022 with .NET 7 - Add better Texture initialization API with custom data
- Add better Visual Studio solution generation with nested C# project cross-references to properly place projects in group folders
- Improve Root Motion extraction and playback
- Improve automatic slider speed for float value fields in Editor
- Optimize
Flax.Buildperformance to have even faster builds - Optimize bindings code generation via String Builder pooling
- Optimize text formatting in various places
- Optimzie
Newtonsoft.Jsonlib by removing Xml, Schema support and making it AOT-friendly for AOT game builds - Optimize out
System.ComponentModel.TypeConverterassembly usage to reduce cooked game builds - Optimize profiler window assets and GPU resources sorting when the view is active only
- Optimize network replication when no client can receive object
- Optimize interface method lookup to eliminate
strlencalls - Optimize vectors normalization
- Optimize UI performance when destroying complex UI structures
- Optimize
Utils.InitStructureusage in generated bindings code if structure can be zero-inited - Optimize
CollisionsHelper::FrustumContainsBox - Optimize out debug symbols generation for C# stdlib in Mono AOT builds
- Update Newtonsoft.Json to
13.0.2 - Update Nintendo SDK support to
16.1 - Update OpenAL version to
1.23.1 - Update dependant DotNet libraries to
dotnet7 - Update deprecated
WebClientintoHttpClientinFlax.Buildfiles download utility - Update
fmtllibrary to version9.1(Aug 27, 2022) - Update Editor analytics from deprecated
Universal Analyticsto the latestGA4 - Update Tracy to the version
0.9 - Update Flax
.gitignoreto skip generated code module header files -
Changed Flax Docs license to
CC-BY-4.0 license - Remove mono debugger from VS Code extensions list
- Remove shadows casting and sdf data from editor camera model
- Remove unused
Function::TryCall - Remove extra sleep when Editor is not focused
- Remove
EnableAdaptiveForcefrom Physics settings (deprecated functionality in PhysX) - Rename networking codegen initializer to
NetworkingPluginfor C# netcode - Refactor vehicles to use
Zaxis as forward instead ofX - Refactor platform process startup with
CreateProcessSettings - Refactor Editor Windows layout serialization of splitter values to prevent invalid state when loading windows
- Refactor Skeleton Mapping to be handled by Skinned Model instead of Animation asset
- Refactor
StringUtilsto simplify code - Refactor various Editor APIs to use auto-generated bindings instead of manual code
- Refactor widowing on macOS to support screen scale and HighDpi mode
- Refactor
RootMotionDataintoTransformto simplify code - Refactor
Levelclass to unload scenes in reversed order - Refactor 3d audio with better spatial sound quality
- Refactor Network RPC C# codegen to share code with data serializer
- Fix Anim Graph state machine rule graph opening after transition removal undo
- Fix actors spawning in prefab editor
- Fix bug in
StringUtils::PathRemoveRelativePartswhen going up to the Windows drive with relative path bits - Fix deprecation compile warning in
NetworkConfigon Clang - Fix API code injection lines to be excluded from includes cache
- Fix warning on
Asset::WaitForLoadedwhen loading failed before - Fix AnimatedModel bounds calculations
- Fix bug with path name preventing the item to be renamed when duplicated
- Fix content window auto scrolling regression
- Fix debug draw lines to not use fake-lighting like debug draw surfaces
- Fix
Array For Eachvisual script node local vars setup - Fix OpenAL spatial audio bugs with left/right and front/back being reversed
- Fix error when using nested Visject Surface context during State Machines editing in Anim Graph
- Fix Json asset cooking to properly serialize whole asset data even if modified at runtime
- Fix collision data cooking from model asset by favoring CPU data fetching
- Fix missing Generic Json Proxy not showing up in the content context menu
- Fix codegen for C# networking when using custom structures for replication and RPCs
- Fix mouse cursor restoring from hidden state on macOS
- Fix window focus notification handling on macOS
- Fix dylib rpath id on macOS
- Fix visuals of
Blend with Masknode in Anim Graph - Fix visuals of the spline tangent points in Editor
- Fix Visual Studio Code jump to line argument
- Fix scene asset runtime contents when saving scene file in Editor
- Fix C# serialization of scene objects when property throws and exception
- Fix C# math sign function for value
0 - Fix C#
Math.Remapmethod as obsolete (use `Math.Map instead) - Fix C++ API for Vector2/3 Normalization to be the same as in C# API
- Fix
ViewportIconsRendererusage in game C++ scripts - Fix
TextureMipData::GetPixelsto properly copy pixels of the same format - Fix memory leak when exporting
pngtexture viastb - Fix issues when drag and dropiing actor tree in Editor
- Fix
LayersMatrixEditorwith many layers in use - Fix right-click menu deletion to take selection into account in Content Window
- Fix content view items refresh (eg. after delete) when using search field
- Fix Visual Studio project names collision when using both C++ and C# scripting
- Fix C# serialization of reference to self (eg. script sub-object referencing owning script)
- Fix sluggish Editor Viewport camera movement with high DPI
- Fix
GridGizmoto render before transparency in Editor viewport - Fix invalid ability to rename Source/Content folders on content editor
- Fix custom editor window restore after hot-reload
- Fix incorrect space conversion results in
AnimatedModel.SetCurrentPose - Fix vehicle wheel debug orientation
- Fix missing collision events generated during
CharacterController::Move - Fix compile-time error in
HashSet::ClearDelete - Fix codegen for C++ RPS with Array param
- Fix garbage
DefaultScenevalue in new project - Fix Intellisense errors with referenced binary module structures
- Fix invoking Client RPC on Host client when it’s not included in
targetIdslist - Fix
StringUtils::ConvertANSI2UTF16to properly handle multi-byte characters length - Fix bug when using material instance of material that uses
GlobalSDF - Fix bug of the collection size changing while sliding the size number in Editor
- Fix bug with not deleting all children on folder delete
- Fix bug with automatic collision assets creation in non-asset folders
- Fix missing initial audio source volume setup for XAudio2
- Fix network RPC object id mapping back to server id when sent from client
- Fix
NetworkTransforminvalid fields sync copy-paste typos - Fix creating localization table on blank project
- Fix bindings generation for in-built
Chartype used inArray - Fix model screen size calculation in orthographic view projections
- Fix CPU profiler events extraction when buffer is full
- Fix bindings code instance object param
objto__objto prevent name collisions - Fix existing nested prefabs sync applying when updating base prefab changes
- Fix spawning nested prefab with different root actor
- Fix accessing object ownership info locally before object gets fully spawned
- Fix character controller up direction limit between
(-1, 1) - Fix typo in atmosphere precompute shader
- Fix scale link to use ratio when editing transform
- Fix hierarchical network ownership propagation to sub-objects
- Fix
NetworkManager::ClientConnecteddispatch after network state is changed to online for local client - Fix
UIControllinkage to Prefab window when creating UI within prefab Editor - Fix UI Control selection highlights when using Canvas Scaler
- Fix 3D UI Canvas point conversion from parent control space to local space
- Fix syncing Custom Editor value when using it to edit value-type
- Fix spawning nested prefab with different root actor
- Fix prefab diff context menu in Editor to properly diff against arrays
- Fix prefab data build number when loading objects from prefab
- Fix Scale Transform Gizmo issue when enabling Scale Snap
- Fix looping animation in Anim Graph when using start position offset
- Fix creating C# scripts in Editor with private
ctormethod - Fix textbox submit when it’s nav focused
- Fix file lock when loading asset fails
- Fix error when unloading Visual Script item in Editor
- Fix using proper default value in scripting bindings for
IntPtrvalue type - Fix prefab files copying using
Ctrl+C/Ctrl+Vin editor content - Fix RPC invoking on object with different ID but matching parent and type
- Fix
BitArray::Setto not beconst - Fix output log text ranges to handle line ending
- Fix crash due to internal errors when drawing asset thumbnails in Editor
- Fix crash on engine exit when asset fails to load due to serialized version mismatch
- Fix crash when substring of
Stringis assigned to itself - Fix crash when importing model with a LOG Generation but a single LOD specified only
- Fix crash when sampling animation in Anim Graph that uses it’s length to calculate start position
- Fix crash when C# type has missing empty
ctoror it throws an exception - Fix crash in GPU devices init when system has no valid GPU driver installed
- Fix crash when loading scene with script which type is not a scene object
- Fix crash on end play when one of the actors has been manually disabled
- Fix crash when reimporting audio clip while it’s being played
- Fix crash when updating GPU texture residency to
0 - Fix crash when using multiple audio clips streaming with XAudio2 backend
- Fix crash when starting drag&drop with invalid control state (detached from window)
- Fix crash during hot-reload when using custom assets from game code
- Fix crash due to invalid RPC codegen for enum value type variable
- Fix crash on hot-reload when using custom assets
- Fix crash when modifying animated model skeleton pose from gameplay code during update event
- Fix crash due to replicated objects leak upon system destruction
- Fix crash when window gets deleted before show/close sequence
