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 46 The corpus’s next small APIs Checked by a new corpus_apis_3 scenario recorded in 6000.3 (the conformance project gains Unity's terrain and terrain physics modules): GeometryUtility (CalculateFrustumPlanes from cameras and matrices, in Unity's order… Phase 6 · Slice 45 A third round of corpus projects Fourteen more MIT projects in corpus/projects.json (37 in all): an RTS tutorial, a third-person controller, an FPS maze, gravity racing, a roguelike, two tower defenses, a 3D platformer… Phase 6 · Slice 44 Lights, shadows and GrabPass in project shaders The custom shaders' per-camera buffer carries the view's own shading data: the main light's shadow matrix, strength, softness, biases and fade distance, and the point and spot lights… Phase 6 · Slice 43 Dragging to reorder Unity's animated dragger does take pointer events sent through a panel, so the ui_toolkit_list_drag scenario records it: canStartDrag on the press (its id, selected ids and the item's… Phase 6 · Slice 42 A TextMeshPro build per project version TextMeshPro 3.2 (Unity 2023.2 and later) made the first UVs Vector4s (TMP_MeshInfo.uvs0, TMP_Vertex.uv); scripts written for earlier versions say Vector2[] and don't compile (or run) against the other.… Phase 6 · Slice 41 Lighting includes Tassix's own Lighting.cginc, UnityLightingCommon.cginc and AutoLight.cginc (UnityLight, UnityGI, SurfaceOutput, Lambert and Blinn-Phong lighting, _SpecColor, the shadow and attenuation macros at 1), ShadeSH9 and the… Phase 6 · Slice 40 Custom shaders crates/shaderlab (tassix_shaderlab): ShaderLab parsed (properties with their defaults and attributes, Category, SubShader and pass tags, render state fixed or from properties, inherited down, CGPROGRAM/HLSLPROGRAM with… Phase 6 · Slice 39 Contextual menus and column resizing DropdownMenu (actions with status callbacks and user data, separators not after another or at the start, inserting, removing, PrepareForDisplay asking each action its status (None until then), Execute… Phase 6 · Slice 38 Tree controllers and MultiColumnTreeView BaseTreeViewController, TreeViewController and DefaultTreeViewController over the tree's model: root and all ids (each root's children, then the root, as Unity lists them), parents, children, child indices, depth… Phase 6 · Slice 37 MultiColumnListView Column (name, title, icon, widths with Unity's defaults, visible, sortable, stretchable, optional, resizable, comparison, makeCell, bindCell, unbindCell, destroyCell, makeHeader, bindHeader, templates) and Columns… Phase 6 · Slice 36 ListView editing View controllers: CollectionViewController (source, ids, items by index and id, making and binding through the view, events), BaseListViewController (AddItems with the source's default values, Move, RemoveItem… Phase 6 · Slice 35 Foldout Foldout: a Toggle (its text in a label inside the input) and a content container (unity-content) its children go into, hidden (inline display) while the value is false;… Phase 6 · Slice 34 TreeView BaseTreeView and TreeView over the virtualized collection view: SetRootItems with TreeViewItemData, rows of the items whose parents are all expanded (itemsSource), each a row element with an indent… Phase 6 · Slice 33 Virtualized ListView Collection views keep a pool of the viewport's worth of items plus two (fixed heights: the viewport over the item height; dynamic: over the smallest height measured), bound… Phase 6 · Slice 32 UI Toolkit composite fields BaseCompositeField with Vector2Field, Vector3Field, Vector4Field, Vector2IntField, Vector3IntField, RectField and RectIntField: a FloatField or IntegerField per part (named unity-x-input and so on, labelled X, Y, Z, W… Phase 6 · Slice 31 UI Toolkit numeric fields TextValueField and IntegerField, LongField, UnsignedIntegerField, UnsignedLongField, FloatField and DoubleField: Unity's structure (their own input elements, the label's dragger class), defaults (maxLength 1000; format… Phase 6 · Slice 30 The executable’s icon The player's executable carries the Tassix icon: apps/player/tassix.ico (16 to 256 pixels; written by tassix_player --export-icon with no game) becomes a compiled resource file in the player's build… Phase 6 · Slice 29 CompositeCollider2D.offsetDistance After its operations, a composite grows by offsetDistance, shrinks by twice it and grows by it again, each time with square corners (cut across the bisector at the… Phase 6 · Slice 28 UI Toolkit transforms and transitions Transform styles: translate, rotate, scale and transform-origin from scripts (Translate, Rotate, Angle, Scale, TransformOrigin and their Style wrappers) and USS (lengths and percentages, deg, grad, rad and turn… Phase 6 · Slice 27 UI Toolkit input controls Keyboard: this frame's key events (without taking them from IMGUI) go to the focused element as KeyDownEvents; unless stopped, Tab and Shift+Tab move the focus in tab order,… Phase 6 · Slice 26 The window icon A windowed player's title bar and taskbar show an icon: a Unity project's own (ProjectSettings.asset's m_BuildTargetIcons: the largest icon for Standalone, else the default one, decoded by the… Phase 6 · Slice 25 Composite operations CompositeCollider2D combines its members in composite order (equal orders keep hierarchy order), each by its Collider2D.compositeOperation on what the ones before made: Merge (union), Intersect, Difference and Flip… Phase 6 · Slice 24 2D effector forces AreaEffector2D, PointEffector2D, SurfaceEffector2D and BuoyancyEffector2D act after each 2D step on the dynamic bodies touching their colliders (the step's own contacts, triggers included through a new native list… Phase 6 · Slice 23 Addressables (UI Toolkit stage 3); UnityChess plays Unity.ResourceManager and Unity.Addressables as provided packages (com.unity.addressables): the catalog is the project's addressable groups (Assets/AddressableAssetsData/AssetGroups: addresses, labels, asset GUIDs…