logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    Namespace Serenity.Editor.AnimationHub.Window

    Classes

    AnimationHubAuthoringActions

    The Animation Hub window's authoring controller: turns a row action press into a ModelAnimatorCreator call, logs the outcome to the window's Serenity.Global.Infrastructure.Editor.SerenityWizardActivityLog, and triggers a rescan so the tree reflects the change. Owns the transient row-level UI state authoring needs — the inline Add-State/Rename prompt, and the pending UnityEditor.EditorGUIUtility.ShowObjectPicker``1(UnityEngine.Object,System.Boolean,System.String,System.Int32) clip request — so AnimationHubUnityTabGui stays pure rendering and AnimationHubWindow stays a thin host. Recreated (not serialized) every OnEnable, the same lifetime as the window's _expandedRowKeys set.

    AnimationHubAuthoringPromptGui

    Draws every inline "prompt" row AnimationHubUnityTabGui can open under a row — Add/Rename State and Rename Parameter's plain name field, Add Parameter's name-plus-type-popup, Add Transition's source/destination/condition popup strip, and Set Weight's float field. Split out of AnimationHubUnityTabGui once the tree-rendering file and its prompt rendering together pushed past the ~600-line size guidance — a prompt's own field widgets are one responsibility, which row state and validator findings it renders alongside is another. Every method here is driven purely by an Prompt row-key match, exactly like the tab file's own foldable/leaf row drawing, so which one (if any) renders is decided the same way on both sides of the split.

    AnimationHubAuthoringPromptState

    Which row's inline prompt (Add/Rename State, Add/Rename Parameter, Add Transition, Set Layer Weight) is open, and its buffered field values. At most one prompt is open at a time — opening a second replaces the first, an accepted simplification for this phase's inline-field authoring (no modal text-entry dialog exists in this codebase to reuse instead). A single shared state (rather than one class per prompt shape) keeps that "at most one" rule enforced by construction; OpenForRowKey is given a prompt-specific derived key (not the bare row key) whenever a row can open more than one kind of prompt — see AnimationHubUnityTabGui's "+ Transition"/"Set Weight" row for why.

    AnimationHubIssueIndex

    Pure lookup built once per scan from ModelAnimationValidator's findings: the worst severity anywhere in a row's own subtree, and the row's own findings. Kept out of AnimationHubUnityTabGui so the severity dot, the "issues only" filter and the expanded message list all read the same lookup instead of drifting apart into three copies of it.

    AnimationHubProceduralTabGui

    Renders the "Procedural Animator" tab from a scanned ProceduralInventory: the in-hub simulator, a Components summary row, the assigned profile (or an "Open Setup Wizard" prompt when there is none), and — once a profile is assigned — its Rules, Layers, Actions and State Keys, each row expandable into the real asset inspector via Serenity.Global.Infrastructure.Editor.SerenityEmbeddedInspectorGui. Severity dots and the "issues only" filter read the same AnimationHubIssueIndex plumbing as AnimationHubUnityTabGui.

    AnimationHubRowFormatting

    Pure string formatting for Animation Hub rows: row titles, motion summaries and the search-match test. Kept free of UnityEditor/UnityEngine so it is unit-testable without an EditorWindow — the tab and row GUI classes call into this rather than formatting inline.

    AnimationHubRowGui

    Small adapter over Serenity.Global.Infrastructure.Editor.SerenityListRowGui for the Animation Hub's tree rows: adds a depth indent, a severity dot, a Ping action, and — since the authoring phase — an optional trailing strip of caller-owned actions. The tab GUI never talks to Serenity.Global.Infrastructure.Editor.SerenityListRowGui directly, so its own action list stays a plain label/tooltip/enabled triple without touching row layout.

    AnimationHubUnityTabGui

    Renders the "Unity Animation" tab from a scanned UnityAnimationInventory: one indented tree per AnimatorEntry (parameters, layers, states, transitions), followed by a flat "Clips on this model" section. Every row's Ping action stays read-only; the authoring actions added on top of it (Create Controller, + State, Default/Rename/Delete/Clip…) all route through Actions — this file only decides which action shows on which row and reads back which one was pressed, it never touches an asset itself. A row with a ModelAnimationValidator finding also carries a severity dot and, once expanded, the finding's own message.

    AnimationHubWindow

    Model-centric Animation Hub: pick one prefab — or a scene instance that resolves to one — scan its Unity Animator/clip setup and its Procedural Animator setup via ModelAnimationScanner, and browse both read-only against ModelAnimationValidator's findings, with inline editing of Procedural Animator assets via Serenity.Global.Infrastructure.Editor.SerenityEmbeddedInspectorGui. Mirrors SerenityAssetTypeBrowserWindow's shape (toolbar, scan-on-demand, empty state, ping-only rows).

    Structs

    AnimationHubAuthoringContext

    Everything AnimationHubUnityTabGui needs to gate and label an authoring row action: which model is being authored, whether it can be, and where to send the resulting engine call.

    AnimationHubRowGui.Result

    What happened to a drawn row this pass.

    ProceduralTabContext

    Everything AnimationHubProceduralTabGui needs beyond the scanned inventory and the row-filtering plumbing it already shares with AnimationHubUnityTabGui: the window's single embedded-inspector cache, its single Procedural Animator simulator and the model it previews, and the callback that opens the setup wizard — grouped the same way AnimationHubAuthoringContext groups the Unity tab's own window-provided singletons.

    In this article
    © 2026 Serenity. All Rights Reserved