@flighthq/render 0.3.0-next.1566.dcdf1d3 → 0.3.0-next.1585.17d10c4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/renderProxy.d.ts.map +1 -1
- package/dist/renderProxy.js +17 -3
- package/dist/renderProxy.js.map +1 -1
- package/package.json +10 -10
- package/src/renderProxy.test.ts +102 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderProxy.d.ts","sourceRoot":"","sources":["../src/renderProxy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"renderProxy.d.ts","sourceRoot":"","sources":["../src/renderProxy.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAEV,kBAAkB,EAClB,cAAc,EAEd,UAAU,EACV,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AASlC,KAAK,SAAS,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;AAEvF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,WAAW,CA2BrF;AAKD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,UAAU,GAAG,cAAc,GAAG,kBAAkB,GACvD,aAAa,CAMf;AAMD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAQ/E;AASD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAE/E;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,aAAa,CAa9F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS,CAElG;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI,CAE9E;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,WAAW,EACjB,UAAU,CAAC,EAAE,WAAW,GACvB,OAAO,CAeT;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAEjE;AAOD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAEpF;AAMD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,aAAa,GAAG,SAAS,GACpC,IAAI,CAGN;AAID,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,aAAa,GAAG,SAAS,GACpC,IAAI,CAmBN;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAWrF;AAaD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAgDjG"}
|
package/dist/renderProxy.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createEntity } from '@flighthq/entity/contract';
|
|
2
2
|
import { createMatrix } from '@flighthq/geometry/contract';
|
|
3
|
-
import { getNodeAppearanceRevision, getNodeLocalContentRevision, getNodeLocalTransformRevision, getNodeParent, getNodeRuntime, } from '@flighthq/node/contract';
|
|
3
|
+
import { getNodeAppearanceRevision, getNodeChildrenRevision, getNodeLocalContentRevision, getNodeLocalTransformRevision, getNodeParentReferenceRevision, getNodeParent, getNodeRuntime, } from '@flighthq/node/contract';
|
|
4
4
|
import { BlendMode, RenderRegistry } from '@flighthq/types/contract';
|
|
5
5
|
import { updateRenderProxyAppearance } from './renderAppearance';
|
|
6
6
|
import { updateRenderProxyColorScaleBias } from './renderColorScaleBias';
|
|
@@ -22,8 +22,10 @@ export function createRenderProxy(state, source) {
|
|
|
22
22
|
material: null,
|
|
23
23
|
materialData: null,
|
|
24
24
|
lastAppearanceId: -1,
|
|
25
|
+
lastChildrenId: -1,
|
|
25
26
|
lastLocalContentId: -1,
|
|
26
27
|
lastLocalTransformId: -1,
|
|
28
|
+
lastParentReferenceId: -1,
|
|
27
29
|
name: null,
|
|
28
30
|
renderer: renderer,
|
|
29
31
|
rendererData: renderer?.createData(state, source) ?? null,
|
|
@@ -93,11 +95,13 @@ export function isRenderProxyDirty(state, source, data, parentData) {
|
|
|
93
95
|
const parentDirty = parentData !== undefined &&
|
|
94
96
|
(parentData.transformFrameId === currentFrameId || parentData.appearanceFrameId === currentFrameId);
|
|
95
97
|
const rendererDirty = data.renderer?.isDirty?.(state, source, data.rendererData) ?? false;
|
|
98
|
+
const hierarchyDirty = data.lastChildrenId !== getNodeChildrenRevision(source) ||
|
|
99
|
+
data.lastParentReferenceId !== getNodeParentReferenceRevision(source);
|
|
96
100
|
const localDirty = state.sceneGraphSyncPolicy === 'refreshDerivedState' ||
|
|
97
101
|
data.lastLocalTransformId !== getNodeLocalTransformRevision(source) ||
|
|
98
102
|
data.lastAppearanceId !== getNodeAppearanceRevision(source) ||
|
|
99
103
|
data.lastLocalContentId !== getNodeLocalContentRevision(source);
|
|
100
|
-
return parentDirty || rendererDirty || localDirty;
|
|
104
|
+
return parentDirty || rendererDirty || hierarchyDirty || localDirty;
|
|
101
105
|
}
|
|
102
106
|
export function isRenderProxyVisible(data) {
|
|
103
107
|
return data.visible && data.alpha > 0 && !(data.transform2D.a === 0 && data.transform2D.d === 0);
|
|
@@ -121,13 +125,23 @@ export function updateNodeClip(_state, source, data, parentData) {
|
|
|
121
125
|
// The one per-node update step for the 2D walk: appearance, transform, material, color adjustment,
|
|
122
126
|
// then the clip nesting depth. Sprites and display objects share this single visitor.
|
|
123
127
|
export function updateRenderProxy2D(state, source, data, parentData) {
|
|
128
|
+
const parentReferenceId = getNodeParentReferenceRevision(source);
|
|
129
|
+
if (data.lastParentReferenceId !== parentReferenceId) {
|
|
130
|
+
// A prepared node may be detached while its eventual parent changes, then reattached to the same
|
|
131
|
+
// parent identity. Force both inherited axes through their existing update paths; comparing only
|
|
132
|
+
// the current parent or its "updated this frame" marker would leave that warm proxy stale.
|
|
133
|
+
data.lastAppearanceId = -1;
|
|
134
|
+
data.lastLocalTransformId = -1;
|
|
135
|
+
}
|
|
124
136
|
updateRenderProxyAppearance(state, data, parentData);
|
|
125
137
|
updateRenderProxy2DTransform(state, data, parentData);
|
|
126
138
|
updateRenderProxyMaterial(state, data, parentData);
|
|
127
139
|
updateRenderProxyColorScaleBias(state, data, parentData);
|
|
128
140
|
updateNodeClip(state, source, data, parentData);
|
|
129
|
-
// Record the
|
|
141
|
+
// Record the local and structural revisions this adaptation consumed.
|
|
142
|
+
data.lastChildrenId = getNodeChildrenRevision(source);
|
|
130
143
|
data.lastLocalContentId = getNodeLocalContentRevision(source);
|
|
144
|
+
data.lastParentReferenceId = parentReferenceId;
|
|
131
145
|
getRenderStateRuntime(state).renderAdaptHook?.(state, source, data);
|
|
132
146
|
}
|
|
133
147
|
export function updateRenderProxyRenderer(state, node) {
|
package/dist/renderProxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderProxy.js","sourceRoot":"","sources":["../src/renderProxy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"renderProxy.js","sourceRoot":"","sources":["../src/renderProxy.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/render",
|
|
3
|
-
"version": "0.3.0-next.
|
|
3
|
+
"version": "0.3.0-next.1585.17d10c4",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/flighthq/flight.git",
|
|
@@ -36,15 +36,15 @@
|
|
|
36
36
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@flighthq/color": "0.3.0-next.
|
|
40
|
-
"@flighthq/entity": "0.3.0-next.
|
|
41
|
-
"@flighthq/geometry": "0.3.0-next.
|
|
42
|
-
"@flighthq/log": "0.3.0-next.
|
|
43
|
-
"@flighthq/materials": "0.3.0-next.
|
|
44
|
-
"@flighthq/mesh": "0.3.0-next.
|
|
45
|
-
"@flighthq/node": "0.3.0-next.
|
|
46
|
-
"@flighthq/signals": "0.3.0-next.
|
|
47
|
-
"@flighthq/types": "0.3.0-next.
|
|
39
|
+
"@flighthq/color": "0.3.0-next.1585.17d10c4",
|
|
40
|
+
"@flighthq/entity": "0.3.0-next.1585.17d10c4",
|
|
41
|
+
"@flighthq/geometry": "0.3.0-next.1585.17d10c4",
|
|
42
|
+
"@flighthq/log": "0.3.0-next.1585.17d10c4",
|
|
43
|
+
"@flighthq/materials": "0.3.0-next.1585.17d10c4",
|
|
44
|
+
"@flighthq/mesh": "0.3.0-next.1585.17d10c4",
|
|
45
|
+
"@flighthq/node": "0.3.0-next.1585.17d10c4",
|
|
46
|
+
"@flighthq/signals": "0.3.0-next.1585.17d10c4",
|
|
47
|
+
"@flighthq/types": "0.3.0-next.1585.17d10c4"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@flighthq/adjustments": "*",
|
package/src/renderProxy.test.ts
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { createMatrix, createRectangle } from '@flighthq/geometry/contract';
|
|
2
2
|
import {
|
|
3
3
|
addNodeChild,
|
|
4
|
+
addNodeChildAt,
|
|
4
5
|
getNodeAppearanceRevision,
|
|
6
|
+
getNodeChildrenRevision,
|
|
5
7
|
getNodeLocalContentRevision,
|
|
6
8
|
getNodeLocalTransformRevision,
|
|
9
|
+
getNodeParentReferenceRevision,
|
|
7
10
|
invalidateNodeAppearance,
|
|
8
11
|
invalidateNodeLocalTransform,
|
|
12
|
+
removeNodeChild,
|
|
9
13
|
} from '@flighthq/node/contract';
|
|
10
14
|
import { createDisplayObject, setNode2DClip } from '@flighthq/scene2d/contract';
|
|
11
15
|
import { createSprite } from '@flighthq/scene2d/contract';
|
|
12
|
-
import type { ClipRegion } from '@flighthq/types/contract';
|
|
16
|
+
import type { ClipRegion, Node, RenderProxy } from '@flighthq/types/contract';
|
|
13
17
|
|
|
14
18
|
import { registerRenderer } from './renderer';
|
|
15
19
|
import {
|
|
@@ -44,6 +48,14 @@ function makeClipRegion(): ClipRegion {
|
|
|
44
48
|
return { contours: null, rect: createRectangle(0, 0, 10, 10), winding: 'nonZero', version: 0 };
|
|
45
49
|
}
|
|
46
50
|
|
|
51
|
+
function markRenderProxyClean<Traits extends object>(data: RenderProxy, source: Node<Traits>): void {
|
|
52
|
+
data.lastAppearanceId = getNodeAppearanceRevision(source);
|
|
53
|
+
data.lastChildrenId = getNodeChildrenRevision(source);
|
|
54
|
+
data.lastLocalContentId = getNodeLocalContentRevision(source);
|
|
55
|
+
data.lastLocalTransformId = getNodeLocalTransformRevision(source);
|
|
56
|
+
data.lastParentReferenceId = getNodeParentReferenceRevision(source);
|
|
57
|
+
}
|
|
58
|
+
|
|
47
59
|
describe('createRenderProxy', () => {
|
|
48
60
|
it('initializes default values', () => {
|
|
49
61
|
const state = createRenderState();
|
|
@@ -55,7 +67,9 @@ describe('createRenderProxy', () => {
|
|
|
55
67
|
expect(node.alpha).toBe(1);
|
|
56
68
|
expect(node.appearanceFrameId).toBe(-1);
|
|
57
69
|
expect(node.lastAppearanceId).toBe(-1);
|
|
70
|
+
expect(node.lastChildrenId).toBe(-1);
|
|
58
71
|
expect(node.lastLocalTransformId).toBe(-1);
|
|
72
|
+
expect(node.lastParentReferenceId).toBe(-1);
|
|
59
73
|
expect(node.transformFrameId).toBe(-1);
|
|
60
74
|
expect(node.renderer).toBeNull();
|
|
61
75
|
expect(node.rendererData).toBeNull();
|
|
@@ -258,9 +272,7 @@ describe('isRenderProxyDirty', () => {
|
|
|
258
272
|
const state = createRenderState({ sceneGraphSyncPolicy: 'requiresInvalidation' });
|
|
259
273
|
const source = createDisplayObject();
|
|
260
274
|
const data = createRenderProxy2D(state, source);
|
|
261
|
-
data
|
|
262
|
-
data.lastLocalContentId = getNodeLocalContentRevision(source);
|
|
263
|
-
data.lastLocalTransformId = getNodeLocalTransformRevision(source);
|
|
275
|
+
markRenderProxyClean(data, source);
|
|
264
276
|
|
|
265
277
|
expect(isRenderProxyDirty(state, source, data)).toBe(false);
|
|
266
278
|
});
|
|
@@ -269,8 +281,7 @@ describe('isRenderProxyDirty', () => {
|
|
|
269
281
|
const state = createRenderState();
|
|
270
282
|
const source = createDisplayObject();
|
|
271
283
|
const data = createRenderProxy2D(state, source);
|
|
272
|
-
data
|
|
273
|
-
data.lastLocalTransformId = getNodeLocalTransformRevision(source);
|
|
284
|
+
markRenderProxyClean(data, source);
|
|
274
285
|
invalidateNodeAppearance(source);
|
|
275
286
|
|
|
276
287
|
expect(isRenderProxyDirty(state, source, data)).toBe(true);
|
|
@@ -280,8 +291,7 @@ describe('isRenderProxyDirty', () => {
|
|
|
280
291
|
const state = createRenderState();
|
|
281
292
|
const source = createDisplayObject();
|
|
282
293
|
const data = createRenderProxy2D(state, source);
|
|
283
|
-
data
|
|
284
|
-
data.lastLocalTransformId = getNodeLocalTransformRevision(source);
|
|
294
|
+
markRenderProxyClean(data, source);
|
|
285
295
|
const parentData = createRenderProxy2D(state, createDisplayObject());
|
|
286
296
|
parentData.transformFrameId = getRenderStateRuntime(state).currentFrameId;
|
|
287
297
|
|
|
@@ -293,8 +303,7 @@ describe('isRenderProxyDirty', () => {
|
|
|
293
303
|
const source = createDisplayObject();
|
|
294
304
|
const data = createRenderProxy2D(state, source);
|
|
295
305
|
data.transform2D = createMatrix();
|
|
296
|
-
data
|
|
297
|
-
data.lastLocalTransformId = getNodeLocalTransformRevision(source);
|
|
306
|
+
markRenderProxyClean(data, source);
|
|
298
307
|
source.x = 10;
|
|
299
308
|
invalidateNodeLocalTransform(source);
|
|
300
309
|
|
|
@@ -337,6 +346,89 @@ describe('isRenderProxyVisible', () => {
|
|
|
337
346
|
});
|
|
338
347
|
|
|
339
348
|
describe('prepareScene2DRender', () => {
|
|
349
|
+
it('dirties a warm proxy when it is reattached after another prepared child', () => {
|
|
350
|
+
const state = createRenderState({ sceneGraphSyncPolicy: 'requiresInvalidation' });
|
|
351
|
+
const root = createDisplayObject();
|
|
352
|
+
const childA = createDisplayObject();
|
|
353
|
+
const childB = createDisplayObject();
|
|
354
|
+
addNodeChild(root, childA);
|
|
355
|
+
expect(prepareScene2DRender(state, root)).toBe(true);
|
|
356
|
+
expect(prepareScene2DRender(state, root)).toBe(false);
|
|
357
|
+
|
|
358
|
+
removeNodeChild(root, childA);
|
|
359
|
+
addNodeChild(root, childB);
|
|
360
|
+
expect(prepareScene2DRender(state, root)).toBe(true);
|
|
361
|
+
expect(prepareScene2DRender(state, root)).toBe(false);
|
|
362
|
+
|
|
363
|
+
removeNodeChild(root, childB);
|
|
364
|
+
addNodeChild(root, childA);
|
|
365
|
+
expect(prepareScene2DRender(state, root)).toBe(true);
|
|
366
|
+
expect(prepareScene2DRender(state, root)).toBe(false);
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
it('dirties the tree when a prepared child is removed', () => {
|
|
370
|
+
const state = createRenderState({ sceneGraphSyncPolicy: 'requiresInvalidation' });
|
|
371
|
+
const root = createDisplayObject();
|
|
372
|
+
const child = createDisplayObject();
|
|
373
|
+
addNodeChild(root, child);
|
|
374
|
+
prepareScene2DRender(state, root);
|
|
375
|
+
expect(prepareScene2DRender(state, root)).toBe(false);
|
|
376
|
+
|
|
377
|
+
removeNodeChild(root, child);
|
|
378
|
+
|
|
379
|
+
expect(prepareScene2DRender(state, root)).toBe(true);
|
|
380
|
+
expect(prepareScene2DRender(state, root)).toBe(false);
|
|
381
|
+
});
|
|
382
|
+
|
|
383
|
+
it('dirties the tree when prepared siblings are reordered', () => {
|
|
384
|
+
const state = createRenderState({ sceneGraphSyncPolicy: 'requiresInvalidation' });
|
|
385
|
+
const root = createDisplayObject();
|
|
386
|
+
const childA = createDisplayObject();
|
|
387
|
+
const childB = createDisplayObject();
|
|
388
|
+
addNodeChild(root, childA);
|
|
389
|
+
addNodeChild(root, childB);
|
|
390
|
+
prepareScene2DRender(state, root);
|
|
391
|
+
expect(prepareScene2DRender(state, root)).toBe(false);
|
|
392
|
+
|
|
393
|
+
addNodeChildAt(root, childA, 1);
|
|
394
|
+
|
|
395
|
+
expect(prepareScene2DRender(state, root)).toBe(true);
|
|
396
|
+
expect(prepareScene2DRender(state, root)).toBe(false);
|
|
397
|
+
});
|
|
398
|
+
|
|
399
|
+
it('recomputes inherited transform and appearance when a warm child changes parent', () => {
|
|
400
|
+
const state = createRenderState({ sceneGraphSyncPolicy: 'requiresInvalidation' });
|
|
401
|
+
const root = createDisplayObject();
|
|
402
|
+
const parentA = createDisplayObject();
|
|
403
|
+
const parentB = createDisplayObject();
|
|
404
|
+
const child = createDisplayObject();
|
|
405
|
+
parentA.x = 10;
|
|
406
|
+
parentA.alpha = 0.5;
|
|
407
|
+
parentB.x = 100;
|
|
408
|
+
parentB.alpha = 0.25;
|
|
409
|
+
child.x = 3;
|
|
410
|
+
child.alpha = 0.5;
|
|
411
|
+
invalidateNodeLocalTransform(parentA);
|
|
412
|
+
invalidateNodeAppearance(parentA);
|
|
413
|
+
invalidateNodeLocalTransform(parentB);
|
|
414
|
+
invalidateNodeAppearance(parentB);
|
|
415
|
+
invalidateNodeLocalTransform(child);
|
|
416
|
+
invalidateNodeAppearance(child);
|
|
417
|
+
addNodeChild(root, parentA);
|
|
418
|
+
addNodeChild(root, parentB);
|
|
419
|
+
addNodeChild(parentA, child);
|
|
420
|
+
prepareScene2DRender(state, root);
|
|
421
|
+
expect(getOrCreateRenderProxy2D(state, child).transform2D.tx).toBe(13);
|
|
422
|
+
expect(getOrCreateRenderProxy2D(state, child).alpha).toBe(0.25);
|
|
423
|
+
|
|
424
|
+
addNodeChild(parentB, child);
|
|
425
|
+
|
|
426
|
+
expect(prepareScene2DRender(state, root)).toBe(true);
|
|
427
|
+
expect(getOrCreateRenderProxy2D(state, child).transform2D.tx).toBe(103);
|
|
428
|
+
expect(getOrCreateRenderProxy2D(state, child).alpha).toBe(0.125);
|
|
429
|
+
expect(prepareScene2DRender(state, root)).toBe(false);
|
|
430
|
+
});
|
|
431
|
+
|
|
340
432
|
it('creates render nodes for all enabled nodes in the tree', () => {
|
|
341
433
|
const state = createRenderState();
|
|
342
434
|
const root = createDisplayObject();
|