Updates

Progress, a slice at a time.

Every slice that lands is written up in the plan with what it does, how it was checked, and what's next. These are those write-ups, newest first.

Phase 6 · Slice 22 UI Toolkit stage 2 (binding and collections) Unity.Properties: PropertyPath (names, indices, keys; combine, append, pop, sub-paths), PropertyContainer get/set by the property bag rules (public and [SerializeField] fields, [CreateProperty] members; a dictionary key… Phase 6 · Slice 21 UI Toolkit (stage 1 of 3, for UnityChess) UnityEngine.UIElements in the core module: VisualElement (hierarchy and content containers, classes, names, Q/Query and UQueryBuilder, enabled state, pseudo-states, schedule, layout, worldBound, contentRect, coordinate… Phase 6 Corpus run after the UI Toolkit slices All 23 projects play as before (no regressions); 22 compile. What's left, by cause: Project-side (Unity shows the same): Tower-Defense-Game's two prefab variants are of store prefabs that… Phase 6 · Slice 20 The Skybox component A camera's Skybox component draws its material's sky behind that camera (render texture cameras too): the renderer takes per-view sky overrides for the sky pass and its uniforms;… Phase 6 · Slice 19 Serialization callbacks and corpus warnings ISerializationCallbackReceiver runs where Unity runs it (serialization_callbacks, 6000.3): after loaded fields (nested first), around Instantiate, in JsonUtility. Odin's SerializedMonoBehaviour fields now load through… Phase 6 · Slice 18 CompositeCollider2D Colliders marked usedByComposite (compositeOperation Merge) hand their outlines to the CompositeCollider2D on their Rigidbody2D and stop colliding themselves. The composite unions them with i_overlay (MIT/Apache-2.0)… Phase 6 · Slice 17 Immediate drawing into render textures GL, Graphics.DrawTexture and DrawMeshNow draw into RenderTexture.active (or SetRenderTarget's texture) when one is set: their triangles go to the native side as each call ends and replay in… Phase 6 · Slice 16 Render textures Render textures are drawn into: cameras with a targetTexture render before the screen's (each on its own, with the texture's aspect and the background's alpha), Graphics.Blit (its own… Phase 6 · Slice 15 The grown corpus All nine new projects compile and load (23 in the corpus; 21 compile, the same two as before don't). Closed on the way: Unity's second UnityEngine.UI.dll GUID; Photoshop… Phase 6 · Slice 14 Sprite sheets, UI animation, max texture size SwampAttack's props floated in the sky: sprite sheets (Sprite Mode Multiple) weren't imported at all, so every sprite of a sheet was the whole texture. sprite_sheets (6000.3): a… Phase 6 · Slice 13 Corpus: binary files, load order, IMGUI, tilemaps Unity's binary serialization (crates/unity_yaml/src/binary.rs): scenes, prefabs, assets and project settings saved as "Force Binary" (or "Mixed", Unity's default before 2019), format versions 9 to 22, read through their… Phase 6 · Slice 12 WheelCollider wheel_colliders (6000.3, the Vehicles module added to the conformance project): a wheel's defaults, sprung masses, and a 1000 kg car settling, accelerating on rear-wheel torque, braking and turning,… Phase 6 · Slice 11 TextMesh text_meshes (recorded in 6000.3): TextMesh's defaults and the bounds its text gives its renderer. What Unity measures: the text's box, not its glyphs: each character's rounded advance at… Phase 6 · Slice 10 Binding compatibility cargo xtask api-coverage also writes docs/compatibility/api-bindings.md: every public member of a Unity type Tassix has, checked by the signature compiled code binds to (declaring type or a base,… Phase 6 · Slice 9 Corpus: scenes and Json.NET A project without build scenes plays one of its scenes (a menu or main scene when there is one, logged; Unity's editor would play the last scene open,… Phase 6 · Slice 8 Vertex colors Meshes carry vertex colors to the GPU: Mesh.colors/colors32 upload (a new mesh_set_colors, native API 40) when there's one per vertex, into MeshData::colors (RGBA8, empty for white). Every vertex… Phase 6 · Slice 7 Unity 6000.3 baseline, lines and trails Recordings move to Unity 6000.3.27f1, the 6.x LTS (conformance/UNITY_VERSION; xtask also finds editors in the Hub's custom install location). All 56 scenarios re-recorded. What 6000.3 changed: three new… Phase 6 · Slice 6 The project corpus corpus/projects.json pins 14 MIT-licensed Unity projects (Unity 5.3 to 6000.2); cargo xtask corpus fetches them into target/corpus, plays each headless for 300 frames and ranks what their logs… Phase 6 · Slice 5 Common API gaps 3D physics (physics_queries): SphereCastAll/BoxCastAll/CapsuleCastAll on PhysX's sweepMultiple and their NonAlloc forms, OverlapBox/OverlapCapsule NonAlloc, the CapsuleCast overload without a hit; initial overlaps… Phase 6 · Slice 4 MonoBehaviour.Invoke Invoke, InvokeRepeating, CancelInvoke (all or by name) and IsInvoking (Scripting/DelayedCalls.cs), from a new invoke scenario recorded in Unity: calls run after Update (after the coroutines) once due before… Phase 6 · Slice 3 Documentation and the compatibility matrix docs/: an index, getting started, Unity projects (what is read, how scripts compile, porting checks), packaging (the folder, cooking, NativeAOT with its numbers and limits), agents and MCP,… Phase 6 · Slice 2 NativeAOT builds dotnet/Tassix.Native: the managed runtime published with NativeAOT as one shared library. Bootstrap's [UnmanagedCallersOnly] entry points carry export names (tassix_initialize, tassix_frame...), exported from the… Phase 6 · Slice 1 Packaged players L3 was already in place (Phase 4 slice 10): plugins built against Unity's module assemblies bind to Tassix through Roslyn-generated type-forwarding facades, covered by an e2e fixture plugin.… Phase 6 Splash screen with the Tassix logo A windowed player (development or packaged) opens its window first: the render thread draws the splash on its own (every 16 ms while no game frame comes) while…