Here comes new Flax 1.7 ! This release brings various features like Cloth, Behavior Trees, more performance, improved licensing terms, and much more…
For this update together with our contributors, we’ve made over 1,419 commits and merged 233 Pull Requests into Flax repositories. Thanks for your support!
Feel free to discuss the update here
Contributors: mafiesto4, Tryibion, Withaust, GoaLitiuM, Rayumie, mtszkarbowiak, NoriteSC, envision3d, RuanLucasGD, wackoisgod, Walrusking16, eLeSTRaGo-Dev, FREEZX, M-3-H, MineBill, Crawcik, dector, Chikinsupu, Radiangames, stefnotch, solnem, AndrejStojkovic, Zode, davevanegdom, Arcnor, RedTheKitsune, Swiggies, Menotdan, nothingTVatYT, GasimoCodes, ontrigger, Muzz, meabefir, Vizepi
PRs merged: 233
Changelog:
- Add Cloth simulation with physics
- Add cloth painting tools to Editor
- Add async cloth simulation via Job System
- Add distance-based and frustum-based culling to cloth
- Add
MeshReference
toModelInstanceActor
for easy mesh referencing and its data access interface - Add
MeshDeformation
utility for generic meshes vertices morphing (eg. via Blend Shapes or Cloth) - Add
NvCloth
dependency - Add copy/move ctor/operator to
Delegate
- Add
NavMeshRuntime
to scripting api - Add
MoveTowards
to Vector3 - Add stencil buffer support to
GPUPipelineState
- Add
GPUContext::SetStencilRef
to stencil reference value - Add
DebugDraw::DrawLine
with separate start/end colors - Add
RenderTools::CalculateTangentFrame
utility - Add
ReadOnly
toCustomEditorPresenter
- Add
Variant::AsStructure()
to comparision operator betweenVariantType
andScriptingTypeHandle
- Add
SerializableScriptingObject
for easier serialization of scripting objects in gameplay or content - Add
IPresenterOwner
to editor Custom Editor for more context and advanced interactions - Add
GroupArchetype
to Visject nodes spawn query check - Add
SealedNodes
feature to Visject Surface nodes - Add
SurfaceNodeActions
for more contextual surface nodes scripting - Add
OnPasted
to Visject Surface nodes for custom post-paste logic - Add Visject surface boxes and connections drawing customization via style
- Add reroute node usage to Visject only if surface type allows it
- Add
AI
module to engine - Add Behavior Trees editing and simulation
- Add
BehaviorKnowledgeSelector
for Behavior Knowledge unified data access - Add
GetDebugInfo
to BT nodes for debugging - Add Decorators to Behavior Tree
- Add concept of Goals to Behavior Knowledge
- Add animation asset input box to animation sample node
- Add
HasDepthClip
to GPU Device limits - Add
foreach
loop support toSpan
type - Add checking for
Alt
key pressed to expand/collapse all actors in hierarchy - Add
IsDebuggerPresent
for macOS and iOS platforms - Add better viewport camera settings and control
- Add
GetHash
to Vector types - Add support for using
Revision
number in projects version - Add support for runtime running on GPU without Compute Shaders support
- Add logging any XAudio2 backed errors
- Add
Spacebar
to toggle play/pause in Audio Clip window - Add data sent/receive rate charts to the network profiler in Editor
- Add outputting shader source code in Editor to text file when compilation fails for debugging
- Add changing terrain brush size with
Shift + Scroll
- Add default font bundling (optional) and setup UI Style to match editor logic
- Add preventing project file regeneration running while compiling scripts
- Add delay to compiler and project generation after large file operations in Editor
- Add
SubAssetFolder
to model import option to redirect auto-imported materials and textures location - Add excluding GPU swapchain present time from CPU draw time in profiling tool
- Add showing full exception message in error message box for managed exceptions
- Add popup to editor options closing to remind the user to save
- Add more Editor input binding options
- Add context-sensitive node search to Visject (surface editor)
- Add automatic casting setup to Visual Script graph editor
- Add several fixes to UI sizes when fonts are larger in Editor (eg. when using custom fonts)
- Add customizable statusbar colors to Editor theme (change playmode status color to green)
- Add
View Layers
options and Reset/Disable/Copy/Paste buttons editor viewport options - Add
RenderFlags
andRenderView
toCamera
actor properties - Add tooltips to move with the mouse cursor
- Add automatic module creation via Content window context menu (in game
Source
folder) - Add using text
Show in Finder
on macOS in Editor - Add button to position camera to editor viewport view
- Add showing only collision wireframe in
CollisionDataWindow
- Add Main Window to C# through
Screen
class - Add
SmoothDamp
forVector2
andVector3
- Add
BaseLinesGapScale
configurable forLabel
- Add improved mouse wheel scrolling behavior in UI
- Add handling double clicking in
CheckBox
,Button
,Dropdown
andDropPanel
controls - Add the option to import materials for a model as instances of another material in the project
- Add support for importing embedded textures via
Assimp
importer - Add auto-rename start when adding new actor in Scene Tree window
- Add automatic game settings apply when saving json file in Editor
- Add collision type to model importer
- Add bending for connections around nodes in Visject graph editor
- Add improvements to Clang compiler detection
- Add better Visual Studio project Ids preservation when regenerating script project files
- Add always generate additional Visual Studio solution files for all platforms (improves VSCode and Rider usage)
- Add building C# bindings after generating engine project files
- Add VS Code launch task for attaching native debugger
- Add remapping non-native Editor VS build configurations to native configurations
- Add Rider-specific user solution configuration files generation
- Add thread-safety to various scripting methods
- Add better missing script handling in Editor
- Add Game Settings open button to Edit menu
- Add input states to
InputEvent
andAxisChanged
event toInputAxis
- Add
SelectionChanged
public event forVisjectSurface
and properly invoke it only when selection actually changes - Add ignoring types with
CompilerGeneratedAttribute
in Editor - Add
ScriptingType
to msvc natvis - Add
GetColliders
utility toRigidBody
- Add allow using
CustomValueContainer
as readonly if setter action isnull
- Add
MarshalAs
tag to API structs/classes for custom marshaling via implicit casting - Add
internal
access level to Scripting API members (field, properties and functions) - Add support for accessing scripting properties via
ManagedBinaryModule
fields API - Add double-reference support for scripting function parameters to move value
- Add
Random::RandRange
- Add spot light inner circle debug lines
- Add light debug view flag to draw light shapes
- Add grid scale to the editor viewport settings
- Add quick
Cook&Run
button, Play in Editor actions, and customizable number of players setting - Add locked focus to Editor (
Shift+F
) - Add a generic version of
AssetReferenceAttribute
- Add
NetworkReplicator::ResolveForeignObject
- Add
Object::DeleteObjectNow
asObject.DestroyNow
in scripting - Add
ModelInstanceActor::GetMaterial
to get actual material used to render certain entries - Add
ModelInstanceActor::GetMaterialSlots
- Add showing rendering material to model entries
- Add improvements to various context menus in Editor
- Add batch creating prefabs from multiple selected actors in the scene tree
- Add scroll to selected asset/content item on asset picker select menu open
- Add pasting at same level as selected actor parent node instead of under selected node
- Add functionality to combine similar Debug Logs into a log with a count
- Add
params
tag toAPI_PARAM
for C# variadic parameters support - Add user defined analyzers/source generators support in
Flax.Build
- Add build option to change code optimization level in C# modules
- Add default C# code optimization in Editor development builds
- Add
sealed
tag to virtual functions in API bindings to block inheritance in C#/VS - Add common .NET SDK preprocessor definitions
- Add skipping post processing when tonemapping and camera artifacts are disabled
- Add
HasBorder
option toButton
control - Add borderless window switch at runtime (Windows only for now)
- Add ability to clean terrain patch caches
- Add macOS message box with buttons
- Add versions sorting to VulkanSDK selection on macOS
- Add ignoring
.DS_Store
files in Content on macOS - Add
FileSystemWatcher
for macOS to track file changes in Editor - Add codesigning to macOS editor package binaries
- Add control/command/option keys handling on macOS
- Add shwoing Json Asset type on ToolStrip of Json Asset window
- Add timeline position numbers and add to GUI
- Add a way to reset an
IBrush
to null for default functionality in Editor - Add
Method
andOrigin
toProgressBar
for custom progress drawing - Add automated plugin project creation and Git cloning in Editor
- Add tab breaks for window tabs
- Add new look to Content items
- Add sorting plugin projects in content tree
- Add showing/hiding engine/plugin/misc/generated files in content tree and view
- Add slider control to UI library
- Add
InputEvent
andInputAxis
editors with pickers - Add
InputEvent
forUICanvas
navigation actions - Add shift + tab support in UI navigation
- Add ctrl+backspace support to Text Box
- Add more border options to several controls
- Add MMB Panning to Visject Surface
- Add highlighting when mouse is over slider thumb
- Add new Spline editing tools for Editor
- Add editor shortcuts usability when toolstrip or main menu controls are focused
- Add support for editing
WheeledVehicle
wheels config at runtime without full physics state rebuild - Add support for editing
WheeledVehicle
engine/differential config at runtime without full physics state rebuild - Add remove tag method to actor
- Add conditional profiling in Editor (run only when using Profiler window)
- Add
DebugDraw::DrawRay
function - Add
WindowBase::Resized
delegate - Add using exact C# method profiler data for profiler events in overriden thunk method callbacks
- Add support for unsubscribing from managed events multiple times
- Add missing
Particle Scale
getter node to Particle Emitter graph - Add bigger size of clamp node to handle vector4 in Visject surface editor
- Add
PCM
(GJK-based distance collision detection system) to PhysX - Add
SolverType
andBroadPhaseType
to Physics Settings for simulation configuration - Add ability to choose sloppy mesh simplification or not in model import settings for LODs (better quality Auto-LOD)
- Add
ObjectRadius
toDrawCall
to properly cull local lights and env probes in Forward Shading - Add objects replication and RPC stats table to Network Profiler
- Add VS folder structure for BuildScripts and FlaxEngine source files
- Add Rider support to Ediotr on macOS
- Add auto-gen script project files at startup when project Cache was cleared in Editor
- Add better
hostfxr
error messages when failed to setup .NET runtime - Add missing marshaller methods for compatibility with .NET 8
- Add improved dotnet location search (on macOS and Linux)
- Add usage of
xdg-open
to open file manager on Linux - Add support for displaying all active Network Peer stats in Editor Profiler tab
- Add
android_native_app_glue.h
to be included in engine package - Optimize
UnwindRadians
andUnwindDegrees
from C# math lib - Optimize
MClass::GetMethod
method iteration - Optimize C#
UnboxValue
performance, safety and memory usage - Optimize C# method invokers return value marshalling
- Optimize C#
MakeArrayType
results in native interop methods - Optimize actor pasting performance with huge amount of actors
- Optimize
ManagedDictionary
types and helper methods - Optimize
Delegate
to use mutex and hash table over atomic operations for events binding - Optimize
PhysX
collision event handling andonContact
callback - Optimize
CultureInfoEditor
andTagEditor
performance when searching entries by text - Optimize various rendering stages to skip loading shader when effect is disables
- Optimize scenes loading with Job System
- Optimize
ScriptingObject
managed initialization and marshalling - Optimize values marshallers and type storage for managed scripting
- Optimize updating scripts tick arrays
- Update
recastnavigation
lib to1.6
- Update CSharp script template to use non-indented namespace
- Update custom
pugixml
changes topugixml_extra
- Change
Debug
to be static - Changed
Input.ActionTriggered
event to pass aditionallInputActionState
value - Change default dead zone in mouse axis input to
0
(in Flax Samples) - Disable assertions in
Release
build mode - Rename
GPUPipelineState::Description::PrimitiveTopologyType
toPrimitiveTopology
- Remove unused
TIsArithmetic
- Refactor vertex shaders to use
GPUShaderProgramVS::InputElement
for input layout data - Refactor
FileMode
,FileAccess
,FileShare
enums into normal enums with docs - Refactor Visject surface nodes cache to reuse between graphs
- Refactor Editor gizmo modes ownership to support using them in prefab window
- Refactor
ManagedHandlePool
- Refactor scripts
OnDestroy
location to be called before actor’sOnEndPlay
to prevent issues in scripting - Refactor splash screen quotes
- Refactor
std::function
usage intoFunction
insideArrayExtensions
- Refactor audio clip import settings to use auto-generated bindings via
AudioTool
- Refactor how macOS launches processes to use ‘NSTask’ which just deals with escaped and unescaped paths better
- Fix doc comments in
UnwindRadians
andUnwindDegrees
from C# math lib - Fix various keyboard handling on macOS
- Fix incoming drag drop location on macOS
- Fix showing files in the Finder on macOS
- Fix updating Content folder name when renamed in Finder on macOS
- Fix various macOS issues where the BuildTool would not properly run and compile the scripts
- Fix mouse cursor setting on macOS to properly handle screen scale
- Fix error when opening shader asset if it’s not visible in Content window
- Fix missing header files in deployed engine package
- Fix nested animation sampling bug
- Fix culling artifacts in animated model preview in Editor
- Fix nested animation playrate when the framerate is different
- Fix incorrect
Transform Position To Screen UV
in particles graph in CPU code path - Fix visibility of string wrapper methods used in binding code
- Fix various core types to be trivially constructible as properly POD-type
- Fix releasing non-collectible types with collectible generic types
- Fix
DrawSceneDepth
to properly draw scene objects when custom actors list is empty - Fix
API_INJECT_CODE
injecting duplicated code - Fix navigation rebuilding during
OnEnable
/OnStart
- Fix some actor assets into soft checks
- Fix Editor UI when one of the properties panel throws exceptions
- Fix
Label
to draw text under children - Fix log spam from
TypeEditor
if type is missing - Fix opening FlaxEditor window in Linux after launch project second time
- Fix error when scripting structure uses
StringAnsi
field - Fix missing
Variant
typename for Object or Asset value to properly pass type checks - Fix managed assembly unloading and scripting ALC reinitialization for native libraries usage
- Fix
ManagedArray
C# handles with pooling - Fix particles effect not being able to call play to play again if IsLooping is false
- Fix invoking managed method on value types (eg.
Transform
) to properly handle instance value - Fix actor hierarchy to use
PrefabObjectID
when setting/getting the actor expanded value for prefabs - Fix docs panel windows in Editor on macOS
- Fix message box on Windows to prevent interaction with the editor and other windows
- Fix
UnitsToText
to properly print string with 2 decimal places - Fix deserializing vector types in Editor from
ToString
FormatException - Fix
Random Range
nodes in CPU particles/script graphs when usingint
- Fix to stop replication if
NetworkManager::NetworkFPS
is less than 0 - Fix building for Android with the latest Java version (update to Gradle
8.3
) - Fix
AbstractWrapper
from showing in new AnimEvent context menu - Fix missing C# static fields in native scripting api
- Fix visibility of some internal
NativeInterop
methods for game bindings - Fix prefab apply bug when one of the prefabs in project is broken
- Fix wheel vehicle drive when
EnableSimulation
is disabled - Fix
WheeledVehicle
driving inDrive4W
mode when wheels are in custom order - Fix managed UTF-8 string allocation not using correct encoding
- Fix incorrect focus on Character Controller
- Fix right click deselecting scene tree nodes
- Fix white window flickering in context menus
- Fix editing array of tags in Editor that is
null
initially - Fix Vulkan shader compilation with source files missing the last newline
- Fix rare issue when script could be deleted when working with Visual Studio 2022
- Fix Rider 2022 not being detected when installed with toolbox (Windows and Linux)
- Fix
Dictionary
andHashSet
iterators to prevent unwanted data copies - Fix
ShaderGraphValue
floating numbers are formatted with enough precision - Fix applying prefab changes to nesting prefab instances
- Fix editor window from maximizing/minimizing on menu button double click
- Fix whitespace when opening context menu with spacebar
- Fix
EditorModules
in Assembly lookup paths to be properly included - Fix being able to create folder from project folder
- Fix renaming folders in Editor with dot character (
.
) - Fix typing
DEL
character in Text Boxes - Fix Slider clipping left most pixel
- Fix right clicking on source folder to sometimes select non-visible child
- Fix not capturing the the
Debug.Log
line in the Debug Log window - Fix error when model is missing in Editor for prefab editor
- Fix
iphonesdk
is not required to build macOS Editor (and check for iOS tools on Mac) - Fix x64 editor/runtime on M1/2 macs
- Fix launching Rider on macOS
- Fix build scripts to detect only supported versions of
MSBuild
- Fix missing
Variant
marshalling for scripting structures bindings - Fix non-windows platforms
csproj
files - Fix error when loading project on non-ASCII path
- Fix editor window closing when using camera flight
- Fix
Actor.RotateAround
to rotate the actors orientation - Fix bool editor when null
- Fix blur panel to draw self
- Fix issue with blur strength slider
- Fix HScroll bar from covering nodes in scene and prefab tree windows
- Fix initial Editor window size to not cover task bar on start
- Fix issue of game window not returning focus to parent on mouse leave
- Fix nested profiler events usage
- Fix potential missing editor font bug
- Fix Editor viewport camera drifting with odd viewport sizes
- Fix creating prefabs directly from prefab objects
- Fix missing debug shapes drawing when skeleton node gets selected
- Fix model asset previews to wait for materials to be loaded
- Fix minor issues with OpenFBX (backported specific * Fixes)
- Fix imported fbx file from Blender to use proper Up axis
- Fix model importer to use precomputed Offset Matrix for skeletal model bones
- Fix applying scale to imported models with Assimp
- Fix using
DefaultFrameRate
for animation imported with Assimp - Fix importing skinned models with meshes that don’t have valid skinning to properly link into the node’s bone
- Fix model importer to use precomputed Offset Matrix for skeletal model bones
- Fix scenes objects creation to happen after actors transformations and bounds are initialized
- Fix performance bug in Development/Release builds due to incorrect draw calls batching (uninitialized memory)
- Fix loading shared managed assemblies multiple times
- Fix AnimatedModel box
- Fix particle effects not working properly at high framerate
- Fix deduplication of vertexs to respect vert colors
- Fix shader compilation tracking to check for directory existence
- Fix VisualScript method calls not working with value types
- Fix VS Code missing build tasks in C#-only projects
- Fix VS Code build and launch tasks for plugins, dependencies and duplicates
- Fix building rules assemblies to use the latest C# version
- Fix Visual script parameter item duplication bug
- Fix potential incorrect null checks in
FlaxEngine.Objects
- Fix IES profile light computation formula
- Fix
Tag
deserialization in cooked game - Fix spatial audio playback when clip is set after the audio source was enabled
- Fix
AudioClip
loading error when buffer start times diff has rounding error - Fix various issues with audio clip data buffers to reduce artifacts (especially when using 24-bit data)
- Fix various issues with OpenAL buffers playback (do proper bit convertion)
- Fix
AssetsCache
to include project path and reject cache when project gets duplicated with cache - Fix editor tabs control size for tab header when scroll bar is visible
- Fix preserving editor minimized floating windows in saved layout
- Fix removing large amount of assets in Editor at once
- Fix updating time left when destroying large amount of objects
- Fix sprite shadow to match the sprite facing camera
- Fix
NavCrowd
to properly wait for navmesh loaded - Fix script serialization failures from removing scripts that have exception errors
- Fix animation graph transition data from source anim info
- Fix double engine assembly init in Editor
- Fix plugins initialization order to properly unload scenes before them in cooked game
- Fix Editor viewport camera transformation getting corrupted when focused
- Fix Editor gizmo sizes in orthographic viewport mode
- Fix opening plugin project files in Visual Studio
- Fix audio preview for multi-channel audio clips
- Fix various issues when playing audio with
XAudio2
backend (Windows and Xbox) - Fix color picker on Linux
- Fix deadlock in
Foliage::GetFoliageTypeInstancesCount
- Fix missing particle layout attributes when using Particle Emitter Function
- Fix invalid particle attributes access inside emitter function
- Fix particle emitter function cache clearing for GPU shader generation
- Fix particle attributes usage in GPU emitter function
- Fix C# objects serialization bug when script throws exception during saving to Json
- Fix logging performance and crashes on non-Windows platforms
- Fix
HandleObjectDeserializationError
to be editor or dev only and thread-safe - Fix setting up prefab objects ids mapping for nested prefabs to link cross-object references correctly
- Fix asset load to trigger loading task within mutex to prevent race conditions when loading the same prefab from many threads at once
- Fix main menu popups misalignment on Linux
- Fix window placement hints on Linux
- Fix incorrect mapping of Alt key on Linux
- Fix build project generation under Arch Linux
- Fix
GetVirtualDesktopBounds
for Linux - Fix double-click on Linux to use maximum distance between clicks
- Fix
Cannot find compatible metal driver
on macOS due to the newest Vulkan SDK regression - Fix C#-only game projects to reference
precompiled DLLs
instead ofFlaxEngine.csproj
- Fix generating VS configurations for Win32 and engine projects
- Fix Visual Studio solution project to ensure that main project is the first one
- Fix compilation with the latest Visual Studio 2022
17.7
- Fix compilation error due to exposed public
CommonValue
inclusion - Fix missing Visject CM groups auto-expanding if enabled
- Fix missing C++ standard version in VC++ projects intellisense options
- Fix
WindowsPlatform::LoadLibrary
to not modify the string parameter - Fix error when calling Network RPC on despawned object
- Fix crash when C# marshalling array with PostFxMaterialSettings Materials
- Fix crash when using
Vector3
soft casting in Visual Scripts - Fix crash to soft-return if managed event bind target object native instance is gone
- Fix crash when baking lightmap for terrain with missing patch texture
- Fix crash on Linux when using unmapped keyboard Keyboard
- Fix crash when using custom Anim Graph node (.NET 7 regression)
- Fix crash when max files open limit is too small on macOS/iOS
- Fix crash due to ManagedObject reference copy in
Variant
- Fix crash on terrain export in Editor
- Fix crash when window gets removed during windows update loop
- Fix crash with
XAudio2
backend when source is playing - Fix crash if
OpenAL
internal device name is all whitespaces - Fix crash when unboxing managed structure with refs into
Variant
- Fix crash when boxing native array to managed value
- Fix crash when copying and pasting in same folder as clone
- Fix crash when toggling
WheeledVehicle
active state - Fix crash when generic classes spanned across different assemblies
- Fix crash when loading C# assembly from non-ASNSI path
- Fix crash when setting material instance base material before it’s loaded
- Fix crash due to invalid message in Assimp
- Fix crash in C#
JobSystem.Dispatch
due to GC collecting Delegate object - Fix crash when importing model with materials and
Split Objects
enabled - Fix crash when D3D11 backend fails to create shader due to driver failure
- Fix crash when spawning large amount of network objects at once by sending spawn message in parts
- Fix crash when implementing
INetworkSerializable
in C#-only - Fix crash when updating GPU particle system without view buffers allocated
- Fix crash when importing assets in Editor (race-condition from Content Importer thread)
- Fix crash when using Visual Script runtime in async
- Fix crash when generating project files with toolchain setup that fails
- Fix crash on Vulkan when drawing shader without binding proper constant Buffer
- Fix crash when creating empty particle emitter