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 4 · Slice 5 Saving to .unity scene_save to a .unity path patches the file the scene came from, measured against the scene as exported when opened: untouched documents stay byte for byte (a save… Phase 4 · Slice 4 Reviewing agent edits editor_core credits each transaction to a person or an agent; an agent's are pending until accepted or reverted. Reverts are selective: any transaction can go, as long as… Phase 4 · Slice 3 C# hot reload Script assemblies (--scripts DLLs, a Unity project's Assembly-CSharp) load from bytes into collectible load contexts that share the engine assemblies; a reload loads the new build into a… Phase 4 · Slice 2 Unity scenes in the editor Imported scenes become editor objects: built without running anything, written in the scene format (built-in settings that differ from a new component's, every script field), then destroyed. Scene… Phase 4 · Slice 1 Playing Unity projects tassix_unity_yaml: Unity's YAML dialect (document headers with class and file IDs, stripped placeholders, block and flow collections, wrapped quoted and plain scalars, untyped scalars kept as strings). Parses… Phase 4 MCP builds without client restarts tassix_mcp_launcher is what .mcp.json starts: it runs the build cargo xtask mcp names in target/mcp/current.json and relays the session. When a newer build is installed it swaps between… Phase 3 · Slice 5 Audio, scenes and PlayerPrefs Audio (tassix_audio: cpal output, symphonia decoding of WAV/Ogg/MP3/FLAC, own mixer with resampling and gain ramps; a manual 48 kHz clock when headless): AudioSource with Unity's defaults and clamps:… Phase 3 · Slice 4 Joints and CharacterController CharacterController on PhysX's capsule controller, as Unity's: Move with collide-and-slide, stepOffset, slopeLimit, skinWidth and minMoveDistance. CollisionFlags (not a [Flags] enum, as in Unity), isGrounded and… Phase 3 · Slice 3 2D physics and the 2D platformer Backend: Box2D 2.4.2 (MIT) vendored and compiled with a small C shim (crates/physics2d). Unity's Physics2D runs Box2D v2 with its tuning constants exposed as settings; ours are patched… Phase 3 · Slice 2 Input and Roll-a-Ball Legacy Input: GetKey/Down/Up by KeyCode or Unity key name, mouse buttons, mousePosition, mouseScrollDelta, anyKey/anyKeyDown, and GetAxis/GetAxisRaw/GetButton* over Unity's default InputManager axes (Horizontal/Vertical… Phase 3 · Slice 1 3D physics Backend: NVIDIA PhysX 5.1 through physx-sys (Unity uses PhysX 4.1, so contacts and the solver behave alike). The bindings are archived upstream; we build the bundled PhysX source… Phase 2 · Slice 5 FBX import, Resources and Instantiate FBX (tassix_import, through ufbx): binary and ASCII FBX (and OBJ) converted as Unity's ModelImporter does with default settings: X mirrored and winding swapped, the axis system converted by… Phase 2 · Slice 4 Frame pipelining Render thread: the player extracts each frame on the main thread into a self-contained FrameExtract (FrameBuilder), and a render thread uploads, encodes, submits and presents it (FrameRenderer). Two… Phase 2 · Slice 3 GlTF import and submeshes Import (tassix_import): glTF 2.0 files (.gltf/.glb, external or embedded buffers and PNG/JPEG images): node hierarchy, meshes with one submesh per primitive, base color factor and texture (with KHR_texture_transform)… Phase 2 · Slice 1 3D basics Renderer (tassix_render, wgpu 30): reverse-Z depth, left-handed view, clockwise front faces, draws sorted by mesh and instanced (one draw call per mesh), lit shader with one directional light… Phase 1 · Outcome Phase 1 outcome milestone met. 10 conformance scenarios (the recorded spec, ~840 events) recorded in Unity 6000.2.10f1 pass (lifecycle, object lifetime, coroutines, Mathf, vectors, rotations/matrices, world-space transforms, value…