@flighthq/render 0.5.1-next.815.cc08b93 → 0.5.1-next.903.f434bc2
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/README.md +2 -2
- package/dist/contract.d.ts +5 -0
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +5 -0
- package/dist/contract.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/raster2DSurface.d.ts +2 -8
- package/dist/raster2DSurface.d.ts.map +1 -1
- package/dist/raster2DSurface.js +3 -45
- package/dist/raster2DSurface.js.map +1 -1
- package/dist/renderCache.d.ts +13 -11
- package/dist/renderCache.d.ts.map +1 -1
- package/dist/renderCache.js +41 -33
- package/dist/renderCache.js.map +1 -1
- package/dist/renderProxy.d.ts +2 -1
- package/dist/renderProxy.d.ts.map +1 -1
- package/dist/renderProxy.js +30 -27
- package/dist/renderProxy.js.map +1 -1
- package/dist/renderQueue.d.ts +2 -1
- package/dist/renderQueue.d.ts.map +1 -1
- package/dist/renderQueue.js +9 -3
- package/dist/renderQueue.js.map +1 -1
- package/dist/renderState.d.ts +2 -1
- package/dist/renderState.d.ts.map +1 -1
- package/dist/renderState.js +20 -17
- package/dist/renderState.js.map +1 -1
- package/dist/renderViewport.d.ts +2 -1
- package/dist/renderViewport.d.ts.map +1 -1
- package/dist/renderViewport.js +11 -3
- package/dist/renderViewport.js.map +1 -1
- package/package.json +12 -12
- package/src/enableColorAdjustmentGuards.test.ts +4 -2
- package/src/raster2DSurface.test.ts +36 -141
- package/src/renderCache.test.ts +1 -1
- package/src/renderProxy.test.ts +7 -2
package/README.md
CHANGED
|
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/render`. The `@fligh
|
|
|
13
13
|
This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
|
|
14
14
|
|
|
15
15
|
- [Flight project](https://github.com/flighthq/flight)
|
|
16
|
-
- [Source for @flighthq/render@0.5.1-next.
|
|
17
|
-
- [License](https://github.com/flighthq/flight/blob/
|
|
16
|
+
- [Source for @flighthq/render@0.5.1-next.903.f434bc2](https://github.com/flighthq/flight/tree/f434bc233778d75aeea61995df3a8cfaec459a85/packages/render)
|
|
17
|
+
- [License](https://github.com/flighthq/flight/blob/f434bc233778d75aeea61995df3a8cfaec459a85/LICENSE.md)
|
package/dist/contract.d.ts
CHANGED
|
@@ -20,4 +20,9 @@ export * from './renderTransform2d';
|
|
|
20
20
|
export * from './renderViewport';
|
|
21
21
|
export * from './sceneRender';
|
|
22
22
|
export { SCENE2D_WORKING_COLOR_SPACE } from './scene2dWorkingColorSpace';
|
|
23
|
+
export { initializeRenderViewport2D } from './renderViewport';
|
|
24
|
+
export { initializeRenderProxy } from './renderProxy';
|
|
25
|
+
export { initializeRenderCache, initializeRenderCacheAdapter } from './renderCache';
|
|
26
|
+
export { initializeRenderQueue } from './renderQueue';
|
|
27
|
+
export { initializeRenderState } from './renderState';
|
|
23
28
|
//# sourceMappingURL=contract.d.ts.map
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/contract.js
CHANGED
|
@@ -20,4 +20,9 @@ export * from './renderTransform2d';
|
|
|
20
20
|
export * from './renderViewport';
|
|
21
21
|
export * from './sceneRender';
|
|
22
22
|
export { SCENE2D_WORKING_COLOR_SPACE } from './scene2dWorkingColorSpace';
|
|
23
|
+
export { initializeRenderViewport2D } from './renderViewport';
|
|
24
|
+
export { initializeRenderProxy } from './renderProxy';
|
|
25
|
+
export { initializeRenderCache, initializeRenderCacheAdapter } from './renderCache';
|
|
26
|
+
export { initializeRenderQueue } from './renderQueue';
|
|
27
|
+
export { initializeRenderState } from './renderState';
|
|
23
28
|
//# sourceMappingURL=contract.js.map
|
package/dist/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { areColorAdjustmentsEnabled, createRaster2DSurface, destroyRaster2DSurface, disableSceneRenderGuards, enableColorAdjustments, enableSceneRenderGuards, createRenderCache, destroyRenderState, disposeScene2DRender, enableRenderRegistryGuards, enableRenderRegistrySignals,
|
|
1
|
+
export { areColorAdjustmentsEnabled, createRaster2DSurface, destroyRaster2DSurface, disableSceneRenderGuards, enableColorAdjustments, enableSceneRenderGuards, createRenderCache, destroyRenderState, disposeScene2DRender, enableRenderRegistryGuards, enableRenderRegistrySignals, explainRenderRegistryMisses, packScene3DLightBlock, prepareScene2DRender, prepareScene3DRender, registerRenderer, useRenderCache, } from './contract';
|
|
2
2
|
export { SCENE2D_WORKING_COLOR_SPACE } from './scene2dWorkingColorSpace';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { areColorAdjustmentsEnabled, createRaster2DSurface, destroyRaster2DSurface, disableSceneRenderGuards, enableColorAdjustments, enableSceneRenderGuards, createRenderCache, destroyRenderState, disposeScene2DRender, enableRenderRegistryGuards, enableRenderRegistrySignals,
|
|
1
|
+
export { areColorAdjustmentsEnabled, createRaster2DSurface, destroyRaster2DSurface, disableSceneRenderGuards, enableColorAdjustments, enableSceneRenderGuards, createRenderCache, destroyRenderState, disposeScene2DRender, enableRenderRegistryGuards, enableRenderRegistrySignals, explainRenderRegistryMisses, packScene3DLightBlock, prepareScene2DRender, prepareScene3DRender, registerRenderer, useRenderCache, } from './contract';
|
|
2
2
|
export { SCENE2D_WORKING_COLOR_SPACE } from './scene2dWorkingColorSpace';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function createRaster2DSurface(width: number, height: number): Raster2DSurface | null;
|
|
1
|
+
import type { Raster2DSurface, Raster2DSurfaceProvider } from '@flighthq/types/contract';
|
|
2
|
+
export declare function createRaster2DSurface(provider: Readonly<Raster2DSurfaceProvider>, width: number, height: number): Raster2DSurface | null;
|
|
3
3
|
export declare function destroyRaster2DSurface(surface: Raster2DSurface): void;
|
|
4
|
-
export declare function explainRaster2DSurfaceProvider(): BackendExplanation;
|
|
5
|
-
export declare function getRaster2DSurfaceProvider(): Readonly<Raster2DSurfaceProvider>;
|
|
6
|
-
export declare function hasRaster2DSurfaceHostProvider(): boolean;
|
|
7
|
-
export declare function installRaster2DSurfaceHostProvider(provider: Readonly<Raster2DSurfaceProvider>): void;
|
|
8
|
-
export declare function resetRaster2DSurfaceProviderForTest(): void;
|
|
9
|
-
export declare function setRaster2DSurfaceProvider(provider: Readonly<Raster2DSurfaceProvider> | null): void;
|
|
10
4
|
//# sourceMappingURL=raster2DSurface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raster2DSurface.d.ts","sourceRoot":"","sources":["../src/raster2DSurface.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"raster2DSurface.d.ts","sourceRoot":"","sources":["../src/raster2DSurface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEzF,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,QAAQ,CAAC,uBAAuB,CAAC,EAC3C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,eAAe,GAAG,IAAI,CAIxB;AAKD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAKrE"}
|
package/dist/raster2DSurface.js
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
export function createRaster2DSurface(width, height) {
|
|
3
|
-
const provider = getRaster2DSurfaceProvider();
|
|
1
|
+
export function createRaster2DSurface(provider, width, height) {
|
|
4
2
|
const surface = provider.createRaster2DSurface(width, height);
|
|
5
3
|
if (surface !== null)
|
|
6
4
|
_surfaceProviders.set(surface, provider);
|
|
7
5
|
return surface;
|
|
8
6
|
}
|
|
9
|
-
// A surface must return to the provider that allocated it even when
|
|
10
|
-
//
|
|
7
|
+
// A surface must return to the provider that allocated it even when the provider reference changes
|
|
8
|
+
// during its lifetime. Delete the ownership record before invoking the provider so repeated or
|
|
11
9
|
// reentrant destruction is a no-op and no non-GC resource can be freed twice.
|
|
12
10
|
export function destroyRaster2DSurface(surface) {
|
|
13
11
|
const provider = _surfaceProviders.get(surface);
|
|
@@ -16,45 +14,5 @@ export function destroyRaster2DSurface(surface) {
|
|
|
16
14
|
_surfaceProviders.delete(surface);
|
|
17
15
|
provider.destroyRaster2DSurface(surface);
|
|
18
16
|
}
|
|
19
|
-
export function explainRaster2DSurfaceProvider() {
|
|
20
|
-
if (_custom !== null) {
|
|
21
|
-
return { conflict: _hostConflict, layer: 'custom', operation: null, viability: 'unobserved' };
|
|
22
|
-
}
|
|
23
|
-
if (_host !== null) {
|
|
24
|
-
return { conflict: _hostConflict, layer: 'host', operation: null, viability: 'unobserved' };
|
|
25
|
-
}
|
|
26
|
-
return { conflict: false, layer: 'host-not-enabled', operation: null, viability: 'unobserved' };
|
|
27
|
-
}
|
|
28
|
-
export function getRaster2DSurfaceProvider() {
|
|
29
|
-
return _custom ?? _host ?? _sentinel;
|
|
30
|
-
}
|
|
31
|
-
export function hasRaster2DSurfaceHostProvider() {
|
|
32
|
-
return _host !== null;
|
|
33
|
-
}
|
|
34
|
-
export function installRaster2DSurfaceHostProvider(provider) {
|
|
35
|
-
if (_host !== null) {
|
|
36
|
-
if (_host !== provider)
|
|
37
|
-
_hostConflict = true;
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
_host = provider;
|
|
41
|
-
}
|
|
42
|
-
export function resetRaster2DSurfaceProviderForTest() {
|
|
43
|
-
_custom = null;
|
|
44
|
-
_host = null;
|
|
45
|
-
_hostConflict = false;
|
|
46
|
-
}
|
|
47
|
-
export function setRaster2DSurfaceProvider(provider) {
|
|
48
|
-
_custom = provider;
|
|
49
|
-
}
|
|
50
|
-
const _sentinel = createEntity({
|
|
51
|
-
createRaster2DSurface() {
|
|
52
|
-
return null;
|
|
53
|
-
},
|
|
54
|
-
destroyRaster2DSurface() { },
|
|
55
|
-
});
|
|
56
17
|
const _surfaceProviders = new WeakMap();
|
|
57
|
-
let _custom = null;
|
|
58
|
-
let _host = null;
|
|
59
|
-
let _hostConflict = false;
|
|
60
18
|
//# sourceMappingURL=raster2DSurface.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raster2DSurface.js","sourceRoot":"","sources":["../src/raster2DSurface.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"raster2DSurface.js","sourceRoot":"","sources":["../src/raster2DSurface.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CACnC,QAA2C,EAC3C,KAAa,EACb,MAAc;IAEd,MAAM,OAAO,GAAG,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9D,IAAI,OAAO,KAAK,IAAI;QAAE,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,mGAAmG;AACnG,+FAA+F;AAC/F,8EAA8E;AAC9E,MAAM,UAAU,sBAAsB,CAAC,OAAwB;IAC7D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO;IACnC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,QAAQ,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAAsD,CAAC"}
|
package/dist/renderCache.d.ts
CHANGED
|
@@ -1,17 +1,7 @@
|
|
|
1
|
-
import type { Renderable, RenderCache, RenderCacheAdapter, Renderer, RenderState } from '@flighthq/types/contract';
|
|
1
|
+
import type { Renderable, RenderCache, RenderCacheAdapter, Renderer, RenderState, EntityConstruction } from '@flighthq/types/contract';
|
|
2
2
|
import { RenderCacheKind } from '@flighthq/types/contract';
|
|
3
3
|
export { RenderCacheKind };
|
|
4
|
-
/**
|
|
5
|
-
* Creates a backend-agnostic cache handle. The handle owns no resource; a backend
|
|
6
|
-
* allocates and stores its own render target on the render state, keyed by this handle,
|
|
7
|
-
* when the cache is first refreshed.
|
|
8
|
-
*/
|
|
9
4
|
export declare function createRenderCache(): RenderCache;
|
|
10
|
-
/**
|
|
11
|
-
* Creates an adapter that, during the render update pass, substitutes its cache handle
|
|
12
|
-
* for `source` so the cached result is composited instead of the source subtree being
|
|
13
|
-
* traversed. Returns null from `adapt` (renders normally) until a cache is attached.
|
|
14
|
-
*/
|
|
15
5
|
export declare function createRenderCacheAdapter(cache?: RenderCache | null): RenderCacheAdapter;
|
|
16
6
|
/**
|
|
17
7
|
* Opts an adapter into the onPrepare signal, emitted each time the adapter is consulted
|
|
@@ -23,6 +13,18 @@ export declare function enableRenderCacheAdapterSignals(adapter: RenderCacheAdap
|
|
|
23
13
|
* cache adapter attached to the node's source on this state. Returns null if none is attached.
|
|
24
14
|
*/
|
|
25
15
|
export declare function getRenderProxyCache(state: RenderState, source: Renderable): RenderCache | null;
|
|
16
|
+
/**
|
|
17
|
+
* Creates a backend-agnostic cache handle. The handle owns no resource; a backend
|
|
18
|
+
* allocates and stores its own render target on the render state, keyed by this handle,
|
|
19
|
+
* when the cache is first refreshed.
|
|
20
|
+
*/
|
|
21
|
+
export declare function initializeRenderCache(out: EntityConstruction<RenderCache>): void;
|
|
22
|
+
/**
|
|
23
|
+
* Creates an adapter that, during the render update pass, substitutes its cache handle
|
|
24
|
+
* for `source` so the cached result is composited instead of the source subtree being
|
|
25
|
+
* traversed. Returns null from `adapt` (renders normally) until a cache is attached.
|
|
26
|
+
*/
|
|
27
|
+
export declare function initializeRenderCacheAdapter(adapter: EntityConstruction<RenderCacheAdapter>, cache?: RenderCache | null): void;
|
|
26
28
|
export declare function isRenderCache(source: unknown): source is RenderCache;
|
|
27
29
|
export declare function isRenderCacheAdapter(value: unknown): value is RenderCacheAdapter;
|
|
28
30
|
export declare function registerRenderCacheRenderer(state: RenderState, renderer: Renderer): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderCache.d.ts","sourceRoot":"","sources":["../src/renderCache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,QAAQ,EAER,WAAW,
|
|
1
|
+
{"version":3,"file":"renderCache.d.ts","sourceRoot":"","sources":["../src/renderCache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,QAAQ,EAER,WAAW,EACX,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAK3D,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,wBAAgB,iBAAiB,IAAI,WAAW,CAI/C;AAED,wBAAgB,wBAAwB,CAAC,KAAK,GAAE,WAAW,GAAG,IAAW,GAAG,kBAAkB,CAI7F;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAEjF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI,CAG9F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,CAAC,WAAW,CAAC,GAAG,IAAI,CAGhF;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,EAC/C,KAAK,GAAE,WAAW,GAAG,IAAW,GAC/B,IAAI,CAkBN;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,WAAW,CAEpE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAOhF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAExF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,GAAG,kBAAkB,CAS7G"}
|
package/dist/renderCache.js
CHANGED
|
@@ -1,45 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
2
2
|
import { createMatrix, multiplyMatrix } from '@flighthq/geometry/contract';
|
|
3
3
|
import { createSignal } from '@flighthq/signals/contract';
|
|
4
4
|
import { RenderCacheKind } from '@flighthq/types/contract';
|
|
5
5
|
import { registerRenderer } from './renderer';
|
|
6
6
|
import { getRenderProxyAdapter, setRenderProxyAdapter } from './renderProxyAdapter';
|
|
7
7
|
export { RenderCacheKind };
|
|
8
|
-
/**
|
|
9
|
-
* Creates a backend-agnostic cache handle. The handle owns no resource; a backend
|
|
10
|
-
* allocates and stores its own render target on the render state, keyed by this handle,
|
|
11
|
-
* when the cache is first refreshed.
|
|
12
|
-
*/
|
|
13
8
|
export function createRenderCache() {
|
|
14
|
-
|
|
9
|
+
const out = allocateEntity();
|
|
10
|
+
initializeRenderCache(out);
|
|
11
|
+
return finishEntity(out);
|
|
15
12
|
}
|
|
16
|
-
/**
|
|
17
|
-
* Creates an adapter that, during the render update pass, substitutes its cache handle
|
|
18
|
-
* for `source` so the cached result is composited instead of the source subtree being
|
|
19
|
-
* traversed. Returns null from `adapt` (renders normally) until a cache is attached.
|
|
20
|
-
*/
|
|
21
13
|
export function createRenderCacheAdapter(cache = null) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const adapter = createEntity({
|
|
26
|
-
cache,
|
|
27
|
-
signals: null,
|
|
28
|
-
adapt(_state, _source, node) {
|
|
29
|
-
adapter.signals?.onPrepare.emit();
|
|
30
|
-
const attached = adapter.cache ?? null;
|
|
31
|
-
if (attached === null)
|
|
32
|
-
return null;
|
|
33
|
-
// Switch the render node to the cache renderer and fold in the cache's placement
|
|
34
|
-
// transform, but keep node.source as the original scene node — the appearance and
|
|
35
|
-
// transform passes read node.source every (dirty) frame, and the handle is not a Node.
|
|
36
|
-
// The cache renderer resolves the handle from this adapter via getRenderProxyCache.
|
|
37
|
-
node.kind = RenderCacheKind;
|
|
38
|
-
multiplyMatrix(node.transform2D, node.transform2D, attached.transform);
|
|
39
|
-
return false;
|
|
40
|
-
},
|
|
41
|
-
});
|
|
42
|
-
return adapter;
|
|
14
|
+
const adapter = allocateEntity();
|
|
15
|
+
initializeRenderCacheAdapter(adapter, cache);
|
|
16
|
+
return finishEntity(adapter);
|
|
43
17
|
}
|
|
44
18
|
/**
|
|
45
19
|
* Opts an adapter into the onPrepare signal, emitted each time the adapter is consulted
|
|
@@ -56,6 +30,40 @@ export function getRenderProxyCache(state, source) {
|
|
|
56
30
|
const adapter = getRenderProxyAdapter(state, source);
|
|
57
31
|
return isRenderCacheAdapter(adapter) ? (adapter.cache ?? null) : null;
|
|
58
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Creates a backend-agnostic cache handle. The handle owns no resource; a backend
|
|
35
|
+
* allocates and stores its own render target on the render state, keyed by this handle,
|
|
36
|
+
* when the cache is first refreshed.
|
|
37
|
+
*/
|
|
38
|
+
export function initializeRenderCache(out) {
|
|
39
|
+
out.kind = RenderCacheKind;
|
|
40
|
+
out.transform = createMatrix();
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Creates an adapter that, during the render update pass, substitutes its cache handle
|
|
44
|
+
* for `source` so the cached result is composited instead of the source subtree being
|
|
45
|
+
* traversed. Returns null from `adapt` (renders normally) until a cache is attached.
|
|
46
|
+
*/
|
|
47
|
+
export function initializeRenderCacheAdapter(adapter, cache = null) {
|
|
48
|
+
// Built through allocateEntity like createRenderCache above it, so the adapter carries the standard
|
|
49
|
+
// runtime slot. `adapt` closes over `adapter` rather than `this`, and the closure only runs long
|
|
50
|
+
// after construction.
|
|
51
|
+
adapter.cache = cache;
|
|
52
|
+
adapter.signals = null;
|
|
53
|
+
adapter.adapt = (_state, _source, node) => {
|
|
54
|
+
adapter.signals?.onPrepare.emit();
|
|
55
|
+
const attached = adapter.cache ?? null;
|
|
56
|
+
if (attached === null)
|
|
57
|
+
return null;
|
|
58
|
+
// Switch the render node to the cache renderer and fold in the cache's placement
|
|
59
|
+
// transform, but keep node.source as the original scene node — the appearance and
|
|
60
|
+
// transform passes read node.source every (dirty) frame, and the handle is not a Node.
|
|
61
|
+
// The cache renderer resolves the handle from this adapter via getRenderProxyCache.
|
|
62
|
+
node.kind = RenderCacheKind;
|
|
63
|
+
multiplyMatrix(node.transform2D, node.transform2D, attached.transform);
|
|
64
|
+
return false;
|
|
65
|
+
};
|
|
66
|
+
}
|
|
59
67
|
export function isRenderCache(source) {
|
|
60
68
|
return typeof source === 'object' && source !== null && source.kind === RenderCacheKind;
|
|
61
69
|
}
|
package/dist/renderCache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderCache.js","sourceRoot":"","sources":["../src/renderCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"renderCache.js","sourceRoot":"","sources":["../src/renderCache.ts"],"names":[],"mappings":"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"}
|
package/dist/renderProxy.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { HasBoundsRectangle, HasTransform2D,
|
|
1
|
+
import type { EntityConstruction, HasBoundsRectangle, HasTransform2D, RenderProxy, RenderProxy2D, RenderProxyVisitor, RenderState, Renderable } from '@flighthq/types/contract';
|
|
2
2
|
type AdaptHook = (state: RenderState, source: Renderable, data: RenderProxy2D) => void;
|
|
3
3
|
export declare function createRenderProxy(state: RenderState, source: Renderable): RenderProxy;
|
|
4
4
|
export declare function createRenderProxy2D(state: RenderState, source: Renderable & HasTransform2D & HasBoundsRectangle): RenderProxy2D;
|
|
@@ -6,6 +6,7 @@ export declare function disposeRenderProxy(state: RenderState, source: Renderabl
|
|
|
6
6
|
export declare function disposeScene2DRender(state: RenderState, root: Renderable): void;
|
|
7
7
|
export declare function getOrCreateRenderProxy2D(state: RenderState, source: Renderable): RenderProxy2D;
|
|
8
8
|
export declare function getRenderProxy2D(state: RenderState, source: Renderable): RenderProxy2D | undefined;
|
|
9
|
+
export declare function initializeRenderProxy(out: EntityConstruction<RenderProxy>, state: RenderState, source: Renderable): void;
|
|
9
10
|
export declare function installRenderAdaptHook(state: RenderState, fn: AdaptHook): void;
|
|
10
11
|
export declare function isRenderProxyDirty(state: RenderState, source: Renderable, data: RenderProxy, parentData?: RenderProxy): boolean;
|
|
11
12
|
export declare function isRenderProxyVisible(data: RenderProxy2D): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderProxy.d.ts","sourceRoot":"","sources":["../src/renderProxy.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"renderProxy.d.ts","sourceRoot":"","sources":["../src/renderProxy.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EAGd,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,UAAU,EACX,MAAM,0BAA0B,CAAC;AAQlC,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,CAIrF;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,qBAAqB,CACnC,GAAG,EAAE,kBAAkB,CAAC,WAAW,CAAC,EACpC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,UAAU,GACjB,IAAI,CAyBN;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,CAsBN;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAWrF;AAgBD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAiDjG"}
|
package/dist/renderProxy.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
2
2
|
import { createMatrix } from '@flighthq/geometry/contract';
|
|
3
3
|
import { getNodeAppearanceRevision, getNodeChildrenRevision, getNodeLocalContentRevision, getNodeLocalTransformRevision, getNodeParentReferenceRevision, getNodeParent, getNodeRuntime, } from '@flighthq/node/contract';
|
|
4
4
|
import { getRegistryTableEntry } from '@flighthq/registry/contract';
|
|
@@ -8,32 +8,9 @@ import { updateRenderProxyMaterial } from './renderMaterial';
|
|
|
8
8
|
import { getRenderStateRuntime } from './renderState';
|
|
9
9
|
import { updateRenderProxy2DTransform } from './renderTransform2d';
|
|
10
10
|
export function createRenderProxy(state, source) {
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
return
|
|
14
|
-
source: source,
|
|
15
|
-
kind: source.kind,
|
|
16
|
-
next: null,
|
|
17
|
-
alpha: 1,
|
|
18
|
-
appearanceFrameId: -1,
|
|
19
|
-
blendMode: BlendMode.Normal,
|
|
20
|
-
colorScaleBias: null,
|
|
21
|
-
colorMatrix: null,
|
|
22
|
-
material: null,
|
|
23
|
-
materialData: null,
|
|
24
|
-
lastAppearanceId: -1,
|
|
25
|
-
lastChildrenId: -1,
|
|
26
|
-
lastLocalContentId: -1,
|
|
27
|
-
lastLocalTransformId: -1,
|
|
28
|
-
lastParentReferenceId: -1,
|
|
29
|
-
name: null,
|
|
30
|
-
renderer: renderer,
|
|
31
|
-
rendererData: renderer?.createData(state, source) ?? null,
|
|
32
|
-
rendererDataSource: source,
|
|
33
|
-
rendererMapId: runtime.rendererMapId,
|
|
34
|
-
transformFrameId: -1,
|
|
35
|
-
visible: true,
|
|
36
|
-
});
|
|
11
|
+
const out = allocateEntity();
|
|
12
|
+
initializeRenderProxy(out, state, source);
|
|
13
|
+
return finishEntity(out);
|
|
37
14
|
}
|
|
38
15
|
// The one render-node allocator for the 2D graph. Sprites and display objects produce the same
|
|
39
16
|
// RenderProxy2D — there is no per-family render identity. What differs between them is the traits
|
|
@@ -87,6 +64,32 @@ export function getOrCreateRenderProxy2D(state, source) {
|
|
|
87
64
|
export function getRenderProxy2D(state, source) {
|
|
88
65
|
return getRenderStateRuntime(state).renderProxyMap.get(source);
|
|
89
66
|
}
|
|
67
|
+
export function initializeRenderProxy(out, state, source) {
|
|
68
|
+
const runtime = getRenderStateRuntime(state);
|
|
69
|
+
const renderer = resolveRenderProxyRenderer(state, source.kind);
|
|
70
|
+
out.source = source;
|
|
71
|
+
out.kind = source.kind;
|
|
72
|
+
out.next = null;
|
|
73
|
+
out.alpha = 1;
|
|
74
|
+
out.appearanceFrameId = -1;
|
|
75
|
+
out.blendMode = BlendMode.Normal;
|
|
76
|
+
out.colorScaleBias = null;
|
|
77
|
+
out.colorMatrix = null;
|
|
78
|
+
out.material = null;
|
|
79
|
+
out.materialData = null;
|
|
80
|
+
out.lastAppearanceId = -1;
|
|
81
|
+
out.lastChildrenId = -1;
|
|
82
|
+
out.lastLocalContentId = -1;
|
|
83
|
+
out.lastLocalTransformId = -1;
|
|
84
|
+
out.lastParentReferenceId = -1;
|
|
85
|
+
out.name = null;
|
|
86
|
+
out.renderer = renderer;
|
|
87
|
+
out.rendererData = renderer?.createData(state, source) ?? null;
|
|
88
|
+
out.rendererDataSource = source;
|
|
89
|
+
out.rendererMapId = runtime.rendererMapId;
|
|
90
|
+
out.transformFrameId = -1;
|
|
91
|
+
out.visible = true;
|
|
92
|
+
}
|
|
90
93
|
export function installRenderAdaptHook(state, fn) {
|
|
91
94
|
getRenderStateRuntime(state).renderAdaptHook = fn;
|
|
92
95
|
}
|
package/dist/renderProxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderProxy.js","sourceRoot":"","sources":["../src/renderProxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"renderProxy.js","sourceRoot":"","sources":["../src/renderProxy.ts"],"names":[],"mappings":"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"}
|
package/dist/renderQueue.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { EntityConstruction, RenderProxy, RenderQueue, RenderQueueEntry, RenderSortKey, RenderState, Renderable } from '@flighthq/types/contract';
|
|
2
2
|
export declare function buildRenderQueue(state: RenderState, source: Renderable, out: RenderQueue): void;
|
|
3
3
|
export declare function clearRenderQueue(queue: RenderQueue): void;
|
|
4
4
|
export declare function compareRenderQueueEntries(a: RenderQueueEntry, b: RenderQueueEntry): number;
|
|
5
5
|
export declare function createRenderQueue(): RenderQueue;
|
|
6
|
+
export declare function initializeRenderQueue(out: EntityConstruction<RenderQueue>): void;
|
|
6
7
|
export declare function packRenderSortKey(layer: number, depth: number, isTransparent: boolean): RenderSortKey;
|
|
7
8
|
export declare function pushRenderQueueEntry(queue: RenderQueue, proxy: RenderProxy, sortKey: RenderSortKey): void;
|
|
8
9
|
export declare function sortRenderQueue(queue: RenderQueue, compare?: (a: RenderQueueEntry, b: RenderQueueEntry) => number): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderQueue.d.ts","sourceRoot":"","sources":["../src/renderQueue.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"renderQueue.d.ts","sourceRoot":"","sources":["../src/renderQueue.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAElB,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,UAAU,EACX,MAAM,0BAA0B,CAAC;AAWlC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CA0B/F;AAID,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAEzD;AAGD,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAE1F;AAED,wBAAgB,iBAAiB,IAAI,WAAW,CAI/C;AAID,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,CAAC,WAAW,CAAC,GAAG,IAAI,CAGhF;AAUD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,aAAa,CAKrG;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAQzG;AAMD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,KAAK,MAAM,GAC7D,IAAI,CAON"}
|
package/dist/renderQueue.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
2
2
|
import { getNodeRuntime } from '@flighthq/node/contract';
|
|
3
3
|
import { getRenderStateRuntime } from './renderState';
|
|
4
4
|
// Fills `out` by walking the prepared subtree rooted at `source` and pushing one entry per visible
|
|
@@ -46,10 +46,16 @@ export function clearRenderQueue(queue) {
|
|
|
46
46
|
export function compareRenderQueueEntries(a, b) {
|
|
47
47
|
return a.sortKey - b.sortKey;
|
|
48
48
|
}
|
|
49
|
+
export function createRenderQueue() {
|
|
50
|
+
const out = allocateEntity();
|
|
51
|
+
initializeRenderQueue(out);
|
|
52
|
+
return finishEntity(out);
|
|
53
|
+
}
|
|
49
54
|
// Creates a new empty RenderQueue. The entries array is pre-allocated empty; entries grow as
|
|
50
55
|
// pushRenderQueueEntry or buildRenderQueue populates it. Cleared between frames by clearRenderQueue.
|
|
51
|
-
export function
|
|
52
|
-
|
|
56
|
+
export function initializeRenderQueue(out) {
|
|
57
|
+
out.entries = [];
|
|
58
|
+
out.entryCount = 0;
|
|
53
59
|
}
|
|
54
60
|
// Packs a layer index, a normalized depth (0..1), and an opaque flag into a single sort key
|
|
55
61
|
// float. Layer is the most-significant axis; within a layer, opaque geometry sorts before
|
package/dist/renderQueue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderQueue.js","sourceRoot":"","sources":["../src/renderQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"renderQueue.js","sourceRoot":"","sources":["../src/renderQueue.ts"],"names":[],"mappings":"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"}
|
package/dist/renderState.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { ColorAdjustmentUnsupportedGuard, RenderState, RenderStateRuntime } from '@flighthq/types/contract';
|
|
1
|
+
import type { ColorAdjustmentUnsupportedGuard, RenderState, RenderStateRuntime, EntityConstruction } from '@flighthq/types/contract';
|
|
2
2
|
export declare function createRenderState(obj?: Partial<RenderState>): RenderState;
|
|
3
3
|
export declare function createRenderStateRuntime(): RenderStateRuntime;
|
|
4
4
|
export declare function destroyRenderState(state: RenderState): void;
|
|
5
5
|
export declare function getColorAdjustmentUnsupportedGuard(state: RenderState): ColorAdjustmentUnsupportedGuard | null;
|
|
6
6
|
export declare function getRenderStateRuntime(state: RenderState): RenderStateRuntime;
|
|
7
|
+
export declare function initializeRenderState(state: EntityConstruction<RenderState>, obj?: Partial<RenderState>): void;
|
|
7
8
|
//# sourceMappingURL=renderState.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderState.d.ts","sourceRoot":"","sources":["../src/renderState.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,+BAA+B,
|
|
1
|
+
{"version":3,"file":"renderState.d.ts","sourceRoot":"","sources":["../src/renderState.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,+BAA+B,EAC/B,WAAW,EACX,kBAAkB,EAElB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAGlC,wBAAgB,iBAAiB,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAIzE;AAOD,wBAAgB,wBAAwB,IAAI,kBAAkB,CAe7D;AAID,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAO3D;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,WAAW,GAAG,+BAA+B,GAAG,IAAI,CAG7G;AAID,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,kBAAkB,CAE5E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAe9G"}
|
package/dist/renderState.js
CHANGED
|
@@ -1,23 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { allocateEntity, createEntityRuntime, finishEntity } from '@flighthq/entity/contract';
|
|
2
2
|
import { createKeyedTable, createSlotTable } from '@flighthq/registry/contract';
|
|
3
3
|
import { BlendMode, EntityRuntimeKey, RegistryEntryState } from '@flighthq/types/contract';
|
|
4
4
|
export function createRenderState(obj) {
|
|
5
|
-
const state =
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
backgroundColorRgba: obj?.backgroundColorRgba ?? [],
|
|
9
|
-
backgroundColorString: obj?.backgroundColorString ?? '',
|
|
10
|
-
currentClipDepth: obj?.currentClipDepth ?? 0,
|
|
11
|
-
displayObjectClipHooks: obj?.displayObjectClipHooks ?? null,
|
|
12
|
-
pixelRatio: obj?.pixelRatio ?? 1,
|
|
13
|
-
renderAlpha: obj?.renderAlpha ?? 1,
|
|
14
|
-
renderBlendMode: obj?.renderBlendMode ?? BlendMode.Normal,
|
|
15
|
-
renderTransform2D: obj?.renderTransform2D ?? null,
|
|
16
|
-
roundPixels: obj?.roundPixels ?? false,
|
|
17
|
-
sceneGraphSyncPolicy: obj?.sceneGraphSyncPolicy ?? 'refreshDerivedState',
|
|
18
|
-
});
|
|
19
|
-
state[EntityRuntimeKey] = createRenderStateRuntime();
|
|
20
|
-
return state;
|
|
5
|
+
const state = allocateEntity();
|
|
6
|
+
initializeRenderState(state, obj);
|
|
7
|
+
return finishEntity(state);
|
|
21
8
|
}
|
|
22
9
|
// Allocates the package-private machinery runtime for a RenderState: the frame counter, proxy maps,
|
|
23
10
|
// and renderer registry shared across every backend. createRenderState attaches one under
|
|
@@ -60,6 +47,22 @@ export function getColorAdjustmentUnsupportedGuard(state) {
|
|
|
60
47
|
export function getRenderStateRuntime(state) {
|
|
61
48
|
return state[EntityRuntimeKey];
|
|
62
49
|
}
|
|
50
|
+
export function initializeRenderState(state, obj) {
|
|
51
|
+
state.allowSmoothing = obj?.allowSmoothing ?? true;
|
|
52
|
+
state.backgroundColor = obj?.backgroundColor ?? 0;
|
|
53
|
+
state.backgroundColorRgba = obj?.backgroundColorRgba ?? [];
|
|
54
|
+
state.backgroundColorString = obj?.backgroundColorString ?? '';
|
|
55
|
+
state.currentClipDepth = obj?.currentClipDepth ?? 0;
|
|
56
|
+
state.displayObjectClipHooks = obj?.displayObjectClipHooks ?? null;
|
|
57
|
+
state.pixelRatio = obj?.pixelRatio ?? 1;
|
|
58
|
+
state.raster2DSurfaceProvider = obj?.raster2DSurfaceProvider ?? null;
|
|
59
|
+
state.renderAlpha = obj?.renderAlpha ?? 1;
|
|
60
|
+
state.renderBlendMode = obj?.renderBlendMode ?? BlendMode.Normal;
|
|
61
|
+
state.renderTransform2D = obj?.renderTransform2D ?? null;
|
|
62
|
+
state.roundPixels = obj?.roundPixels ?? false;
|
|
63
|
+
state.sceneGraphSyncPolicy = obj?.sceneGraphSyncPolicy ?? 'refreshDerivedState';
|
|
64
|
+
state[EntityRuntimeKey] = createRenderStateRuntime();
|
|
65
|
+
}
|
|
63
66
|
function disposeRenderProxyForShutdown(state, source) {
|
|
64
67
|
const runtime = getRenderStateRuntime(state);
|
|
65
68
|
const proxy = runtime.renderProxyMap.get(source);
|
package/dist/renderState.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderState.js","sourceRoot":"","sources":["../src/renderState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"renderState.js","sourceRoot":"","sources":["../src/renderState.ts"],"names":[],"mappings":"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"}
|
package/dist/renderViewport.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { Matrix, Rectangle, RenderProxy2D, RenderViewport2D } from '@flighthq/types/contract';
|
|
1
|
+
import type { EntityConstruction, Matrix, Rectangle, RenderProxy2D, RenderViewport2D } from '@flighthq/types/contract';
|
|
2
2
|
export declare function computeRenderProxyWorldBounds(out: Pick<Rectangle, 'x' | 'y' | 'width' | 'height'>, source: unknown): boolean;
|
|
3
3
|
export declare function createRenderViewport2D(x: number, y: number, width: number, height: number): RenderViewport2D;
|
|
4
|
+
export declare function initializeRenderViewport2D(out: EntityConstruction<RenderViewport2D>, x: number, y: number, width: number, height: number): void;
|
|
4
5
|
export declare function isRenderableInViewport(source: unknown, viewport: Readonly<RenderViewport2D>, renderTransform2D?: Readonly<Matrix> | null): boolean;
|
|
5
6
|
export declare function isRenderProxyInViewport(proxy: Readonly<RenderProxy2D>, viewport: Readonly<RenderViewport2D>, renderTransform2D?: Readonly<Matrix> | null): boolean;
|
|
6
7
|
//# sourceMappingURL=renderViewport.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderViewport.d.ts","sourceRoot":"","sources":["../src/renderViewport.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"renderViewport.d.ts","sourceRoot":"","sources":["../src/renderViewport.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,EAClB,MAAM,EACN,SAAS,EACT,aAAa,EACb,gBAAgB,EAEjB,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,QAAQ,CAAC,EACpD,MAAM,EAAE,OAAO,GACd,OAAO,CAQT;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAI5G;AAGD,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,EACzC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,IAAI,CAKN;AAOD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EACpC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,GAC1C,OAAO,CAoBT;AAID,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC9B,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EACpC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,GAC1C,OAAO,CAET"}
|
package/dist/renderViewport.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
2
2
|
import { createRectangle, matrixTransformRectangle } from '@flighthq/geometry/contract';
|
|
3
3
|
import { getNodeWorldBoundsRectangle } from '@flighthq/node/contract';
|
|
4
4
|
// Writes the world-space axis-aligned bounding box of `source` into `out`. Returns true when
|
|
@@ -14,9 +14,17 @@ export function computeRenderProxyWorldBounds(out, source) {
|
|
|
14
14
|
out.height = worldBounds.height;
|
|
15
15
|
return true;
|
|
16
16
|
}
|
|
17
|
-
// Allocates and returns a new RenderViewport2D with the given screen-space region.
|
|
18
17
|
export function createRenderViewport2D(x, y, width, height) {
|
|
19
|
-
|
|
18
|
+
const out = allocateEntity();
|
|
19
|
+
initializeRenderViewport2D(out, x, y, width, height);
|
|
20
|
+
return finishEntity(out);
|
|
21
|
+
}
|
|
22
|
+
// Allocates and returns a new RenderViewport2D with the given screen-space region.
|
|
23
|
+
export function initializeRenderViewport2D(out, x, y, width, height) {
|
|
24
|
+
out.height = height;
|
|
25
|
+
out.width = width;
|
|
26
|
+
out.x = x;
|
|
27
|
+
out.y = y;
|
|
20
28
|
}
|
|
21
29
|
// Returns true when `source` may be visible within `viewport`. Conservative: returns true when
|
|
22
30
|
// the source carries no spatial traits (bounds unknown). When spatial bounds are available, uses
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderViewport.js","sourceRoot":"","sources":["../src/renderViewport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"renderViewport.js","sourceRoot":"","sources":["../src/renderViewport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAUtE,6FAA6F;AAC7F,0FAA0F;AAC1F,mDAAmD;AACnD,MAAM,UAAU,6BAA6B,CAC3C,GAAoD,EACpD,MAAe;IAEf,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,MAAM,WAAW,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACxD,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IACtB,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IACtB,GAAG,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;IAC9B,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc;IACxF,MAAM,GAAG,GAAG,cAAc,EAAoB,CAAC;IAC/C,0BAA0B,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACrD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,0BAA0B,CACxC,GAAyC,EACzC,CAAS,EACT,CAAS,EACT,KAAa,EACb,MAAc;IAEd,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;IACpB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;IAClB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACV,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACZ,CAAC;AAED,+FAA+F;AAC/F,iGAAiG;AACjG,+FAA+F;AAC/F,6FAA6F;AAC7F,yDAAyD;AACzD,MAAM,UAAU,sBAAsB,CACpC,MAAe,EACf,QAAoC,EACpC,iBAA2C;IAE3C,IAAI,CAAC,6BAA6B,CAAC,cAAc,EAAE,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAExE,IAAI,MAAM,GAAG,cAAc,CAAC;IAC5B,IAAI,iBAAiB,IAAI,IAAI,EAAE,CAAC;QAC9B,wBAAwB,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;QACjF,MAAM,GAAG,mBAAmB,CAAC;IAC/B,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;IACzB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;IACzB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IAEzC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IAE5C,OAAO,CAAC,CAAC,OAAO,GAAG,MAAM,IAAI,OAAO,GAAG,MAAM,IAAI,OAAO,GAAG,MAAM,IAAI,OAAO,GAAG,MAAM,CAAC,CAAC;AACzF,CAAC;AAED,6FAA6F;AAC7F,mDAAmD;AACnD,MAAM,UAAU,uBAAuB,CACrC,KAA8B,EAC9B,QAAoC,EACpC,iBAA2C;IAE3C,OAAO,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC3E,CAAC;AAED,sGAAsG;AACtG,gGAAgG;AAChG,wEAAwE;AACxE,SAAS,eAAe,CAAC,MAAe;IACtC,OAAO,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,QAAQ,IAAI,MAAM,IAAI,OAAO,IAAI,MAAM,CAAC;AAClG,CAAC;AAED,oGAAoG;AACpG,MAAM,cAAc,GAAG,eAAe,EAAE,CAAC;AACzC,MAAM,mBAAmB,GAAG,eAAe,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/render",
|
|
3
|
-
"version": "0.5.1-next.
|
|
3
|
+
"version": "0.5.1-next.903.f434bc2",
|
|
4
4
|
"author": "Joshua Granick and other contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,17 +38,17 @@
|
|
|
38
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@flighthq/adjustments": "0.5.1-next.
|
|
42
|
-
"@flighthq/color": "0.5.1-next.
|
|
43
|
-
"@flighthq/entity": "0.5.1-next.
|
|
44
|
-
"@flighthq/geometry": "0.5.1-next.
|
|
45
|
-
"@flighthq/log": "0.5.1-next.
|
|
46
|
-
"@flighthq/materials": "0.5.1-next.
|
|
47
|
-
"@flighthq/mesh": "0.5.1-next.
|
|
48
|
-
"@flighthq/node": "0.5.1-next.
|
|
49
|
-
"@flighthq/registry": "0.5.1-next.
|
|
50
|
-
"@flighthq/signals": "0.5.1-next.
|
|
51
|
-
"@flighthq/types": "0.5.1-next.
|
|
41
|
+
"@flighthq/adjustments": "0.5.1-next.903.f434bc2",
|
|
42
|
+
"@flighthq/color": "0.5.1-next.903.f434bc2",
|
|
43
|
+
"@flighthq/entity": "0.5.1-next.903.f434bc2",
|
|
44
|
+
"@flighthq/geometry": "0.5.1-next.903.f434bc2",
|
|
45
|
+
"@flighthq/log": "0.5.1-next.903.f434bc2",
|
|
46
|
+
"@flighthq/materials": "0.5.1-next.903.f434bc2",
|
|
47
|
+
"@flighthq/mesh": "0.5.1-next.903.f434bc2",
|
|
48
|
+
"@flighthq/node": "0.5.1-next.903.f434bc2",
|
|
49
|
+
"@flighthq/registry": "0.5.1-next.903.f434bc2",
|
|
50
|
+
"@flighthq/signals": "0.5.1-next.903.f434bc2",
|
|
51
|
+
"@flighthq/types": "0.5.1-next.903.f434bc2"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@flighthq/camera": "*",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createTintAdjustment } from '@flighthq/adjustments/contract';
|
|
2
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
2
3
|
import { addLogSink, createMemoryLogSink, getMemoryLogSinkEntries, removeLogSink } from '@flighthq/log/contract';
|
|
3
4
|
import { setNodeColorAdjustments } from '@flighthq/node/contract';
|
|
4
5
|
import { createDisplayObject } from '@flighthq/scene2d/contract';
|
|
@@ -34,8 +35,9 @@ describe('enableColorAdjustmentGuards', () => {
|
|
|
34
35
|
enableColorAdjustmentGuards(state);
|
|
35
36
|
enableColorAdjustments(state);
|
|
36
37
|
const node = createDisplayObject();
|
|
37
|
-
const lut
|
|
38
|
-
|
|
38
|
+
const lut = allocateEntity<any>();
|
|
39
|
+
lut.kind = 'acme.Lut';
|
|
40
|
+
setNodeColorAdjustments(node, [lut as Adjustment]);
|
|
39
41
|
const data = createRenderProxy(state, node as unknown as Renderable);
|
|
40
42
|
const sink = createMemoryLogSink(8);
|
|
41
43
|
addLogSink(sink.sink);
|
|
@@ -1,63 +1,50 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
2
2
|
import type { Entity, Raster2DSurface, Raster2DSurfaceProvider } from '@flighthq/types/contract';
|
|
3
3
|
|
|
4
|
-
import {
|
|
5
|
-
createRaster2DSurface,
|
|
6
|
-
destroyRaster2DSurface,
|
|
7
|
-
explainRaster2DSurfaceProvider,
|
|
8
|
-
getRaster2DSurfaceProvider,
|
|
9
|
-
hasRaster2DSurfaceHostProvider,
|
|
10
|
-
installRaster2DSurfaceHostProvider,
|
|
11
|
-
resetRaster2DSurfaceProviderForTest,
|
|
12
|
-
setRaster2DSurfaceProvider,
|
|
13
|
-
} from './raster2DSurface';
|
|
14
|
-
|
|
15
|
-
afterEach(() => {
|
|
16
|
-
resetRaster2DSurfaceProviderForTest();
|
|
17
|
-
});
|
|
4
|
+
import { createRaster2DSurface, destroyRaster2DSurface } from './raster2DSurface';
|
|
18
5
|
|
|
19
6
|
function entityProvider(fields: Omit<Raster2DSurfaceProvider, keyof Entity>): Raster2DSurfaceProvider {
|
|
20
|
-
return
|
|
7
|
+
return (() => {
|
|
8
|
+
const out = allocateEntity<any>();
|
|
9
|
+
Object.assign(out, fields);
|
|
10
|
+
return finishEntity(out);
|
|
11
|
+
})();
|
|
21
12
|
}
|
|
22
13
|
|
|
23
14
|
describe('createRaster2DSurface', () => {
|
|
24
|
-
it('passes exact dimensions through the
|
|
15
|
+
it('passes exact dimensions through the given provider and preserves its result', () => {
|
|
25
16
|
const surface = {} as Raster2DSurface;
|
|
26
|
-
const
|
|
27
|
-
|
|
17
|
+
const create = vi.fn(() => surface);
|
|
18
|
+
const provider = entityProvider({ createRaster2DSurface: create, destroyRaster2DSurface() {} });
|
|
28
19
|
|
|
29
|
-
expect(createRaster2DSurface(30, 40)).toBe(surface);
|
|
30
|
-
expect(
|
|
31
|
-
expect(
|
|
20
|
+
expect(createRaster2DSurface(provider, 30, 40)).toBe(surface);
|
|
21
|
+
expect(create).toHaveBeenCalledOnce();
|
|
22
|
+
expect(create).toHaveBeenCalledWith(30, 40);
|
|
32
23
|
});
|
|
33
24
|
|
|
34
25
|
it('preserves provider refusal as expected absence', () => {
|
|
35
|
-
|
|
36
|
-
expect(createRaster2DSurface(10, 20)).toBeNull();
|
|
26
|
+
const provider = entityProvider({ createRaster2DSurface: () => null, destroyRaster2DSurface() {} });
|
|
27
|
+
expect(createRaster2DSurface(provider, 10, 20)).toBeNull();
|
|
37
28
|
});
|
|
38
29
|
});
|
|
39
30
|
|
|
40
31
|
describe('destroyRaster2DSurface', () => {
|
|
41
|
-
it('routes each surface to its creator
|
|
32
|
+
it('routes each surface to its creator even when different providers were used', () => {
|
|
42
33
|
const firstSurface = {} as Raster2DSurface;
|
|
43
34
|
const secondSurface = {} as Raster2DSurface;
|
|
44
35
|
const firstDestroy = vi.fn();
|
|
45
36
|
const secondDestroy = vi.fn();
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
37
|
+
const first = entityProvider({
|
|
38
|
+
createRaster2DSurface: () => firstSurface,
|
|
39
|
+
destroyRaster2DSurface: firstDestroy,
|
|
40
|
+
});
|
|
41
|
+
const second = entityProvider({
|
|
42
|
+
createRaster2DSurface: () => secondSurface,
|
|
43
|
+
destroyRaster2DSurface: secondDestroy,
|
|
44
|
+
});
|
|
53
45
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
createRaster2DSurface: () => secondSurface,
|
|
57
|
-
destroyRaster2DSurface: secondDestroy,
|
|
58
|
-
}),
|
|
59
|
-
);
|
|
60
|
-
expect(createRaster2DSurface(30, 40)).toBe(secondSurface);
|
|
46
|
+
expect(createRaster2DSurface(first, 10, 20)).toBe(firstSurface);
|
|
47
|
+
expect(createRaster2DSurface(second, 30, 40)).toBe(secondSurface);
|
|
61
48
|
|
|
62
49
|
destroyRaster2DSurface(firstSurface);
|
|
63
50
|
destroyRaster2DSurface(secondSurface);
|
|
@@ -66,114 +53,22 @@ describe('destroyRaster2DSurface', () => {
|
|
|
66
53
|
expect(secondDestroy).toHaveBeenCalledExactlyOnceWith(secondSurface);
|
|
67
54
|
});
|
|
68
55
|
|
|
69
|
-
it('is a no-op after the
|
|
56
|
+
it('is a no-op after the surface has been destroyed once', () => {
|
|
70
57
|
const surface = {} as Raster2DSurface;
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
);
|
|
78
|
-
expect(createRaster2DSurface(10, 20)).toBe(surface);
|
|
58
|
+
const destroy = vi.fn();
|
|
59
|
+
const provider = entityProvider({
|
|
60
|
+
createRaster2DSurface: () => surface,
|
|
61
|
+
destroyRaster2DSurface: destroy,
|
|
62
|
+
});
|
|
63
|
+
expect(createRaster2DSurface(provider, 10, 20)).toBe(surface);
|
|
79
64
|
|
|
80
65
|
destroyRaster2DSurface(surface);
|
|
81
66
|
destroyRaster2DSurface(surface);
|
|
82
67
|
|
|
83
|
-
expect(
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
describe('explainRaster2DSurfaceProvider', () => {
|
|
88
|
-
it('reports the stable sentinel as host-not-enabled', () => {
|
|
89
|
-
expect(explainRaster2DSurfaceProvider()).toEqual({
|
|
90
|
-
conflict: false,
|
|
91
|
-
layer: 'host-not-enabled',
|
|
92
|
-
operation: null,
|
|
93
|
-
viability: 'unobserved',
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
it('reports a competing host installation without replacing the first host', () => {
|
|
98
|
-
const first = entityProvider({ createRaster2DSurface: () => null, destroyRaster2DSurface() {} });
|
|
99
|
-
const second = entityProvider({ createRaster2DSurface: () => null, destroyRaster2DSurface() {} });
|
|
100
|
-
installRaster2DSurfaceHostProvider(first);
|
|
101
|
-
installRaster2DSurfaceHostProvider(second);
|
|
102
|
-
|
|
103
|
-
expect(explainRaster2DSurfaceProvider()).toMatchObject({ conflict: true, layer: 'host' });
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
describe('getRaster2DSurfaceProvider', () => {
|
|
108
|
-
it('uses one stable null-returning sentinel when no provider is installed', () => {
|
|
109
|
-
const sentinel = getRaster2DSurfaceProvider();
|
|
110
|
-
expect(getRaster2DSurfaceProvider()).toBe(sentinel);
|
|
111
|
-
expect(sentinel.createRaster2DSurface(10, 20)).toBeNull();
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
it('selects a custom provider over the host provider', () => {
|
|
115
|
-
const host = entityProvider({ createRaster2DSurface: () => null, destroyRaster2DSurface() {} });
|
|
116
|
-
const custom = entityProvider({ createRaster2DSurface: () => null, destroyRaster2DSurface() {} });
|
|
117
|
-
installRaster2DSurfaceHostProvider(host);
|
|
118
|
-
setRaster2DSurfaceProvider(custom);
|
|
119
|
-
|
|
120
|
-
expect(getRaster2DSurfaceProvider()).toBe(custom);
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
describe('hasRaster2DSurfaceHostProvider', () => {
|
|
125
|
-
it('reports only the host slot', () => {
|
|
126
|
-
setRaster2DSurfaceProvider(entityProvider({ createRaster2DSurface: () => null, destroyRaster2DSurface() {} }));
|
|
127
|
-
expect(hasRaster2DSurfaceHostProvider()).toBe(false);
|
|
128
|
-
installRaster2DSurfaceHostProvider(
|
|
129
|
-
entityProvider({ createRaster2DSurface: () => null, destroyRaster2DSurface() {} }),
|
|
130
|
-
);
|
|
131
|
-
expect(hasRaster2DSurfaceHostProvider()).toBe(true);
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
describe('installRaster2DSurfaceHostProvider', () => {
|
|
136
|
-
it('keeps the first host provider', () => {
|
|
137
|
-
const first = entityProvider({ createRaster2DSurface: () => null, destroyRaster2DSurface() {} });
|
|
138
|
-
installRaster2DSurfaceHostProvider(first);
|
|
139
|
-
installRaster2DSurfaceHostProvider(
|
|
140
|
-
entityProvider({ createRaster2DSurface: () => null, destroyRaster2DSurface() {} }),
|
|
141
|
-
);
|
|
142
|
-
|
|
143
|
-
expect(getRaster2DSurfaceProvider()).toBe(first);
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
describe('resetRaster2DSurfaceProviderForTest', () => {
|
|
148
|
-
it('clears custom, host, and conflict state', () => {
|
|
149
|
-
installRaster2DSurfaceHostProvider(
|
|
150
|
-
entityProvider({ createRaster2DSurface: () => null, destroyRaster2DSurface() {} }),
|
|
151
|
-
);
|
|
152
|
-
installRaster2DSurfaceHostProvider(
|
|
153
|
-
entityProvider({ createRaster2DSurface: () => null, destroyRaster2DSurface() {} }),
|
|
154
|
-
);
|
|
155
|
-
setRaster2DSurfaceProvider(entityProvider({ createRaster2DSurface: () => null, destroyRaster2DSurface() {} }));
|
|
156
|
-
|
|
157
|
-
resetRaster2DSurfaceProviderForTest();
|
|
158
|
-
|
|
159
|
-
expect(hasRaster2DSurfaceHostProvider()).toBe(false);
|
|
160
|
-
expect(explainRaster2DSurfaceProvider()).toMatchObject({ conflict: false, layer: 'host-not-enabled' });
|
|
68
|
+
expect(destroy).toHaveBeenCalledOnce();
|
|
161
69
|
});
|
|
162
|
-
});
|
|
163
|
-
|
|
164
|
-
describe('setRaster2DSurfaceProvider', () => {
|
|
165
|
-
it('reveals the host provider again when custom is cleared', () => {
|
|
166
|
-
const hostSurface = { width: 1 } as Raster2DSurface;
|
|
167
|
-
const customSurface = { width: 2 } as Raster2DSurface;
|
|
168
|
-
const host = entityProvider({ createRaster2DSurface: () => hostSurface, destroyRaster2DSurface() {} });
|
|
169
|
-
installRaster2DSurfaceHostProvider(host);
|
|
170
|
-
setRaster2DSurfaceProvider(
|
|
171
|
-
entityProvider({ createRaster2DSurface: () => customSurface, destroyRaster2DSurface() {} }),
|
|
172
|
-
);
|
|
173
70
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
expect(getRaster2DSurfaceProvider()).toBe(host);
|
|
177
|
-
expect(createRaster2DSurface(1, 1)).toBe(hostSurface);
|
|
71
|
+
it('is a no-op for an unknown surface', () => {
|
|
72
|
+
expect(() => destroyRaster2DSurface({} as Raster2DSurface)).not.toThrow();
|
|
178
73
|
});
|
|
179
74
|
});
|
package/src/renderCache.test.ts
CHANGED
|
@@ -29,7 +29,7 @@ describe('createRenderCacheAdapter', () => {
|
|
|
29
29
|
it('returns an Entity, so the adapter can carry runtime state like every other SDK object', () => {
|
|
30
30
|
// Pinned on the KEY rather than on a helper: an adapter built by a plain object literal satisfies
|
|
31
31
|
// the RenderCacheAdapter type and every behavioural test below, and only the missing runtime slot
|
|
32
|
-
// tells it apart from one built through
|
|
32
|
+
// tells it apart from one built through allocateEntity.
|
|
33
33
|
const adapter = createRenderCacheAdapter();
|
|
34
34
|
expect(EntityRuntimeKey in adapter).toBe(true);
|
|
35
35
|
expect(adapter[EntityRuntimeKey]).toBeUndefined();
|
package/src/renderProxy.test.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
2
2
|
import { createMatrix, createRectangle } from '@flighthq/geometry/contract';
|
|
3
3
|
import {
|
|
4
4
|
addNodeChild,
|
|
@@ -47,7 +47,12 @@ function makeRenderer() {
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
function makeClipRegion(): ClipRegion {
|
|
50
|
-
|
|
50
|
+
const out = allocateEntity<ClipRegion>();
|
|
51
|
+
out.contours = null;
|
|
52
|
+
out.rect = createRectangle(0, 0, 10, 10);
|
|
53
|
+
out.winding = 'nonZero';
|
|
54
|
+
out.version = 0;
|
|
55
|
+
return finishEntity(out);
|
|
51
56
|
}
|
|
52
57
|
|
|
53
58
|
function markRenderProxyClean<Traits extends object>(data: RenderProxy, source: Node<Traits>): void {
|