The Inspector
The Inspector is Edit Mode's right-hand panel. It renders exactly one thing at a time: the authored state behind whatever is selected in the Hierarchy, the asset explorer, or the viewport. Select nothing and it shows the scene name and a prompt; select a row and it draws that row's fields, grouped into collapsible sections.
This page is the map. It does not repeat the field-by-field detail — that lives on the pages linked below.
What decides which fields you see: the selection's kind#
Selection carries a kind (SceneNode.kind in the Hierarchy, or a texture/material id from
the asset explorer). The Inspector is one large kind-dispatch: for the current selection it
renders exactly one branch, and every branch is a different set of fields. There is no
generic "entity" renderer — an Entity and a
Folder draw completely different UIs.
Verified count: 16 node kinds, each a distinct branch in the Inspector's dispatch
(TableEditModeShell.tsx, the selectedNode.kind === "…" chain in the Inspector's render).
The 03-editor-guide.md plan estimated 18 and hedged with "+ nested"; walking the actual
dispatch chain top to bottom finds 16 named branches and no unnamed ones — the two extra were
most likely double-counting the dynamic light/camera component sections or the
SELECTION (N) multi-select overlay, neither of which is a kind branch (see below).
kind |
What it is | Documented on |
|---|---|---|
object |
A table Scene Entity — a card, die, token, board, bag, custom piece or card-holder | entity, piece, render, rigidbody, collision, light, camera, script; a bag also gets CONTAINER, a button gets BUTTON |
seat-zone |
One placed zone box owned by a seat | platform-panels |
seat-label |
The one name label owned by a seat | platform-panels |
room |
The Room folder: environment, scripts, debug/game settings | platform-panels |
table |
The table surface's color/texture | platform-panels |
surface |
The room's floor or ceiling | platform-panels |
wall |
One of the 4 room walls | platform-panels |
poster |
An image mounted on a wall | platform-panels |
walls-group |
The Walls folder (info only) | platform-panels |
lights-group |
The Lights folder (Add Light) | platform-panels |
light |
One Room Light — a Platform concept, distinct from the object LIGHT engine component |
platform-panels |
player-zones-group |
The Player Zones folder (add a seat color) | platform-panels |
seat-group |
One seat's color + label text | platform-panels |
entities-folder |
The Entities (N) folder (Add Token / Upload Model) |
platform-panels |
texture |
A project texture asset | materials-and-textures |
material |
A project or built-in material | materials-and-textures |
Two things layer on top of the kind dispatch rather than being kinds of their own:
- Multi-select. Whenever more than one object row is selected, a
SELECTION (N)panel is appended below whatever the primary selection renders — regardless of that selection'skind. Documented onworking/multi-select.md(not this task). ENTITY (ADVANCED). The last section on everyobjectselection: a read-only view of the Live Entity the runtime actually built. Documented oninspector/entity-advanced.md(not this task) — see Document vs engine for why it exists and why it is read-only.
Engine components vs Platform panels — the accent color is the point#
An object selection's sections are not all the same kind of thing, and the Inspector says
so visually: every section header carries a tone — "engine", "platform", or
unmarked for the ENTITY header itself — and engine and platform sections render with a
different header accent. This is the terminology work
(The scene model,
Provenance and lifecycle) made visible: if you can point
at a section and say whether its accent is engine or platform, you have understood the split
even before reading a single field.
| Tone | Meaning | Sections |
|---|---|---|
| (unmarked) | Not a component at all — the entity header | ENTITY |
| Engine | A real PlayCanvas component | RENDER, RIGIDBODY, COLLISION, SCRIPT, LIGHT, CAMERA |
| Platform | A DiceyTable classification or feature, never an engine component | PIECE, SOUND SETS (BUILT-IN), DIE SETTINGS, SOUND OVERRIDES |
The object selection's fixed section order (from the rail's own section list) is:
ENTITY → PIECE → RENDER → [SOUND SETS (BUILT-IN)] → [DIE SETTINGS] → RIGIDBODY → COLLISION
→ [SOUND OVERRIDES] → SCRIPT → [one section per added component: LIGHT, CAMERA]
→ ENTITY (ADVANCED)
Sections in [brackets] are conditional — SOUND SETS (BUILT-IN) only for admin accounts on
non-custom pieces, DIE SETTINGS only for a basic (standard-preset) die, SOUND OVERRIDES
only for a kind that has sound-emitting events at all. Everyone always sees ENTITY, PIECE,
RENDER, RIGIDBODY, COLLISION and SCRIPT.
The ENTITY header: ENABLED disables everything#
ENTITY is not a component section — it is the entity itself: enabled state, the two names,
parent, tags and transform. Its Enabled checkbox carries PlayCanvas's own semantics:
disabling the entity disables every component on it — render, rigidbody, collision,
and any added light/camera — not just visibility. The Inspector's own tooltip on that
checkbox says exactly this. See entity.md for the full field
list.
Intrinsic vs optional, on the Inspector#
RENDER, RIGIDBODY and COLLISION are always present — every table Entity has them, and
they can only be configured and disabled, never removed. RIGIDBODY and COLLISION each
carry a real per-section enable checkbox in their header
(physics.rigidbodyEnabled / physics.collisionEnabled); RENDER has none — the
ENTITY header's own Enabled toggle is the only control, because visibility is owned by one
writer end-to-end (the system that also encodes card-face and hidden-information rules) and a
second enable flag would fight it. metadata.renderEnabled was proposed and never
implemented — if you see it mentioned anywhere else, that mention is stale.
LIGHT and CAMERA are the opposite: absent until you add them from + ADD COMPONENT,
and removable. See light.md and
camera.md for their fields, and inspector/add-component.md
(not this task) for the add/remove/rail UI itself.
Verified section and material counts#
The plan estimated 21+ collapsible sections and 15 material sections. Walking the actual code:
- 15 material sections, exact match —
MATERIAL_INSPECTOR_SECTIONSinpackages/shared/src/sceneEditor.tshas exactly 15 entries, unit-tested to that count. Documented on materials-and-textures.md. - 23 distinctly-titled collapsible sections outside the material inspector:
ENTITY,PIECE,RENDER,SOUND SETS (BUILT-IN),DIE SETTINGS,RIGIDBODY,COLLISION,SOUND OVERRIDES,SCRIPT,LIGHT,CAMERA,ENTITY (ADVANCED)(all underobject);SEAT,POSITION,SIZE,ROTATION(seat-zone);BOX SIZE,FONT(seat-label, which reuses theSEAT/POSITION/ROTATIONtitles too);SCENE SCRIPTS,DEBUG VISIBILITY,GAME SETTINGS(room);COLOR,LABEL(seat-group); and the multi-selectSELECTION (N)overlay.table,surface,wall,poster,walls-group,lights-group,light,player-zones-groupandentities-folderrender plain fields with no collapsible wrapper. Add the texture inspector's 4 panels (Texture,Sampling,Compression,WebP Compression— PCUIPanel, notEmCollapsible, but functionally the same) and the total rises to 27. Either count clears the plan's "21+" floor.
The field filter and the component rail#
An object selection also gets a component rail: a sticky strip of chips above the
section list with scroll-spy, arrow-key navigation, and a text filter that hides any section
whose title or field labels don't match. That UI — and + ADD COMPONENT — is documented
in full on inspector/add-component.md (not this task); this page only notes that it exists,
because several pages below reference "the rail" in passing.
