Flax Engine Update 1.7.6404

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!

Download

Feel free to discuss the update here :slight_smile:

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 to ModelInstanceActor 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 to CustomEditorPresenter
  • Add Variant::AsStructure() to comparision operator between VariantType and ScriptingTypeHandle
  • 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 to Span 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 and RenderView to Camera 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 for Vector2 and Vector3
  • Add BaseLinesGapScale configurable for Label
  • Add improved mouse wheel scrolling behavior in UI
  • Add handling double clicking in CheckBox, Button, Dropdown and DropPanel 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 and AxisChanged event to InputAxis
  • Add SelectionChanged public event for VisjectSurface and properly invoke it only when selection actually changes
  • Add ignoring types with CompilerGeneratedAttribute in Editor
  • Add ScriptingType to msvc natvis
  • Add GetColliders utility to RigidBody
  • Add allow using CustomValueContainer as readonly if setter action is null
  • 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 as Object.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 to API_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 to Button 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 and Origin to ProgressBar 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 and InputAxis editors with pickers
  • Add InputEvent for UICanvas 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 and BroadPhaseType 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 to DrawCall 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 and UnwindDegrees 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 and onContact callback
  • Optimize CultureInfoEditor and TagEditor 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 to 1.6
  • Update CSharp script template to use non-indented namespace
  • Update custom pugixml changes to pugixml_extra
  • Change Debug to be static
  • Changed Input.ActionTriggered event to pass aditionall InputActionState value
  • Change default dead zone in mouse axis input to 0 (in Flax Samples)
  • Disable assertions in Release build mode
  • Rename GPUPipelineState::Description::PrimitiveTopologyType to PrimitiveTopology
  • 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’s OnEndPlay to prevent issues in scripting
  • Refactor splash screen quotes
  • Refactor std::function usage into Function inside ArrayExtensions
  • 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 and UnwindDegrees 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 using int
  • 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 in Drive4W 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 and HashSet 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 of FlaxEngine.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
6 Likes

very nice
stress test project is much more faster / reset scene is waaay more faster

Sadly 1.7 fails to run in my PC, which runs 1.6 with no problem.

I had execution issue with 1.6+ ‘master version’, but still couldn’t made it with official 1.7…

Messagebox shows :
Failed to initialize editor! Object reference not set to an instance of an object.

and log shows exception occurs in editor’s viewer code.

Please report this on Github Issues with log file attached (from project folder subdir Logs) so we can fix it: Issues · FlaxEngine/FlaxEngine · GitHub

Hello friends. I have been following this engine in recent weeks and I have noticed that in recent months it has had a noticeable increase in updates, despite having been in activity for more than 10 years. I am a Unreal Engine user but I am looking for something lighter. I understand that Flax is a software in a clear development process and has a lot to achieve, but what I have seen interests me quite a bit. My question is, visually and functionally is it closer to Unreal as an engine or to Unity? How would you describe it? Thanks and keep up the good work.

It seems a new feature ‘Collapse’ in Debug Log was added which is great! But I see no mention of it here? Seems traceback for Debug Logs is not working for me anymore. Was this put into an option that can be turned on or off? I do not see it in the options.