Summary
Generated PlayCanvas apps repeatedly trip over public APIs that look like plain mutable data, but actually have engine ownership, lifecycle, readiness, hierarchy, or setter/helper side effects.
This issue tracks engine/API-layout fixes only. Do not solve this in the app template.
Current Status
| Area |
PR |
Status |
Notes |
| Readonly typings/JSDoc for live engine-owned getters |
#8959 |
Merged |
First pass for arrays, maps, transform values, physics/UI values, material state, and related setters. |
| Entity render traversal and bounds helpers |
#8960 |
Draft |
Adds Entity#forEachRenderMeshInstance(cb) and Entity#getAabb(result?). |
Workstreams
| Priority |
Theme |
Scope |
Status |
| P0 |
Render/model mesh ownership |
meshInstances readonly getter types, engine-owned docs, explicit replacement path, debug errors for current/stale/destroyed instances. |
Partly covered by #8959; replacement/debug work remains. |
| P0 |
Entity render helpers |
Subtree mesh traversal and subtree render bounds for common GLB edits. |
Draft in #8960. |
| P0 |
Setter-only object values |
Transform getters, script order, and other values where component-wise mutation bypasses engine updates. |
First typings/JSDoc pass merged in #8959; more docs may be needed. |
| P0 |
Asset/container readiness |
Failed-load semantics, loadFromUrlAndFilename retry errors, and container render-resource readiness. |
Todo. |
| P0 |
Mesh lifecycle clarity |
Mesh#clear dynamic flags and mesh format changes after MeshInstance construction. |
Todo. |
| P1 |
Collections and hierarchy |
children, component layers, layer mesh lists, current-entity component lookup, tag search behavior. |
Partly covered by #8959; helper/docs work remains. |
| P1 |
Live component values |
Physics vectors, UI/render vectors/colors/rects, material/blend state, particle graphs, sound slots, anim layers/masks. |
Partly covered by #8959; helper/docs work remains. |
| P1 |
Loading and cloning semantics |
Container/GLB APIs, generated sub-resource lifetime, clone/shared-resource rules. |
Todo. |
| P1 |
Input ergonomics |
Nullable input devices and common keyboard code strings. |
Todo. |
| P2 |
Docs/debug polish |
Mouse target requirement, lifecycle event naming, modern script docs, render pass setup, batch/template dirty/lazy semantics. |
Todo. |
Summary
Generated PlayCanvas apps repeatedly trip over public APIs that look like plain mutable data, but actually have engine ownership, lifecycle, readiness, hierarchy, or setter/helper side effects.
This issue tracks engine/API-layout fixes only. Do not solve this in the app template.
Current Status
Entity#forEachRenderMeshInstance(cb)andEntity#getAabb(result?).Workstreams
meshInstancesreadonly getter types, engine-owned docs, explicit replacement path, debug errors for current/stale/destroyed instances.loadFromUrlAndFilenameretry errors, and container render-resource readiness.Mesh#cleardynamic flags and mesh format changes afterMeshInstanceconstruction.children, componentlayers, layer mesh lists, current-entity component lookup, tag search behavior.