Changelog - v6.2.0-beta9
Range: 2f03749..aa118e5, 25 commits.
Feature
New Authored Systems
- Loading Menu system. Scene-based loading screens with
LoadingMenu.Open/Close/SetMenuSceneLua API,Loading.*SignalBus channels, per-project default loading scene in AppSettings, and "Loading Min Display" minimum. Survives the root scene swap viaNode:SetPersistent(true). New files:LoadingMenu.cpp/h,LoadingMenu_Lua.cpp/h, full docs. - Transform Animation system.
TransformAnimationAsset(keyframed transform clip, loop/play-rate/duration),TransformAnimationNode3D,TransformAnimationWidget, full Lua bindings, Timeline integration via newTransformAnimationClipandTransformAnimationTrack,TransformKeyframeas a first-classDatumvalue type. - Audio Analysis API. Cross-platform real-time audio analysis:
AUD_GetRMS,AUD_GetLoudness,AUD_GetLoudnessDb,AUD_GetFrequencies,AUD_GetSpectrum, plus streaming variants (AUD_GetStream*). Lua bindings on free voices and onAudio3D. Works on XAudio2, ALSA, PulseAudio, ASND (Wii and GameCube), NDSP (3DS), console addons. New files:AudioAnalysis.cpp/h. - Image Plane feature. Drag-a-texture-into-scene auto-builds a paired
SM_<base>plusM_<base>. Editable pivot (Center, BottomCenter, TopLeft), size mode (AspectWidth1, AspectHeight1, PixelsPerUnit), shading model, blend mode, two-sided. Reuses existing image-plane meshes. New files:ImagePlaneBuilder.cpp/h. - Asset Fixup Modal. Post-load scan finds widgets whose
Asset-typed properties were bound to the wrong-type asset; per-row picker to rebind, clear, or skip. New files:AssetFixupModal.cpp/h. - Editor Alert Modal system.
EditorShowAlertqueues non-fatal alerts; multiple alerts batched into one walk-through modal. Used by the newNode::AddChildself-pointer corruption guard.
Audio
- New 3D audio one-shots at a world position (fire-and-forget spatial playback) and seek on
Audio3D. AudioManagergeneric API extended with helper functions for visualization-friendly playback.- New
Audio_Luabinding surface for the generic non-node audio API.
Editor and UX
- Categorized "Add Node" menu. Scene Hierarchy
+groups 3D and Widget children into sub-buckets; addons auto-group underAddons/<id>unlessPolyphaseEngineAPI::SetNodeCategoryis called. - New
LaunchersModulein Preferences > External for managing external launcher tools. - Native addon shadow-copy load path. Addons are staged into a shadow directory before
LoadLibrary, so file locks don't pin the original DLL across hot-reloads.InvalidateAddNodeMenuCachefor refreshing node categorization. - Asset name clash dialog at import time.
ActionManagerdetects collisions and suggests unused names before write.
Platforms
- Android, production pass.
- App settings, app label, app icons, orientation now respected end-to-end (Gradle, Manifest, resources).
- Addons now build and link on Android (
InjectNativeAddonsIntoCmake,AddonInject.cmake, CMakeListsinclude()). - Per-density PNG launcher icons replacing the old
.webpset. - Big-endian and addon-platform guards in
Scene.cpp,StaticMesh3D.cpp,World.cpp,Renderer.cpp,HttpClient.cpp,FileWatcher.h,SoundWave.cpp.
- PSP, working cleanly. All engine-side stubs, big-endian guards, decompression hooks, mutex guards, and HTTP fallbacks needed for the PSP build-target addon to compile and run without engine forks.
- Build-target addons, skeletal meshes.
SkeletalMeshandSkeletalMeshCompResourcenow expose thePOLYPHASE_PLATFORM_ADDONarms required for CPU skinning on console addons. - Build-target addons, input system.
InputConstants.hconsole fallback closed; build-target addons reach the full input system. - Gaussian Splatting and Vulkan addon handles. New
GfxVulkanAddonHandlessurface inGraphicsVulkanAddon.h; camera-facing translucent splats supported through the engine's render order; new Vulkan pipeline and context plumbing for addon-submitted draw calls.
Engine Infrastructure
LUA_ENABLEDflag inConstants.h. Lua support on by default everywhere.Datumextended withTransformKeyframeserialization, copy, move, and comparison.Propertysystem extended with the new keyframe type, plus matchingProperty_Luabindings.ScriptUtilsrefactored from set to map for tracking loaded Lua files; newClearLoadedScriptsfor clean project reload; script registry cleared onLoadProject.- New
SystemUtilsjob-object support on Windows for cleanly terminating subprocesses with their children.
Bug
- glTF vertex colors. Assimp's
ExtractDatawas never normalizing integerCOLOR_0accessors, so Blender's normalized USHORT colors came in scrambled (blue to red). Fixed inglTF2Importer.cpp. - HTTP in Shared editor builds. Duplicate
HttpResponseclasses between the AutoUpdater and the engine were COMDAT-folded and corrupted the heap in Shared builds. Renamed AutoUpdater's toUpdaterHttpResponse. - Editor crashes, multiple. Null-check in
Renderer.cppcollision-shape setup; safer self-pointer handling inNode::AddChildandNode.hpointer resolution; XAudio2 init error paths inAudio_Windows.cpp. - Packaging non-embedded builds. Builds that ship assets on disk (not baked) now resolve assets by UUID correctly.
- Texture save round-trip.
Texture::SaveStream's non-cooked LQ downsample branch was shrinking editor.octfiles every save and load cycle; now skipsPlatform::Count. - Android builds with addons. Fixed multiple regressions where addons either didn't link, didn't expose Lua tables, or silently degraded at runtime.
Node::AddChildcorrupt-self-pointer crash. Now detected and routed to the alert modal instead of taking the editor down.btConvexConcaveCollisionAlgorithm. Additional guards for collision setup.World.cppmutex handling. Adjusted for compatibility with addon platforms lacking full threading.SYS_Execblocking. Routed throughSYS_ExecDetached; long external commands no longer freeze the editor.
Deprecated
- Old Android launcher icon set. The
mipmap-*/ic_launcher.webpplusic_launcher_round.webpassets and thedrawable*/ic_launcher_*XML vectors are removed in favour of per-density PNGs. - Hardcoded Android app name and package paths. Old
appname-rooted Java source paths replaced by the AppSettings-driven layout. - Blocking
SYS_Execfor editor-triggered external commands. UseSYS_ExecDetached; the synchronous path is no longer the default for editor flows.
Chore
Documentation
- Multiplayer guide. End-to-end Lua multiplayer tutorial (authoritative-server model, sessions, lifecycle, replication, RPCs).
- AudioVisualizer guide. Covers RMS, Loudness, Frequencies, Spectrum from both Lua and C++.
- LoadingMenu guide. Development plus Lua/Systems pages.
- Audio3D docs expanded for one-shots and seek.
- Audio systems docs expanded for the new generic functions.
- SignalBus docs clarified, listener role, examples, and warnings on
Subscribe. - CustomBuildTarget docs added.
- Network systems docs updated for the new tooling.
mkdocs.ymlupdated for the new sections.
Refactors and Maintenance
AssetManagerreworked for the asset-clash and fixup flow.ActionManagerextended with the asset-name-clash modal logic and unused-name suggestion (roughly 1k LOC of editor flow).EditorImguireorganized to host the new modal and alert system and the categorized Add Node menu (roughly 1k LOC).Engine.cppscript-file change handling cleaned up for path consistency.NativeAddonManagergains shadow-copy staging and sweeping (roughly 600 LOC).PackagingWindowflows refreshed.PlayerInputEditorupdates.- Several
*Platform_*Types.hregenerations underStandalone/Generated/. .gitignoreandAddonInject.mkhousekeeping.- Big-endian-friendly tweaks across
Scene.cpp,StaticMesh3D.cpp,SoundWave.cpp,Renderer.cpp,World.cpp,FileWatcher.h,Datum.h. Audio_3DS.cpp,Audio_Dolphin.cpp,Audio_Linux.cpp,Audio_Windows.cpp. Uniform tweaks to plug into the new audio analysis API.HttpClient_Linux.cppandHttpClient_Windows.cpprefactors alongside the AutoUpdater ODR fix.- Log subsystem gains additional state info for debugging.
.claude/skills/polyphase-buildtarget/SKILL.mdsignificantly expanded.- Removed
LuaDebugger.cppstray line; cleanedAsset.cppandAssetRef.cpp.
Statistics: 228 files changed, 14,140 insertions, 953 deletions.