@flighthq/scene2d 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 CHANGED
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/scene2d`. The `@flig
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/scene2d@0.5.1-next.815.cc08b93](https://github.com/flighthq/flight/tree/cc08b93ef981080fa86bdd5143dc61dbdbf2665b/packages/scene2d)
17
- - [License](https://github.com/flighthq/flight/blob/cc08b93ef981080fa86bdd5143dc61dbdbf2665b/LICENSE.md)
16
+ - [Source for @flighthq/scene2d@0.5.1-next.903.f434bc2](https://github.com/flighthq/flight/tree/f434bc233778d75aeea61995df3a8cfaec459a85/packages/scene2d)
17
+ - [License](https://github.com/flighthq/flight/blob/f434bc233778d75aeea61995df3a8cfaec459a85/LICENSE.md)
@@ -1,3 +1,4 @@
1
+ export * from './scale9Sprite';
1
2
  export * from './sprite';
2
3
  export * from './displayContainer';
3
4
  export * from './displayObject';
@@ -5,4 +6,8 @@ export * from './displayObjectAnimation';
5
6
  export * from './htmlView';
6
7
  export * from './scene2d';
7
8
  export * from './sceneKindUsage';
9
+ export { initializeSpriteData, initializeSpriteRendererData } from './sprite';
10
+ export { initializeScale9SpriteData } from './scale9Sprite';
11
+ export { initializeScene2DKindUsage } from './sceneKindUsage';
12
+ export { initializeHtmlViewData } from './htmlView';
8
13
  //# sourceMappingURL=contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC"}
package/dist/contract.js CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './scale9Sprite';
1
2
  export * from './sprite';
2
3
  export * from './displayContainer';
3
4
  export * from './displayObject';
@@ -5,4 +6,8 @@ export * from './displayObjectAnimation';
5
6
  export * from './htmlView';
6
7
  export * from './scene2d';
7
8
  export * from './sceneKindUsage';
9
+ export { initializeSpriteData, initializeSpriteRendererData } from './sprite';
10
+ export { initializeScale9SpriteData } from './scale9Sprite';
11
+ export { initializeScene2DKindUsage } from './sceneKindUsage';
12
+ export { initializeHtmlViewData } from './htmlView';
8
13
  //# sourceMappingURL=contract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC"}
@@ -1,8 +1,9 @@
1
- import type { HtmlView, HtmlViewData, HtmlViewRuntime, Node, NonEntityCreateResult, PartialNode, Rectangle } from '@flighthq/types/contract';
1
+ import type { EntityConstruction, HtmlView, HtmlViewData, HtmlViewRuntime, Node, PartialNode, Rectangle } from '@flighthq/types/contract';
2
2
  export declare function computeHtmlViewLocalBoundsRectangle(out: Rectangle, source: Readonly<Node>): void;
3
3
  export declare function createHtmlView(obj?: Readonly<PartialNode<HtmlView>>): HtmlView;
4
- export declare function createHtmlViewData(data?: Readonly<Partial<HtmlViewData>>): NonEntityCreateResult<HtmlViewData, 'descriptor'>;
4
+ export declare function createHtmlViewData(data?: Readonly<Partial<HtmlViewData>>): HtmlViewData;
5
5
  export declare function createHtmlViewRuntime(): HtmlViewRuntime;
6
6
  export declare function getHtmlViewRuntime(source: Readonly<HtmlView>): Readonly<HtmlViewRuntime>;
7
+ export declare function initializeHtmlViewData(out: EntityConstruction<HtmlViewData>, data?: Readonly<Partial<HtmlViewData>>): void;
7
8
  export declare function setHtmlViewSize(source: HtmlView, width: number, height: number): void;
8
9
  //# sourceMappingURL=htmlView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"htmlView.d.ts","sourceRoot":"","sources":["../src/htmlView.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,eAAe,EAEf,IAAI,EACJ,qBAAqB,EACrB,WAAW,EACX,SAAS,EACV,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,mCAAmC,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAIhG;AAED,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAE9E;AAED,wBAAgB,kBAAkB,CAChC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GACrC,qBAAqB,CAAC,YAAY,EAAE,YAAY,CAAC,CAMnD;AAED,wBAAgB,qBAAqB,IAAI,eAAe,CAEvD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAExF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAKrF"}
1
+ {"version":3,"file":"htmlView.d.ts","sourceRoot":"","sources":["../src/htmlView.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,QAAQ,EACR,YAAY,EACZ,eAAe,EAEf,IAAI,EACJ,WAAW,EACX,SAAS,EACV,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,mCAAmC,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAIhG;AAED,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAE9E;AAED,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,YAAY,CAIvF;AAED,wBAAgB,qBAAqB,IAAI,eAAe,CAEvD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAExF;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,kBAAkB,CAAC,YAAY,CAAC,EACrC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GACrC,IAAI,CAIN;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAKrF"}
package/dist/htmlView.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
1
2
  import { invalidateNodeLocalBounds } from '@flighthq/node/contract';
2
3
  import { HtmlViewKind } from '@flighthq/types/contract';
3
4
  import { createNode2D, createNode2DRuntime, getNode2DRuntime } from './displayObject';
@@ -10,11 +11,9 @@ export function createHtmlView(obj) {
10
11
  return createNode2D(HtmlViewKind, obj, createHtmlViewData, createHtmlViewRuntime);
11
12
  }
12
13
  export function createHtmlViewData(data) {
13
- return {
14
- element: data?.element ?? null,
15
- height: data?.height ?? 100,
16
- width: data?.width ?? 100,
17
- };
14
+ const out = allocateEntity();
15
+ initializeHtmlViewData(out, data);
16
+ return finishEntity(out);
18
17
  }
19
18
  export function createHtmlViewRuntime() {
20
19
  return createNode2DRuntime(defaultMethods);
@@ -22,6 +21,11 @@ export function createHtmlViewRuntime() {
22
21
  export function getHtmlViewRuntime(source) {
23
22
  return getNode2DRuntime(source);
24
23
  }
24
+ export function initializeHtmlViewData(out, data) {
25
+ out.element = data?.element ?? null;
26
+ out.height = data?.height ?? 100;
27
+ out.width = data?.width ?? 100;
28
+ }
25
29
  export function setHtmlViewSize(source, width, height) {
26
30
  if (source.data.width === width && source.data.height === height)
27
31
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"htmlView.js","sourceRoot":"","sources":["../src/htmlView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAWpE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEtF,MAAM,UAAU,mCAAmC,CAAC,GAAc,EAAE,MAAsB;IACxF,MAAM,IAAI,GAAI,MAAmB,CAAC,IAAI,CAAC;IACvC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACvB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAqC;IAClE,OAAO,YAAY,CAAC,YAAY,EAAE,GAAG,EAAE,kBAAkB,EAAE,qBAAqB,CAAa,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAAsC;IAEtC,OAAO;QACL,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI;QAC9B,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG;QAC3B,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,GAAG;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,mBAAmB,CAAC,cAAc,CAAoB,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,OAAO,gBAAgB,CAAC,MAAM,CAAoB,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAgB,EAAE,KAAa,EAAE,MAAc;IAC7E,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO;IACzE,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IAC5B,yBAAyB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,cAAc,GAAwC;IAC1D,2BAA2B,EAAE,mCAAmC;CACjE,CAAC"}
1
+ {"version":3,"file":"htmlView.js","sourceRoot":"","sources":["../src/htmlView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAWpE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEtF,MAAM,UAAU,mCAAmC,CAAC,GAAc,EAAE,MAAsB;IACxF,MAAM,IAAI,GAAI,MAAmB,CAAC,IAAI,CAAC;IACvC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACvB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAqC;IAClE,OAAO,YAAY,CAAC,YAAY,EAAE,GAAG,EAAE,kBAAkB,EAAE,qBAAqB,CAAa,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAsC;IACvE,MAAM,GAAG,GAAG,cAAc,EAAgB,CAAC;IAC3C,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,mBAAmB,CAAC,cAAc,CAAoB,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,OAAO,gBAAgB,CAAC,MAAM,CAAoB,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,GAAqC,EACrC,IAAsC;IAEtC,GAAG,CAAC,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC;IACpC,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,GAAG,CAAC;IACjC,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,GAAG,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAgB,EAAE,KAAa,EAAE,MAAc;IAC7E,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO;IACzE,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IAC5B,yBAAyB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,cAAc,GAAwC;IAC1D,2BAA2B,EAAE,mCAAmC;CACjE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { applyAnimationClipToNode2D, cloneSprite, computeSpriteLocalBoundsRectangle, computeHtmlViewLocalBoundsRectangle, createScene2DKindUsage, createSprite, createDisplayObject, createHtmlView, createNode2D, createScene2D, enableScene2DSignals, getScene2DKindUsage, getScene2DRoot, getScene2DSignals, isNode2D, setHtmlViewSize, setNode2DClip, setScene2DSize, } from './contract';
1
+ export { applyAnimationClipToNode2D, cloneSprite, computeSpriteLocalBoundsRectangle, computeHtmlViewLocalBoundsRectangle, createScale9Sprite, createScene2DKindUsage, createSprite, createDisplayObject, createHtmlView, createNode2D, createScene2D, enableScene2DSignals, getScene2DKindUsage, getScene2DRoot, getScene2DSignals, isNode2D, setHtmlViewSize, setNode2DClip, setScene2DSize, } from './contract';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,WAAW,EACX,iCAAiC,EACjC,mCAAmC,EACnC,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,QAAQ,EACR,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,WAAW,EACX,iCAAiC,EACjC,mCAAmC,EACnC,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,QAAQ,EACR,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { applyAnimationClipToNode2D, cloneSprite, computeSpriteLocalBoundsRectangle, computeHtmlViewLocalBoundsRectangle, createScene2DKindUsage, createSprite, createDisplayObject, createHtmlView, createNode2D, createScene2D, enableScene2DSignals, getScene2DKindUsage, getScene2DRoot, getScene2DSignals, isNode2D, setHtmlViewSize, setNode2DClip, setScene2DSize, } from './contract';
1
+ export { applyAnimationClipToNode2D, cloneSprite, computeSpriteLocalBoundsRectangle, computeHtmlViewLocalBoundsRectangle, createScale9Sprite, createScene2DKindUsage, createSprite, createDisplayObject, createHtmlView, createNode2D, createScene2D, enableScene2DSignals, getScene2DKindUsage, getScene2DRoot, getScene2DSignals, isNode2D, setHtmlViewSize, setNode2DClip, setScene2DSize, } from './contract';
2
2
  //# 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,WAAW,EACX,iCAAiC,EACjC,mCAAmC,EACnC,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,QAAQ,EACR,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,WAAW,EACX,iCAAiC,EACjC,mCAAmC,EACnC,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,QAAQ,EACR,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { EntityConstruction, PartialNode, RectangleLike, Scale9Sprite, Scale9SpriteData, Scale9SpriteRuntime } from '@flighthq/types/contract';
2
+ export declare function createScale9Sprite(scale9Grid: Readonly<RectangleLike>, obj?: Readonly<PartialNode<Scale9Sprite>>): Scale9Sprite;
3
+ export declare function createScale9SpriteData(scale9Grid: Readonly<RectangleLike>, data?: Readonly<Partial<Scale9SpriteData>>): Scale9SpriteData;
4
+ export declare function createScale9SpriteRuntime(): Scale9SpriteRuntime;
5
+ export declare function getScale9SpriteRuntime(source: Readonly<Scale9Sprite>): Readonly<Scale9SpriteRuntime>;
6
+ export declare function initializeScale9SpriteData(out: EntityConstruction<Scale9SpriteData>, scale9Grid: Readonly<RectangleLike>, data?: Readonly<Partial<Scale9SpriteData>>): void;
7
+ //# sourceMappingURL=scale9Sprite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scale9Sprite.d.ts","sourceRoot":"","sources":["../src/scale9Sprite.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAMlC,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,QAAQ,CAAC,aAAa,CAAC,EACnC,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,GACxC,YAAY,CAOd;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,QAAQ,CAAC,aAAa,CAAC,EACnC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GACzC,gBAAgB,CAIlB;AAED,wBAAgB,yBAAyB,IAAI,mBAAmB,CAE/D;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAEpG;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,EACzC,UAAU,EAAE,QAAQ,CAAC,aAAa,CAAC,EACnC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GACzC,IAAI,CAGN"}
@@ -0,0 +1,23 @@
1
+ import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
2
+ import { Scale9SpriteKind } from '@flighthq/types/contract';
3
+ import { createNode2D, getNode2DRuntime } from './displayObject';
4
+ import { createSpriteRuntime } from './sprite';
5
+ export function createScale9Sprite(scale9Grid, obj) {
6
+ return createNode2D(Scale9SpriteKind, obj, (data) => createScale9SpriteData(scale9Grid, data), createScale9SpriteRuntime);
7
+ }
8
+ export function createScale9SpriteData(scale9Grid, data) {
9
+ const out = allocateEntity();
10
+ initializeScale9SpriteData(out, scale9Grid, data);
11
+ return finishEntity(out);
12
+ }
13
+ export function createScale9SpriteRuntime() {
14
+ return createSpriteRuntime();
15
+ }
16
+ export function getScale9SpriteRuntime(source) {
17
+ return getNode2DRuntime(source);
18
+ }
19
+ export function initializeScale9SpriteData(out, scale9Grid, data) {
20
+ out.scale9Grid = scale9Grid;
21
+ out.texture = data?.texture ?? null;
22
+ }
23
+ //# sourceMappingURL=scale9Sprite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scale9Sprite.js","sourceRoot":"","sources":["../src/scale9Sprite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AASzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,UAAU,kBAAkB,CAChC,UAAmC,EACnC,GAAyC;IAEzC,OAAO,YAAY,CACjB,gBAAgB,EAChB,GAA0C,EAC1C,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,EAClD,yBAAyB,CACV,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,UAAmC,EACnC,IAA0C;IAE1C,MAAM,GAAG,GAAG,cAAc,EAAoB,CAAC;IAC/C,0BAA0B,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAClD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO,mBAAmB,EAAyB,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAA8B;IACnE,OAAO,gBAAgB,CAAC,MAAM,CAAwB,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,GAAyC,EACzC,UAAmC,EACnC,IAA0C;IAE1C,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;IAC5B,GAAG,CAAC,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC;AACtC,CAAC"}
package/dist/scene2d.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Node2D, Scene2D, Scene2DRuntime, Scene2DSignals } from '@flighthq/types/contract';
1
+ import type { EntityConstruction, Node2D, Scene2D, Scene2DRuntime, Scene2DSignals } from '@flighthq/types/contract';
2
2
  export declare function createScene2D(obj?: Readonly<Partial<Pick<Scene2D, 'align' | 'color' | 'scaleMode' | 'scene2dHeight' | 'scene2dWidth'>>>): Scene2D;
3
3
  export declare function createScene2DRuntime(): Scene2DRuntime;
4
4
  export declare function createScene2DSignals(): Scene2DSignals;
@@ -6,5 +6,7 @@ export declare function enableScene2DSignals(source: Scene2D): Scene2DSignals;
6
6
  export declare function getScene2DRoot(source: Readonly<Node2D>): Scene2D | null;
7
7
  export declare function getScene2DRuntime(source: Readonly<Scene2D>): Readonly<Scene2DRuntime>;
8
8
  export declare function getScene2DSignals(source: Readonly<Scene2D>): Scene2DSignals | null;
9
+ export declare function initializeScene2D(out: EntityConstruction<Scene2D>, root: Node2D, obj?: Readonly<Partial<Pick<Scene2D, 'align' | 'color' | 'scaleMode' | 'scene2dHeight' | 'scene2dWidth'>>>): void;
10
+ export declare function initializeScene2DSignals(out: EntityConstruction<Scene2DSignals>): void;
9
11
  export declare function setScene2DSize(source: Scene2D, width: number, height: number): void;
10
12
  //# sourceMappingURL=scene2d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scene2d.d.ts","sourceRoot":"","sources":["../src/scene2d.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAiB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAU/G,wBAAgB,aAAa,CAC3B,GAAG,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,eAAe,GAAG,cAAc,CAAC,CAAC,CAAC,GACzG,OAAO,CAYT;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAKrD;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAMrD;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,CAGpE;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,GAAG,IAAI,CAGvE;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAErF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,cAAc,GAAG,IAAI,CAGlF;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAMnF"}
1
+ {"version":3,"file":"scene2d.d.ts","sourceRoot":"","sources":["../src/scene2d.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,EAClB,MAAM,EAEN,OAAO,EACP,cAAc,EACd,cAAc,EACf,MAAM,0BAA0B,CAAC;AAUlC,wBAAgB,aAAa,CAC3B,GAAG,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,eAAe,GAAG,cAAc,CAAC,CAAC,CAAC,GACzG,OAAO,CAMT;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAKrD;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAIrD;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,CAGpE;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,GAAG,IAAI,CAGvE;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAErF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,cAAc,GAAG,IAAI,CAGlF;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAChC,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,eAAe,GAAG,cAAc,CAAC,CAAC,CAAC,GACzG,IAAI,CAON;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,kBAAkB,CAAC,cAAc,CAAC,GAAG,IAAI,CAItF;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAMnF"}
package/dist/scene2d.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createEntity } from '@flighthq/entity/contract';
1
+ import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
2
2
  import { getNodeRoot, getNodeRuntime } from '@flighthq/node/contract';
3
3
  import { createSignal, emitSignal } from '@flighthq/signals/contract';
4
4
  import { EntityRuntimeKey } from '@flighthq/types/contract';
@@ -10,14 +10,8 @@ import { createDisplayObject } from './displayObject';
10
10
  // resolves membership by a lazy walk to the root.
11
11
  export function createScene2D(obj) {
12
12
  const root = createDisplayObject();
13
- const scene2d = createEntity({
14
- align: obj?.align ?? 'topleft',
15
- color: obj?.color ?? null,
16
- root,
17
- scaleMode: obj?.scaleMode ?? 'noscale',
18
- scene2dHeight: obj?.scene2dHeight ?? 550,
19
- scene2dWidth: obj?.scene2dWidth ?? 400,
20
- });
13
+ const scene2d = allocateEntity();
14
+ initializeScene2D(scene2d, root, obj);
21
15
  getNodeRuntime(root).scene2d = scene2d;
22
16
  return scene2d;
23
17
  }
@@ -28,11 +22,9 @@ export function createScene2DRuntime() {
28
22
  };
29
23
  }
30
24
  export function createScene2DSignals() {
31
- return createEntity({
32
- onFullscreenChanged: createSignal(),
33
- onOrientationChanged: createSignal(),
34
- onResize: createSignal(),
35
- });
25
+ const out = allocateEntity();
26
+ initializeScene2DSignals(out);
27
+ return finishEntity(out);
36
28
  }
37
29
  export function enableScene2DSignals(source) {
38
30
  const runtime = ensureScene2DRuntime(source);
@@ -53,6 +45,19 @@ export function getScene2DSignals(source) {
53
45
  const runtime = source[EntityRuntimeKey];
54
46
  return runtime?.scene2dSignals ?? null;
55
47
  }
48
+ export function initializeScene2D(out, root, obj) {
49
+ out.align = obj?.align ?? 'topleft';
50
+ out.color = obj?.color ?? null;
51
+ out.root = root;
52
+ out.scaleMode = obj?.scaleMode ?? 'noscale';
53
+ out.scene2dHeight = obj?.scene2dHeight ?? 550;
54
+ out.scene2dWidth = obj?.scene2dWidth ?? 400;
55
+ }
56
+ export function initializeScene2DSignals(out) {
57
+ out.onFullscreenChanged = createSignal();
58
+ out.onOrientationChanged = createSignal();
59
+ out.onResize = createSignal();
60
+ }
56
61
  export function setScene2DSize(source, width, height) {
57
62
  if (source.scene2dWidth === width && source.scene2dHeight === height)
58
63
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"scene2d.js","sourceRoot":"","sources":["../src/scene2d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scene2d.js","sourceRoot":"","sources":["../src/scene2d.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import type { Entity, Scene2D, Scene2DKindUsage } from '@flighthq/types/contract';
1
+ import type { Entity, EntityConstruction, Scene2D, Scene2DKindUsage } from '@flighthq/types/contract';
2
2
  export declare function createScene2DKindUsage(): Scene2DKindUsage & Entity;
3
3
  export declare function getScene2DKindUsage(out: Scene2DKindUsage, scene: Readonly<Scene2D>): void;
4
+ export declare function initializeScene2DKindUsage(out: EntityConstruction<Scene2DKindUsage & Entity>): void;
4
5
  //# sourceMappingURL=sceneKindUsage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sceneKindUsage.d.ts","sourceRoot":"","sources":["../src/sceneKindUsage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAU,OAAO,EAAE,gBAAgB,EAAqB,MAAM,0BAA0B,CAAC;AAK7G,wBAAgB,sBAAsB,IAAI,gBAAgB,GAAG,MAAM,CAElE;AASD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAmCzF"}
1
+ {"version":3,"file":"sceneKindUsage.d.ts","sourceRoot":"","sources":["../src/sceneKindUsage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,MAAM,EACN,kBAAkB,EAElB,OAAO,EACP,gBAAgB,EAEjB,MAAM,0BAA0B,CAAC;AAGlC,wBAAgB,sBAAsB,IAAI,gBAAgB,GAAG,MAAM,CAIlE;AASD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAmCzF;AAID,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,kBAAkB,CAAC,gBAAgB,GAAG,MAAM,CAAC,GAAG,IAAI,CAKnG"}
@@ -1,10 +1,10 @@
1
- import { createEntity } from '@flighthq/entity/contract';
1
+ import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
2
2
  import { forEachNodeDescendant } from '@flighthq/node/contract';
3
3
  import { BlendMode } from '@flighthq/types/contract';
4
- // Allocates an empty usage record. Separate from the walk so a caller can reuse one across scenes or
5
- // frames without reallocating four arrays.
6
4
  export function createScene2DKindUsage() {
7
- return createEntity({ blendModes: [], materialKinds: [], nodeKinds: [], shapeCommandKeys: [] });
5
+ const out = allocateEntity();
6
+ initializeScene2DKindUsage(out);
7
+ return finishEntity(out);
8
8
  }
9
9
  // Clears `out`, then fills it with every kind this scene uses. One walk, no registry, no backend, no
10
10
  // prose — it reads the fields the scene graph already carries, so it cannot itself be the thing you
@@ -49,6 +49,14 @@ export function getScene2DKindUsage(out, scene) {
49
49
  out.nodeKinds.sort();
50
50
  out.shapeCommandKeys.sort();
51
51
  }
52
+ // Allocates an empty usage record. Separate from the walk so a caller can reuse one across scenes or
53
+ // frames without reallocating four arrays.
54
+ export function initializeScene2DKindUsage(out) {
55
+ out.blendModes = [];
56
+ out.materialKinds = [];
57
+ out.nodeKinds = [];
58
+ out.shapeCommandKeys = [];
59
+ }
52
60
  // Linear scan rather than a Set: these lists are the handful of distinct kinds a document uses, where
53
61
  // scanning beats allocating four Sets per walk, and it keeps the result a plain array a C port can hold
54
62
  // without a hash container.
@@ -1 +1 @@
1
- {"version":3,"file":"sceneKindUsage.js","sourceRoot":"","sources":["../src/sceneKindUsage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sceneKindUsage.js","sourceRoot":"","sources":["../src/sceneKindUsage.ts"],"names":[],"mappings":"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"}
package/dist/sprite.d.ts CHANGED
@@ -1,10 +1,12 @@
1
- import type { Node, NonEntityCreateResult, PartialNode, Rectangle, Renderable, RendererData, RenderState, Sprite, SpriteData, SpriteIdentityRendererData, SpriteRuntime } from '@flighthq/types/contract';
1
+ import type { EntityConstruction, Node, PartialNode, Rectangle, RenderState, Renderable, RendererData, Sprite, SpriteData, SpriteIdentityRendererData, SpriteRuntime } from '@flighthq/types/contract';
2
2
  export declare function cloneSprite(source: Readonly<Sprite>): Sprite;
3
3
  export declare function computeSpriteLocalBoundsRectangle(out: Rectangle, source: Readonly<Node>): void;
4
4
  export declare function createSprite(obj?: Readonly<PartialNode<Sprite>>): Sprite;
5
- export declare function createSpriteData(data?: Readonly<Partial<SpriteData>>): NonEntityCreateResult<SpriteData, 'descriptor'>;
5
+ export declare function createSpriteData(data?: Readonly<Partial<SpriteData>>): SpriteData;
6
6
  export declare function createSpriteRendererData(_state: RenderState, source: Renderable): SpriteIdentityRendererData;
7
7
  export declare function createSpriteRuntime(): SpriteRuntime;
8
8
  export declare function getSpriteRuntime(source: Readonly<Sprite>): Readonly<SpriteRuntime>;
9
+ export declare function initializeSpriteData(out: EntityConstruction<SpriteData>, data?: Readonly<Partial<SpriteData>>): void;
10
+ export declare function initializeSpriteRendererData(out: EntityConstruction<SpriteIdentityRendererData>, _state: RenderState, source: Renderable): void;
9
11
  export declare function isSpriteRendererDirty(_state: RenderState, source: Renderable, rendererData: RendererData | null): boolean;
10
12
  //# sourceMappingURL=sprite.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sprite.d.ts","sourceRoot":"","sources":["../src/sprite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,IAAI,EACJ,qBAAqB,EACrB,WAAW,EACX,SAAS,EACT,UAAU,EACV,YAAY,EACZ,WAAW,EACX,MAAM,EACN,UAAU,EACV,0BAA0B,EAC1B,aAAa,EACd,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAE5D;AAED,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAQ9F;AAED,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAExE;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GACnC,qBAAqB,CAAC,UAAU,EAAE,YAAY,CAAC,CAIjD;AAID,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,0BAA0B,CAG5G;AAED,wBAAgB,mBAAmB,IAAI,aAAa,CAKnD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,CAElF;AAID,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,YAAY,GAAG,IAAI,GAChC,OAAO,CAST"}
1
+ {"version":3,"file":"sprite.d.ts","sourceRoot":"","sources":["../src/sprite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAElB,IAAI,EACJ,WAAW,EACX,SAAS,EACT,WAAW,EACX,UAAU,EACV,YAAY,EACZ,MAAM,EACN,UAAU,EACV,0BAA0B,EAC1B,aAAa,EACd,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAE5D;AAED,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAQ9F;AAED,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAExE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,UAAU,CAIjF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,0BAA0B,CAI5G;AAED,wBAAgB,mBAAmB,IAAI,aAAa,CAKnD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,CAElF;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,kBAAkB,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAEpH;AAID,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,kBAAkB,CAAC,0BAA0B,CAAC,EACnD,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,UAAU,GACjB,IAAI,CAIN;AAID,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,YAAY,GAAG,IAAI,GAChC,OAAO,CAST"}
package/dist/sprite.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createEntity } from '@flighthq/entity/contract';
1
+ import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
2
2
  import { getTextureHeight, getTextureWidth } from '@flighthq/texture/contract';
3
3
  import { SpriteKind } from '@flighthq/types/contract';
4
4
  import { createNode2D, createNode2DRuntime, getNode2DRuntime } from './displayObject';
@@ -18,15 +18,14 @@ export function createSprite(obj) {
18
18
  return createNode2D(SpriteKind, obj, createSpriteData, createSpriteRuntime);
19
19
  }
20
20
  export function createSpriteData(data) {
21
- return {
22
- texture: data?.texture ?? null,
23
- };
21
+ const out = allocateEntity();
22
+ initializeSpriteData(out, data);
23
+ return finishEntity(out);
24
24
  }
25
- // Creates the per-state identity stamp used by a Sprite renderer's optional dirty hook. The data is
26
- // attached to that state's render proxy, so separate render pipelines compare independently.
27
25
  export function createSpriteRendererData(_state, source) {
28
- const texture = source.data.texture;
29
- return createEntity({ textureIdentity: texture, textureVersion: texture?.version ?? -1 });
26
+ const out = allocateEntity();
27
+ initializeSpriteRendererData(out, _state, source);
28
+ return finishEntity(out);
30
29
  }
31
30
  export function createSpriteRuntime() {
32
31
  const runtime = createNode2DRuntime(defaultMethods);
@@ -37,6 +36,16 @@ export function createSpriteRuntime() {
37
36
  export function getSpriteRuntime(source) {
38
37
  return getNode2DRuntime(source);
39
38
  }
39
+ export function initializeSpriteData(out, data) {
40
+ out.texture = data?.texture ?? null;
41
+ }
42
+ // Creates the per-state identity stamp used by a Sprite renderer's optional dirty hook. The data is
43
+ // attached to that state's render proxy, so separate render pipelines compare independently.
44
+ export function initializeSpriteRendererData(out, _state, source) {
45
+ const texture = source.data.texture;
46
+ out.textureIdentity = texture;
47
+ out.textureVersion = texture?.version ?? -1;
48
+ }
40
49
  // Detects Texture identity/version changes before requiresInvalidation can skip a Sprite. Each
41
50
  // backend opts into this through its registered renderer; the generic walk never knows SpriteKind.
42
51
  export function isSpriteRendererDirty(_state, source, rendererData) {
@@ -1 +1 @@
1
- {"version":3,"file":"sprite.js","sourceRoot":"","sources":["../src/sprite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sprite.js","sourceRoot":"","sources":["../src/sprite.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/scene2d",
3
- "version": "0.5.1-next.815.cc08b93",
3
+ "version": "0.5.1-next.903.f434bc2",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,14 +38,14 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/adjustments": "0.5.1-next.815.cc08b93",
42
- "@flighthq/animation": "0.5.1-next.815.cc08b93",
43
- "@flighthq/entity": "0.5.1-next.815.cc08b93",
44
- "@flighthq/materials": "0.5.1-next.815.cc08b93",
45
- "@flighthq/node": "0.5.1-next.815.cc08b93",
46
- "@flighthq/signals": "0.5.1-next.815.cc08b93",
47
- "@flighthq/texture": "0.5.1-next.815.cc08b93",
48
- "@flighthq/types": "0.5.1-next.815.cc08b93"
41
+ "@flighthq/adjustments": "0.5.1-next.903.f434bc2",
42
+ "@flighthq/animation": "0.5.1-next.903.f434bc2",
43
+ "@flighthq/entity": "0.5.1-next.903.f434bc2",
44
+ "@flighthq/materials": "0.5.1-next.903.f434bc2",
45
+ "@flighthq/node": "0.5.1-next.903.f434bc2",
46
+ "@flighthq/signals": "0.5.1-next.903.f434bc2",
47
+ "@flighthq/texture": "0.5.1-next.903.f434bc2",
48
+ "@flighthq/types": "0.5.1-next.903.f434bc2"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@flighthq/geometry": "*",
@@ -1,12 +1,20 @@
1
1
  import { createColorMatrixAdjustment, createTintAdjustment } from '@flighthq/adjustments/contract';
2
- import { createEntity, getEntityRuntime } from '@flighthq/entity/contract';
2
+ import { allocateEntity, finishEntity, getEntityRuntime } from '@flighthq/entity/contract';
3
3
  import {
4
4
  addNodeColorAdjustment,
5
5
  getNodeColorAdjustments,
6
6
  setNodeColorAdjustments,
7
7
  setNodeColorAdjustmentsTint,
8
8
  } from '@flighthq/node/contract';
9
- import type { BoundsNode, Node2D, Node2DData, Node2DRuntime, PartialNode, Rectangle } from '@flighthq/types/contract';
9
+ import type {
10
+ BoundsNode,
11
+ ClipRegion,
12
+ Node2D,
13
+ Node2DData,
14
+ Node2DRuntime,
15
+ PartialNode,
16
+ Rectangle,
17
+ } from '@flighthq/types/contract';
10
18
  import { BlendMode, DisplayObjectKind, Node2DTraitsKey } from '@flighthq/types/contract';
11
19
 
12
20
  import {
@@ -165,12 +173,11 @@ describe('setNode2DClip', () => {
165
173
  });
166
174
 
167
175
  it('sets clip', () => {
168
- const clip = createEntity({
169
- contours: null,
170
- rect: { x: 0, y: 0, width: 100, height: 50 } as Rectangle,
171
- winding: 'nonZero' as const,
172
- version: 0,
173
- });
176
+ const clip = allocateEntity<ClipRegion>();
177
+ clip.contours = null;
178
+ clip.rect = { x: 0, y: 0, width: 100, height: 50 } as Rectangle;
179
+ clip.winding = 'nonZero' as const;
180
+ clip.version = 0;
174
181
  setNode2DClip(obj, clip);
175
182
  expect(obj.clip).toBe(clip);
176
183
  });
@@ -184,12 +191,14 @@ describe('setNode2DClip', () => {
184
191
  const idBefore = getRuntime_(obj).appearanceId;
185
192
  setNode2DClip(
186
193
  obj,
187
- createEntity({
188
- contours: null,
189
- rect: { x: 0, y: 0, width: 10, height: 10 } as Rectangle,
190
- winding: 'nonZero' as const,
191
- version: 0,
192
- }),
194
+ (() => {
195
+ const out = allocateEntity<ClipRegion>();
196
+ out.contours = null;
197
+ out.rect = { x: 0, y: 0, width: 10, height: 10 } as Rectangle;
198
+ out.winding = 'nonZero' as const;
199
+ out.version = 0;
200
+ return finishEntity(out);
201
+ })(),
193
202
  );
194
203
  expect(getRuntime_(obj).appearanceId).not.toBe(idBefore);
195
204
  });
@@ -248,7 +257,7 @@ interface Node2DTestData extends Node2DData {
248
257
  }
249
258
 
250
259
  function createNode2DTestData(data?: Partial<Node2DTestData>): Node2DTestData {
251
- return {
252
- foo: data?.foo ?? 'bar',
253
- };
260
+ const out = allocateEntity<any>();
261
+ out.foo = data?.foo ?? 'bar';
262
+ return finishEntity(out);
254
263
  }
@@ -0,0 +1,109 @@
1
+ import { getEntityRuntime } from '@flighthq/entity/contract';
2
+ import { getNodeLocalBoundsRectangle } from '@flighthq/node/contract';
3
+ import { createTexture } from '@flighthq/texture/contract';
4
+ import type { ImageResource, Scale9Sprite, SpriteRuntime } from '@flighthq/types/contract';
5
+ import { Scale9SpriteKind } from '@flighthq/types/contract';
6
+
7
+ import {
8
+ createScale9Sprite,
9
+ createScale9SpriteData,
10
+ createScale9SpriteRuntime,
11
+ getScale9SpriteRuntime,
12
+ } from './scale9Sprite';
13
+ import { computeSpriteLocalBoundsRectangle } from './sprite';
14
+
15
+ const grid = { height: 80, width: 80, x: 10, y: 10 };
16
+
17
+ describe('createScale9Sprite', () => {
18
+ it('returns a sprite with the given scale9Grid on its data', () => {
19
+ const sprite = createScale9Sprite(grid);
20
+ expect(sprite.data.scale9Grid).toBe(grid);
21
+ });
22
+
23
+ it('initializes with a null texture', () => {
24
+ const sprite = createScale9Sprite(grid);
25
+ expect(sprite.data.texture).toBeNull();
26
+ });
27
+
28
+ it('has Scale9SpriteKind', () => {
29
+ const sprite = createScale9Sprite(grid);
30
+ expect(sprite.kind).toStrictEqual(Scale9SpriteKind);
31
+ });
32
+
33
+ it('allows a pre-defined texture', () => {
34
+ const imageTexture = texture(64, 32);
35
+ const sprite = createScale9Sprite(grid, { data: { texture: imageTexture } });
36
+ expect(sprite.data.texture).toBe(imageTexture);
37
+ });
38
+
39
+ it('returns a new object each call', () => {
40
+ expect(createScale9Sprite(grid)).not.toBe(createScale9Sprite(grid));
41
+ });
42
+ });
43
+
44
+ describe('createScale9SpriteData', () => {
45
+ it('stores the scale9Grid reference', () => {
46
+ const data = createScale9SpriteData(grid);
47
+ expect(data.scale9Grid).toBe(grid);
48
+ });
49
+
50
+ it('returns a null texture by default', () => {
51
+ const data = createScale9SpriteData(grid);
52
+ expect(data.texture).toBeNull();
53
+ });
54
+
55
+ it('uses provided texture when given', () => {
56
+ const imageTexture = texture(10, 10);
57
+ const data = createScale9SpriteData(grid, { texture: imageTexture });
58
+ expect(data.texture).toBe(imageTexture);
59
+ });
60
+ });
61
+
62
+ describe('createScale9SpriteRuntime', () => {
63
+ it('returns a non-null runtime', () => {
64
+ const runtime = createScale9SpriteRuntime();
65
+ expect(runtime).not.toBeNull();
66
+ });
67
+
68
+ it('uses computeSpriteLocalBoundsRectangle', () => {
69
+ expect(createScale9SpriteRuntime().computeLocalBoundsRectangle).toStrictEqual(computeSpriteLocalBoundsRectangle);
70
+ });
71
+
72
+ it('installs the texture-aware local-bounds validity hook', () => {
73
+ const runtime = createScale9SpriteRuntime();
74
+ expect(typeof runtime.isLocalBoundsRectangleValid).toBe('function');
75
+ expect(runtime.localBoundsTexture).toBeNull();
76
+ expect(runtime.localBoundsTextureVersion).toBe(-1);
77
+ });
78
+ });
79
+
80
+ describe('getScale9SpriteRuntime', () => {
81
+ it('returns the runtime for a Scale9Sprite', () => {
82
+ const sprite = createScale9Sprite(grid);
83
+ const runtime = getScale9SpriteRuntime(sprite);
84
+ expect(runtime).not.toBeNull();
85
+ });
86
+ });
87
+
88
+ describe('Scale9Sprite local bounds', () => {
89
+ it('derives bounds from the texture like a plain Sprite', () => {
90
+ const sprite = createScale9Sprite(grid, { data: { texture: texture(100, 50) } });
91
+ expect(getNodeLocalBoundsRectangle(sprite)).toMatchObject({ height: 50, width: 100 });
92
+ });
93
+
94
+ it('refreshes bounds after bare texture assignment', () => {
95
+ const sprite = createScale9Sprite(grid, { data: { texture: texture(16, 12) } });
96
+ expect(getNodeLocalBoundsRectangle(sprite)).toMatchObject({ height: 12, width: 16 });
97
+ const runtime = getEntityRuntime(sprite) as SpriteRuntime;
98
+ const localBoundsId = runtime.localBoundsId;
99
+
100
+ sprite.data.texture = texture(48, 30);
101
+
102
+ expect(getNodeLocalBoundsRectangle(sprite)).toMatchObject({ height: 30, width: 48 });
103
+ expect(runtime.localBoundsId).toBe(localBoundsId);
104
+ });
105
+ });
106
+
107
+ function texture(width: number, height: number) {
108
+ return createTexture({ dimension: '2d', source: { height, width } as ImageResource });
109
+ }