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 5 · Slice 19 Unity.Mathematics A Unity.Mathematics assembly (same name and namespace as the package): the vector and matrix types over bool, int, uint, float, double and half come from dotnet/Unity.Mathematics/generate.py (constructors, conversions… Phase 5 · Slice 18 Off-mesh links Links reach the native side (NavMesh.AddLink/RemoveLink, the NavMeshLink component, API 31): paths search a graph whose nodes are the start, the end and the links' ends, with walks… Phase 5 · Slice 17 2D shadows and normal maps ShadowCaster2D casts: its outline (a shape path; a sprite renderer's bounds, where Unity's editor takes the sprite's own outline; or, as Unity falls back, its renderer's bounds or… Phase 5 · Slice 16 2D lights Sorting layers are real: the project's TagManager layers (Unity scenes, the MCP's projects, the conformance project), with Unity's IDs (saved unsigned), names and values relative to Default; renderers… Phase 5 · Slice 15 Navigation A new tassix_navigation crate vendors Recast Navigation 1.6.0 (zlib: Recast and Detour, unmodified) behind our own C shim. It bakes as Unity's bakes show: voxels a third of… Phase 5 · Slice 14 Particles ParticleSystem simulates on the CPU in managed code, after LateUpdate: the main module, emission by time and distance with bursts (cycles, intervals, probability), and the common shapes; velocity,… Phase 5 · Slice 13 URP post-processing New assemblies with Unity's names: Unity.RenderPipelines.Core.Runtime: Volume, VolumeProfile, VolumeComponent, every common VolumeParameter type, VolumeManager and VolumeStack; Unity.RenderPipelines.Universal.Runtime… Phase 5 · Slice 12 Cubemaps and reflection probes Cubemap: six faces in Unity's order with row 0 at the top; SetPixel/GetPixel/SetPixels/GetPixels store colors as the format does (8-bit rounding, half floats); mipmaps; Apply uploads half floats,… Phase 5 · Slice 11 The editor’s RenderSettings and skyboxes The MCP editor keeps a scene's RenderSettings: a set_render_settings command (undoable and reviewable, checked against RenderSettings' property names; null resets one); scene_open reads them from .unity scenes and… Phase 5 · Slice 10 PBR maps and RenderSettings Material maps: normal maps (with _BumpScale / glTF's scale), in a tangent frame computed per mesh on upload with Unity's handedness; metallic maps (Standard's and URP's R metallic,… Phase 5 · Slice 9 Text entry and dropdowns InputField and TMP_InputField, sharing one editing core: typing with validation by content type (integer, decimal, alphanumeric, name, email; TMP's digit, regex and custom validators) and the character limit;… Phase 5 · Slice 8 Scrolling and masks ScrollRect: dragging, the scroll wheel and normalized positions; clamped, elastic (rubber-band overstretch, spring back) and unrestricted movement, with inertia; scrollbars that follow and drive it, auto-hiding (and… Phase 5 · Slice 7 Lighting and shadows Physically based shading in the manner of URP's Lit for Standard, URP Lit and glTF materials: metallic and smoothness, a GGX highlight, and emission (Standard's needs _EMISSION, as… Phase 5 · Slice 6 UI input UnityEngine.EventSystems in the UI assembly: EventSystem, the event data (PointerEventData, AxisEventData), every handler interface, ExecuteEvents and EventTrigger; GraphicRaycaster, PhysicsRaycaster and… Phase 5 · Slice 5 UI text Fonts: Font with a dynamic glyph atlas, rasterized natively with fontdue. The atlas grows and rebuilds when full, raising Font.textureRebuilt. CharacterInfo, RequestCharactersInTexture, GetCharacterInfo. Liberation Sans… Phase 5 · Slice 4 UGUI graphics Graphic, MaskableGraphic, Image and RawImage in UnityEngine.UI, with VertexHelper, BaseMeshEffect, Shadow, Outline, CanvasUpdateRegistry and GraphicRegistry. Dirty layouts rebuild first when the canvases update, then… Phase 5 · Slice 3 UGUI layout RectTransform in CoreModule; it takes the Transform's place on the same native transform when added, as in Unity. Anchors, pivot, size delta, anchored position and offsets, with the… Phase 5 · Slice 2 The Animator AnimationClip from .anim files, using the curves Unity plays: position, rotation (quaternion or Euler, with the clip's rotation order) and scale by path; float curves on components by… Phase 5 · Slice 1 The Input System Unity.InputSystem, Tassix's own assembly with the package's name and namespaces, so scripts and asmdefs that use it compile unchanged (by name or by the package asmdef's GUID). Devices:… Phase 4 · Slice 10 JsonUtility, plugin DLLs, IDE projects JsonUtility.ToJson, FromJson and FromJsonOverwrite follow a new json_utility scenario recorded in Unity, and match it byte for byte, pretty printing included. Writing follows Unity's RapidJSON writer: floats are… Phase 4 · Slice 9 MCP resources, prompts and exec mcp_server speaks resources, with templates, resources/read and subscriptions, and prompts. After each message, subscribed resources are read again, and notifications/resources/updated goes out for the ones whose… Phase 4 · Slice 8 Assembly definitions A Unity project compiles into the assemblies Unity would make: one per .asmdef, under Assets or in an embedded package, holding its folder's scripts (and .asmref folders), minus… Phase 4 · Slice 7 ScriptableObjects ScriptableObject with CreateInstance(), (Type) and (string), by full or short class name, logging Unity's error for an unknown one. As Unity's trace shows, Awake and OnEnable run inside… Phase 4 · Slice 6 Models in Unity scenes Sub-assets of models by Unity's local file IDs: meshes and materials are xxh64("Type:->") (n counts earlier same-named ones; confirmed with Unity's own AssetImporter.MakeLocalFileIDWithHash). Every…