Add a node that names the render layer of an object (#305)
The issue asked for Set render layer, Set sees and Render layer of. As with #211, a probe showed that writing already works. A Properties node of the object's type writes Render layer during a run, Inherit included, and one of type Camera writes Sees. The next picture follows both. As agreed, only Render layer of is built, and writing stays with Properties. - Render layer of is a data node with the input object and the outputs name and number. It answers the layer that holds, so an object without a choice of its own names its parent's. - NodeContext.renderLayerOf answers the number with the same rule the drawing uses (renderLayerAlong). The new field renderLayers on GraphLookup brings the names to the node. - hasRenderLayer in PropertySchema says which types are drawn. - Decided here: for an object that is not drawn (a camera, a behavior, a collider) the name is empty and the number -1, as Layer of does without a collider. Changing the render layer or Sees during a run had no test so far. Three unit tests now hold the proof from the issue. Tests: - Gate: 231 files, 3534 tests (3526 + 8), exit 0 - e2e 6: 149 checks passed, e2e 63: 13 checks passed (+1) - Unit: the coin moves into the overlay with Set and back with Inherit, a HUD container takes its sprite along, the main camera sees a second layer once its Sees is set, and Render layer of names the inherited layer, and none for a behavior - Node catalog: four cases for Render layer of - 63c3 moves a sprite onto UI in a Play run: the main camera no longer draws it, and the log reads "UI" and "1" - Three counter-probes fail 1, 1 and 2 tests: without inheriting in the node, without the check for a drawn type, and without inheriting in the drawing - "layer of" in the palette still finds Layer of first (6z-x) - The e2e sum is 1731 (1730 plus 1) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
70f3608733
commit
d9c6bbfa4d
12 files changed
+250
-8
No files matched your search
@@ -609,6 +609,28 @@ const CASES: Record<string, Case[]> = {
|
||||
},
|
||||
{ name: 'no object is on no layer', inputs: { object: null }, outputs: { name: '', number: -1 } },
|
||||
],
|
||||
RenderLayerOf: [
|
||||
{
|
||||
name: 'names the render layer the context says the object is drawn on (#305)',
|
||||
inputs: { object: fakeEntity('Coin') },
|
||||
context: { renderLayerOf: (target) => (target.name === 'Coin' ? 1 : null) },
|
||||
lookup: { ...NO_LOOKUP, renderLayers: () => ['Default', 'UI'] },
|
||||
outputs: { name: 'UI', number: 1 },
|
||||
},
|
||||
{
|
||||
name: 'a render layer the project has not named goes by its number',
|
||||
inputs: { object: fakeEntity('Coin') },
|
||||
context: { renderLayerOf: () => 3 },
|
||||
lookup: { ...NO_LOOKUP, renderLayers: () => ['Default'] },
|
||||
outputs: { name: 'Layer 3', number: 3 },
|
||||
},
|
||||
{
|
||||
name: 'an object that is not drawn is on no render layer',
|
||||
inputs: { object: fakeEntity('Cam') },
|
||||
outputs: { name: '', number: -1 },
|
||||
},
|
||||
{ name: 'no object is on no render layer', inputs: { object: null }, outputs: { name: '', number: -1 } },
|
||||
],
|
||||
ObjectsByName: [
|
||||
{
|
||||
name: 'every object so named, in scene order',
|
||||
|
||||
Reference in new issue
Block a user