Vixen
feb85697

Editor · guide

The editor shell

The window the editor is made of, and the command registry every part of it is a view over.

Edit this page on GitHub

Documents

Next

  • Commands and the focus route — A menu declares what, and the focus decides who — a command id resolved by walking outwards from the focused element and on past the root to the document and the application, so two views can answer the same verb without knowing each other exists and an item nothing handles greys itself out.
  • Dialogs that answer — A modal question an application can await — confirm, prompt, choose, or one it fills in itself — queued one at a time, completed from the document's tick rather than from the click that answered it, and answered rather than dropped when the application goes away.
  • Strings and the catalogue — A label is an id plus the English it was written as, so a missing translation shows the sentence rather than the id — and the catalogue in use is a signal, so a language change re-labels a running interface with no code at any call site.
  • Background tasks — Long work that does not freeze the window — a task model with progress, status and cancellation whose properties are signals, a queue that lands every report on one point of the frame, and a manager whose disposal is what stops a cancelled import outliving the application that started it.
  • Editor modes — What the viewport's input means right now, and how a mode claims keys that already mean something else.
  • What a play session runs — How a module adds systems to the frame the editor's Play button steps — the `IPlaySystems` contribution, the `PlaySession` that owns their lifetime, and the physics world the editor now stands up on Play and takes away on Stop.
  • The content library service — What a plugin can do to the project's assets by asking for IContentLibrary — import, create, rename, move, delete, walk references, export a package, file into collections — and what the browser's model is.
  • The source-control service — What a plugin can ask the project's version control by asking for ISourceControl — the status of a path, a file's history and diffs, and Revert and Restore — and when its answers arrive.
  • The project session service — What a plugin gets from IProjectSession — the open project, a full rescan, what changed on disk, the project's own code, the recent list, New Project's scaffold and the request to reopen the editor over another project.
  • The scene editing service — The Entity menu's verbs as ISceneEditing — group, parent, duplicate, align, snap and the selection walks — each one undo entry on the active scene, callable by a plugin the way the menu calls it.
  • Documents and views — Opening an asset is two registrations — a DocumentKind with IDocumentHost says which files and how a document opens, a DocumentView with IWorkspace says what shows it — joined by the document's type and held together by a pairing test.
  • The player delivery service — What a plugin gets by asking for IPlayerDelivery — the build settings, the scene list and what would stop each scene shipping, why a build cannot start, and starting one — and why no device is part of it.
  • Links out of the editor — Two facts the editor host publishes for a module that links out — IExternalLinks opens a URL or a folder in whatever the operating system opens it with, and EditorDataDirectory says where the user's editor data lives.
  • Contributing an importer — What a plugin gets by asking for ImporterContributions — a set of importers every registry in the process folds in, withdrawn on unload — and how the host's own Linked set differs from it.
  • Edits made outside the editor — What happens when a file the editor has open is changed by something else, and why the editor's own saves do not count.
  • Saved filters in the project browser — A named search of the project, kept beside the layouts and the keymap — and why it stores the query rather than what the query matched.
  • Collections in the project browser — A named set of assets kept with the project — why it holds ids rather than paths, and why it lives under ProjectSettings while a saved filter lives beside your keymap.
  • Scene menus — A pie menu under the cursor and a list beside it, both filled by one registration and filtered by the active mode.
  • Prefab overrides — How a scene records that an entity came from a prefab and which of its members it has changed, and what happens when the prefab changes underneath it.
  • Icons — Declaring what a type looks like with SVG path data, and the parser that made the attribute buildable.
  • Utility styles — Styling an editor panel with Tailwind-shaped class names — the build step that compiles them, the one palette they resolve against, and which families the engine actually reads.
  • The editing pipeline — One path every edit in the editor takes, so undo, multi-object editing and mixed values are answered once rather than per panel.
  • Writing an editor plugin — What a plugin can contribute to the editor, how it registers, and how everything it added is taken back out when it unloads.
  • Editor scripts — A .cs file in your project's Editor/ folder is compiled by the running editor and loaded like a plugin — drop it in, and its menu item is there.
  • Inspectors in markup — Writing a custom inspector as a .vxml file with no code-behind, bound to the editing pipeline by name after the tree is built.
  • The frame panel — Editing a .vxcompositor as the Standard Frame's knobs, with the resolved quality waterfall and the per-camera volume stack shown beside them, and Explode as the one-way door out.
  • The network panel — Where a session's bandwidth is going, how the link is behaving over time, and what is inside one snapshot — an editor panel over the BandwidthLedger, SnapshotInspector, RoundTripEstimator and transport loss counters a game already has.
  • Sub-object picking — Which face, edge or vertex of one mesh the pointer is on, and why that is a different question from which entity.
  • Showing what is selected — The corner brackets a viewport draws round a selected object, and why a composed pane cannot say it with colour.
  • Snapping — What a transform lands on, which part of it lands there, and why that is one service rather than one per tool.
  • Building to a number — The work plane you build in, typing an exact distance mid-drag, the tape measure, and the scale references.
  • Editable meshes in a scene — How an entity comes to carry an editable mesh, how it is saved, and how an edit is undone.
  • Element selection — Vertex, edge and face modes over one mesh — what a click takes, what a loop walks, and what survives an edit.
  • The shape tool — Making block-out geometry — live parameters, the cube grid, the poly shape, and duplicate, mirror and array.
  • Face materials — Per-face materials, UV projection, smoothing groups and the block-out checker the viewport draws by default.
  • Booleans and handoff — Non-destructive union, subtract and intersect whose operands stay editable — and what turns a block-out into an asset.
  • Retopology and UV surfaces — Where a quad remesh and an unwrap are actually invoked from — the model importer, three command-line verbs, and the blockout mode's own verb and UV panel.
  • The VFX graph — The node library a .vxvfx is authored against — spawners, initializers, updaters and outputs — and the compiler that turns one graph into both an effect the CPU runs and a shader a device runs.
  • Shader-graph preview thumbnails — Compiling one node's sub-expression on its own, running it over a quad, and keeping the target alive across edits.
  • A material that draws with a shader graph — A graph emits a material feature rather than a whole shader, which is why the engine's existing draw can put one on a mesh.
  • Procedural and UV nodes in a shader graph — Noise, a checker and the two UV transforms — each one a call into the shader library rather than a second copy of it, which is also why they have no preview.
  • Graph diagnostics that name a node — How a complaint about a line of generated shader source becomes a complaint about a node the author can select, across sub-graph inlining.
  • Evaluating a texture plan — The plan of compute kernels a texture graph and a layer stack both compile to, the image pool that runs it, and the resolution rule that keeps a graph the same material at every size.
  • Compiling a texture graph — The compiler that turns a node graph into a texture plan, and the four things it hands back besides the plan — the outputs by usage, the pictures a host still owes it, the parameters an author exposed, and the per-node images a preview draws.
  • The texture graph plugin — The .vxtexgraph document, the panel that edits one, and the module that registers both through the plugin contract — plus the three things a plugin could not do when this module was written, each with the change that closed it.
  • Texture-graph node previews — The swatch under every node of a texture graph — one plan that keeps every node's image, one bake, and pixels handed to the host because a compute queue's images are not the interface's to sample.
  • Mesh maps as project assets — The bake panel a mesh-map bake is set up in, what the nine files are called, how a set is keyed on the model it came from, and how a generator finds one by usage rather than by path.
  • Baking a material — How a texture graph's outputs become files the engine already understands — the nine usages and the seven files they land in, the ORM packing, PNG or KTX2, the .vxmat, the GUID dance, and the provenance block that stops a painted-over map being regenerated.
  • Generators and the compound library — How a generator asks for a baked mesh map by what it measures rather than by which file it is, where a shipped compound lives, and why a graph must not name the mesh it is for.
  • Computing a sub-graph's port values — A published graph is inlined rather than called, so what its unfed ports are worth is decided during the walk — this is the seam that lets a front end compute one instead of only reading a number.