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.
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…
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…
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…
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…
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…
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,…
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…
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,…
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…
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,…
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;…
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…
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…
UI input
UnityEngine.EventSystems in the UI assembly: EventSystem, the event data (PointerEventData, AxisEventData), every handler interface, ExecuteEvents and EventTrigger; GraphicRaycaster, PhysicsRaycaster and…
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…
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…
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…
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…
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:…
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…
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…
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…
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…
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…