@bloopjs/toodle 0.0.102 → 0.0.104
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Toodle.d.ts +9 -1
- package/dist/Toodle.d.ts.map +1 -1
- package/dist/mod.d.ts +1 -0
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +340 -159
- package/dist/mod.js.map +9 -8
- package/dist/scene/QuadNode.d.ts.map +1 -1
- package/dist/scene/SceneNode.d.ts +2 -2
- package/dist/scene/SceneNode.d.ts.map +1 -1
- package/dist/textures/AssetManager.d.ts +10 -2
- package/dist/textures/AssetManager.d.ts.map +1 -1
- package/dist/textures/Bundles.d.ts +183 -0
- package/dist/textures/Bundles.d.ts.map +1 -0
- package/dist/textures/mod.d.ts +2 -0
- package/dist/textures/mod.d.ts.map +1 -1
- package/dist/textures/types.d.ts +4 -2
- package/dist/textures/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/Toodle.ts +31 -15
- package/src/mod.ts +1 -0
- package/src/scene/QuadNode.ts +1 -4
- package/src/scene/SceneNode.ts +11 -12
- package/src/text/TextNode.ts +2 -2
- package/src/textures/AssetManager.ts +44 -195
- package/src/textures/Bundles.ts +541 -0
- package/src/textures/mod.ts +2 -0
- package/src/textures/types.ts +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuadNode.d.ts","sourceRoot":"","sources":["../../src/scene/QuadNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,KAAK,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAe1D;;;;;GAKG;AACH,qBAAa,QAAS,SAAQ,SAAS;;IACrC,YAAY,EAAE,YAAY,CAAC;gBAsBf,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"QuadNode.d.ts","sourceRoot":"","sources":["../../src/scene/QuadNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,KAAK,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAe1D;;;;;GAKG;AACH,qBAAa,QAAS,SAAQ,SAAS;;IACrC,YAAY,EAAE,YAAY,CAAC;gBAsBf,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC;IAmExD;;;;;OAKG;IACH,IAAI,KAAK,IAIQ,KAAK,CAFrB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,EAErB;IAED;;OAEG;IACH,IAAI,IAAI,SAMP;IAED;;;;OAIG;IACH,IAAI,cAAc,kCASjB;IAED;;;OAGG;IACH,IAAI,WAAW,gBAEd;IAED;;;;OAIG;IACH,IAAI,MAAM,gBAET;IAED,IAAI,aAAa,aA/HQ,YAAY,UAAU,MAAM,KAAK,IAAI,cAiI7D;IAED;;;;;OAKG;IACH,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED;;;;;OAKG;IACH,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,EAGvB;IAED;;;;;OAKG;IACH,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED;;;;;OAKG;IACH,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,EAGvB;IAED;;;OAGG;IACH,IAAI,UAAU,IAAI,IAAI,CAErB;IAED;;;OAGG;IACH,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAEzB;IAED,IAAI,SAAS,WAEZ;IAED;;OAEG;IACH,IAAI,WAAW,YAEd;IAED;;OAEG;IACH,IAAI,QAAQ,YAEX;IAED,KAAK;QACH;;;;WAIG;gCACqB,WAAW;QAInC;;;;WAIG;;QAKH;;WAEG;;MAIH;CACH;AAED,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG;IACtC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC;IAEjB;;;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;CACzB,CAAC"}
|
|
@@ -91,10 +91,10 @@ export declare class SceneNode {
|
|
|
91
91
|
*/
|
|
92
92
|
get scale(): Vec2;
|
|
93
93
|
set scale(value: Vec2 | number);
|
|
94
|
-
set idealSize(value: Size | null);
|
|
95
94
|
/**
|
|
96
95
|
* The size of the node. See https://toodle.gg/f849595b3ed13fc956fc1459a5cb5f0228f9d259/examples/quad-size-scale.html
|
|
97
96
|
*/
|
|
97
|
+
set size(value: Size | null);
|
|
98
98
|
get size(): Size | null;
|
|
99
99
|
/**
|
|
100
100
|
* The aspect ratio of the node.
|
|
@@ -250,7 +250,7 @@ export type NodeOptions = {
|
|
|
250
250
|
/** The scale for the node. */
|
|
251
251
|
scale?: Vec2 | number;
|
|
252
252
|
/** The desired size for the node. */
|
|
253
|
-
|
|
253
|
+
size?: Size;
|
|
254
254
|
/** The active state for the node. */
|
|
255
255
|
isActive?: boolean;
|
|
256
256
|
/** The kids for the node. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SceneNode.d.ts","sourceRoot":"","sources":["../../src/scene/SceneNode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAG9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;;GAKG;AACH,qBAAa,SAAS;;IACpB,MAAM,CAAC,MAAM,SAAK;IAElB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;gBAgBH,IAAI,CAAC,EAAE,WAAW;IAkE9B;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM;IAW/C;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAI,IAAI,gBAEP;IAED;;OAEG;IACH,IAAI,QAAQ,gBAEX;IAED;;;;;OAKG;IACH,IAAI,SAAS,IAAI,SAAS,CAEzB;IAED;;;;OAIG;IACH,IAAI,GAAG,WAEN;IAED;;OAEG;IACH,IAAI,MAAM,qBAET;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,KAAK,EAGxB;IAED;;OAEG;IACH,IAAI,QAAQ,IARQ,KAAK,CAUxB;IAED,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAGlB;IAED;;OAEG;IACH,IAAI,CAAC,IARQ,MAAM,CAUlB;IAED,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAGlB;IAED;;OAEG;IACH,IAAI,CAAC,IARQ,MAAM,CAUlB;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAGzB;IAED;;;OAGG;IACH,IAAI,QAAQ,IATQ,MAAM,CAWzB;IAED;;;OAGG;IACH,IAAI,eAAe,IAIQ,MAAM,CAFhC;IAED,IAAI,eAAe,CAAC,KAAK,EAAE,MAAM,EAGhC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,IAAI,CAEhB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,EAO7B;IAED,IAAI,
|
|
1
|
+
{"version":3,"file":"SceneNode.d.ts","sourceRoot":"","sources":["../../src/scene/SceneNode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAG9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;;GAKG;AACH,qBAAa,SAAS;;IACpB,MAAM,CAAC,MAAM,SAAK;IAElB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;gBAgBH,IAAI,CAAC,EAAE,WAAW;IAkE9B;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM;IAW/C;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAI,IAAI,gBAEP;IAED;;OAEG;IACH,IAAI,QAAQ,gBAEX;IAED;;;;;OAKG;IACH,IAAI,SAAS,IAAI,SAAS,CAEzB;IAED;;;;OAIG;IACH,IAAI,GAAG,WAEN;IAED;;OAEG;IACH,IAAI,MAAM,qBAET;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,KAAK,EAGxB;IAED;;OAEG;IACH,IAAI,QAAQ,IARQ,KAAK,CAUxB;IAED,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAGlB;IAED;;OAEG;IACH,IAAI,CAAC,IARQ,MAAM,CAUlB;IAED,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAGlB;IAED;;OAEG;IACH,IAAI,CAAC,IARQ,MAAM,CAUlB;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAGzB;IAED;;;OAGG;IACH,IAAI,QAAQ,IATQ,MAAM,CAWzB;IAED;;;OAGG;IACH,IAAI,eAAe,IAIQ,MAAM,CAFhC;IAED,IAAI,eAAe,CAAC,KAAK,EAAE,MAAM,EAGhC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,IAAI,CAEhB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,EAO7B;IAED;;OAEG;IACH,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,EAG1B;IAED,IAAI,IAAI,IALQ,IAAI,GAAG,IAAI,CAO1B;IAED;;;OAGG;IACH,IAAI,WAAW,WAQd;IAED;;;;OAIG;IACH,IAAI,QAAQ,IAeQ,OAAO,CAF1B;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAG1B;IAED;;;;OAIG;IACH,IAAI,KAAK,IAiCQ,MAAM,CAZtB;IAED;;;;;OAKG;IACH,IAAI,gBAAgB,YAEnB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAGtB;IAED,IAAI,eAAe,2BAElB;IAED;;;;OAIG;IACH,IAAI,MAAM,IAAI,YAAY,CAYzB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CA+BnB;IAED;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;IAWjC;;OAEG;IACH,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAErB;IAED;;OAEG;IACH,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAEvB;IAED;;OAEG;IACH,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,EAEpB;IAED;;OAEG;IACH,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAED;;OAEG;IACH,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAExB;IAED;;OAEG;IACH,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAExB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM;IAWN;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,GAAG,EAAE,SAAS;IA2BrB;;;OAGG;IACH,QAAQ;IAKR;;;;;;;;;OASG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM;IAKzB;;;;;;;;;;OAUG;IACH,MAAM;;;;;;;;;CAWP;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,0CAA0C;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACtB,qCAAqC;IACrC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;IACnB,yCAAyC;IACzC,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,kCAAkC;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gCAAgC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mGAAmG;IACnG,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AA4BF;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,CAAC,EAAE,MAAM,CAAC;IACV;;OAEG;IACH,CAAC,EAAE,MAAM,CAAC;CACX,CAAC"}
|
|
@@ -4,14 +4,22 @@ import type { Limits } from "../limits";
|
|
|
4
4
|
import { QuadNode } from "../scene/QuadNode";
|
|
5
5
|
import type { SceneNode } from "../scene/SceneNode";
|
|
6
6
|
import { TextShader } from "../text/TextShader";
|
|
7
|
+
import { Bundles } from "./Bundles";
|
|
7
8
|
import type { AtlasBundleOpts, AtlasCoords, CpuTextureAtlas, TextureBundleOpts } from "./types";
|
|
8
9
|
export type TextureId = string;
|
|
9
10
|
export type BundleId = string;
|
|
10
11
|
export type FontId = string;
|
|
12
|
+
export type AssetManagerOptions = {
|
|
13
|
+
/** Existing Bundles instance to use for CPU-side storage. If not provided, a new one is created. */
|
|
14
|
+
bundles?: Bundles;
|
|
15
|
+
/** Texture format (default: "rgba8unorm") */
|
|
16
|
+
format?: "rgba8unorm" | "rg8unorm";
|
|
17
|
+
};
|
|
11
18
|
export declare class AssetManager {
|
|
12
19
|
#private;
|
|
13
20
|
readonly textureAtlas: GPUTexture;
|
|
14
|
-
|
|
21
|
+
readonly bundles: Bundles;
|
|
22
|
+
constructor(device: GPUDevice, presentationFormat: GPUTextureFormat, limits: Limits, options?: AssetManagerOptions);
|
|
15
23
|
/**
|
|
16
24
|
* True dimensions of a loaded texture, prior to any transparent pixel cropping.
|
|
17
25
|
*
|
|
@@ -36,7 +44,7 @@ export declare class AssetManager {
|
|
|
36
44
|
/**
|
|
37
45
|
* A read-only map of all currently loaded textures.
|
|
38
46
|
*/
|
|
39
|
-
get textures():
|
|
47
|
+
get textures(): ReadonlyMap<string, AtlasCoords[]>;
|
|
40
48
|
/**
|
|
41
49
|
* A read-only array of all currently loaded texture ids.
|
|
42
50
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetManager.d.ts","sourceRoot":"","sources":["../../src/textures/AssetManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"AssetManager.d.ts","sourceRoot":"","sources":["../../src/textures/AssetManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,eAAe,EACf,iBAAiB,EAElB,MAAM,SAAS,CAAC;AAGjB,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAC/B,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAC9B,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAE5B,MAAM,MAAM,mBAAmB,GAAG;IAChC,oGAAoG;IACpG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;CACpC,CAAC;AAEF,qBAAa,YAAY;;IACvB,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBASxB,MAAM,EAAE,SAAS,EACjB,kBAAkB,EAAE,gBAAgB,EACpC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,mBAAwB;IA2BnC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAS5B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAWnC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO;IAUjC;;OAEG;IACH,IAAI,QAAQ,uCAEX;IAED;;OAEG;IACH,IAAI,UAAU,aAEb;IAED;;;;;;;;;;;;;;;;OAgBG;IACG,YAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtE;;;;;;;;;OASG;IACG,WAAW,CACf,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,GAAG,GAAG,WAAW,EACtB,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;;;;IAwCtC;;;;;;;;OAQG;IACG,cAAc,CAClB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,iBAAiB,GAAG,eAAe,GACxC,OAAO,CAAC,QAAQ,CAAC;IAcpB;;;;OAIG;IACG,UAAU,CAAC,QAAQ,EAAE,QAAQ;IAsBnC;;;;;OAKG;IACG,YAAY,CAAC,QAAQ,EAAE,QAAQ;IAkBrC;;;;;;OAMG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,iBAAiB,SAAM;IAqB5D,OAAO,CAAC,EAAE,EAAE,MAAM;IASlB,wBAAwB,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ;IA4FnD;;OAEG;IACH,KAAK;sCAEyB,MAAM,EAAE;kCAKZ,MAAM,EAAE;QAIhC;;;;;;;WAOG;6BACkB,SAAS,UAAU,WAAW;QAInD;;;;;WAKG;6BACkB,SAAS,KAAG,WAAW,EAAE;QAI9C;;;;;WAKG;+BACoB,SAAS,KAAG,IAAI;QAIvC;;;;WAIG;;YAGC;;;eAGG;;YAEH;;eAEG;;YAEH;;eAEG;;;QAKP;;;WAGG;;QAWH;;;;;WAKG;2BACsB,eAAe;QAsCxC;;;;WAIG;kCAC6B,MAAM;MAItC;IAmCF;;OAEG;IACH,OAAO;CAGR"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bundles - A renderer-agnostic class for managing texture bundles and atlas coordinates.
|
|
3
|
+
*
|
|
4
|
+
* This class can be used standalone (without WebGPU) for:
|
|
5
|
+
* - Registering pre-baked texture atlases (Pixi/AssetPack format)
|
|
6
|
+
* - Looking up texture regions and UV coordinates
|
|
7
|
+
* - Managing bundle state
|
|
8
|
+
*
|
|
9
|
+
* For WebGPU rendering, use AssetManager which wraps this class and handles GPU operations.
|
|
10
|
+
*/
|
|
11
|
+
import type { Size } from "../coreTypes/Size";
|
|
12
|
+
import type { Vec2 } from "../coreTypes/Vec2";
|
|
13
|
+
import type { AtlasBundleOpts, AtlasCoords, CpuTextureAtlas, TextureRegion } from "./types";
|
|
14
|
+
export type TextureId = string;
|
|
15
|
+
export type BundleId = string;
|
|
16
|
+
/**
|
|
17
|
+
* Options for creating a Bundles instance
|
|
18
|
+
*/
|
|
19
|
+
export type BundlesOptions = {
|
|
20
|
+
/** The size of the texture atlas (default: 4096) */
|
|
21
|
+
atlasSize?: number;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Bundles manages texture bundle registration and atlas coordinate lookups.
|
|
25
|
+
*
|
|
26
|
+
* This is a pure TypeScript class with no WebGPU dependencies, suitable for
|
|
27
|
+
* use with custom renderers (e.g., WebGL fallbacks).
|
|
28
|
+
*/
|
|
29
|
+
export declare class Bundles {
|
|
30
|
+
#private;
|
|
31
|
+
constructor(options?: BundlesOptions);
|
|
32
|
+
/**
|
|
33
|
+
* Register a bundle of pre-baked texture atlases.
|
|
34
|
+
*
|
|
35
|
+
* @param bundleId - Unique identifier for this bundle
|
|
36
|
+
* @param opts - Atlas bundle options containing atlas definitions
|
|
37
|
+
* @returns The bundle ID
|
|
38
|
+
*/
|
|
39
|
+
registerAtlasBundle(bundleId: BundleId, opts: AtlasBundleOpts): Promise<BundleId>;
|
|
40
|
+
/**
|
|
41
|
+
* Register a bundle with pre-built CPU texture atlases.
|
|
42
|
+
* Used internally by AssetManager for texture bundles that require GPU packing.
|
|
43
|
+
*
|
|
44
|
+
* @param bundleId - Unique identifier for this bundle
|
|
45
|
+
* @param atlases - Pre-built CPU texture atlases
|
|
46
|
+
*/
|
|
47
|
+
registerDynamicBundle(bundleId: BundleId, atlases: CpuTextureAtlas[]): void;
|
|
48
|
+
/**
|
|
49
|
+
* Check if a bundle is registered.
|
|
50
|
+
*
|
|
51
|
+
* @param bundleId - The bundle ID to check
|
|
52
|
+
*/
|
|
53
|
+
hasBundle(bundleId: BundleId): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Check if a bundle is loaded.
|
|
56
|
+
*
|
|
57
|
+
* @param bundleId - The bundle ID to check
|
|
58
|
+
*/
|
|
59
|
+
isBundleLoaded(bundleId: BundleId): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Get the atlas indices for a loaded bundle.
|
|
62
|
+
*
|
|
63
|
+
* @param bundleId - The bundle ID
|
|
64
|
+
* @returns Array of atlas indices, or empty array if not loaded
|
|
65
|
+
*/
|
|
66
|
+
getBundleAtlasIndices(bundleId: BundleId): number[];
|
|
67
|
+
/**
|
|
68
|
+
* Mark a bundle as loaded without populating texture lookups.
|
|
69
|
+
* Used when texture lookups are already populated via loadAtlas.
|
|
70
|
+
*
|
|
71
|
+
* @param bundleId - The bundle to mark as loaded
|
|
72
|
+
* @param atlasIndices - Array of atlas indices, one per atlas
|
|
73
|
+
*/
|
|
74
|
+
setBundleLoaded(bundleId: BundleId, atlasIndices: number[]): void;
|
|
75
|
+
/**
|
|
76
|
+
* Mark a bundle as loaded and populate texture lookups.
|
|
77
|
+
* For standalone usage (without AssetManager).
|
|
78
|
+
*
|
|
79
|
+
* @param bundleId - The bundle to mark as loaded
|
|
80
|
+
* @param atlasIndices - Array of atlas indices, one per atlas. If not provided, indices are auto-assigned sequentially.
|
|
81
|
+
*/
|
|
82
|
+
markBundleLoaded(bundleId: BundleId, atlasIndices?: number[]): void;
|
|
83
|
+
/**
|
|
84
|
+
* Unmark a bundle as loaded and remove texture lookups.
|
|
85
|
+
*
|
|
86
|
+
* @param bundleId - The bundle to unload
|
|
87
|
+
*/
|
|
88
|
+
unloadBundle(bundleId: BundleId): void;
|
|
89
|
+
/**
|
|
90
|
+
* A read-only map of all currently loaded textures.
|
|
91
|
+
*/
|
|
92
|
+
get textures(): ReadonlyMap<TextureId, AtlasCoords[]>;
|
|
93
|
+
/**
|
|
94
|
+
* A read-only array of all currently loaded texture ids.
|
|
95
|
+
*/
|
|
96
|
+
get textureIds(): TextureId[];
|
|
97
|
+
/**
|
|
98
|
+
* Get the atlas coordinates for a texture.
|
|
99
|
+
*
|
|
100
|
+
* @param id - The texture ID
|
|
101
|
+
* @returns Array of atlas coordinates (may have multiple if texture exists in multiple atlases)
|
|
102
|
+
*/
|
|
103
|
+
getAtlasCoords(id: TextureId): AtlasCoords[];
|
|
104
|
+
/**
|
|
105
|
+
* Set the atlas coordinates for a texture.
|
|
106
|
+
* This allows for UV precision adjustments.
|
|
107
|
+
*
|
|
108
|
+
* @param id - The texture ID
|
|
109
|
+
* @param coords - The atlas coordinates to set
|
|
110
|
+
*/
|
|
111
|
+
setAtlasCoords(id: TextureId, coords: AtlasCoords): void;
|
|
112
|
+
/**
|
|
113
|
+
* Add atlas coordinates for a texture entry.
|
|
114
|
+
* Used by AssetManager.loadAtlas for textures loaded outside of bundles.
|
|
115
|
+
*
|
|
116
|
+
* @param id - The texture ID
|
|
117
|
+
* @param coords - The atlas coordinates to add
|
|
118
|
+
*/
|
|
119
|
+
addTextureEntry(id: TextureId, coords: AtlasCoords): void;
|
|
120
|
+
/**
|
|
121
|
+
* Remove texture entries for a specific atlas index.
|
|
122
|
+
* Used by AssetManager.unloadAtlas.
|
|
123
|
+
*
|
|
124
|
+
* @param atlasIndex - The atlas index to remove entries for
|
|
125
|
+
*/
|
|
126
|
+
removeTextureEntriesForAtlas(atlasIndex: number): void;
|
|
127
|
+
/**
|
|
128
|
+
* Get the texture region (without atlas index) for a texture.
|
|
129
|
+
*
|
|
130
|
+
* @param id - The texture ID
|
|
131
|
+
* @returns The texture region, or undefined if not found
|
|
132
|
+
*/
|
|
133
|
+
getTextureRegion(id: TextureId): TextureRegion | undefined;
|
|
134
|
+
/**
|
|
135
|
+
* Get the crop offset for a texture.
|
|
136
|
+
*
|
|
137
|
+
* @param id - The texture ID
|
|
138
|
+
* @returns The crop offset vector
|
|
139
|
+
*/
|
|
140
|
+
getTextureOffset(id: TextureId): Vec2;
|
|
141
|
+
/**
|
|
142
|
+
* Get the original (uncropped) size of a texture.
|
|
143
|
+
*
|
|
144
|
+
* @param id - The texture ID
|
|
145
|
+
* @returns The original size in pixels
|
|
146
|
+
*/
|
|
147
|
+
getSize(id: TextureId): Size;
|
|
148
|
+
/**
|
|
149
|
+
* Get the cropped size of a texture.
|
|
150
|
+
*
|
|
151
|
+
* @param id - The texture ID
|
|
152
|
+
* @returns The cropped size in pixels
|
|
153
|
+
*/
|
|
154
|
+
getCroppedSize(id: TextureId): Size;
|
|
155
|
+
/**
|
|
156
|
+
* Check if a texture exists.
|
|
157
|
+
*
|
|
158
|
+
* @param id - The texture ID
|
|
159
|
+
* @returns True if the texture is registered
|
|
160
|
+
*/
|
|
161
|
+
hasTexture(id: TextureId): boolean;
|
|
162
|
+
/**
|
|
163
|
+
* Get all registered bundle IDs.
|
|
164
|
+
*/
|
|
165
|
+
getRegisteredBundleIds(): BundleId[];
|
|
166
|
+
/**
|
|
167
|
+
* Get all loaded bundle IDs.
|
|
168
|
+
*/
|
|
169
|
+
getLoadedBundleIds(): BundleId[];
|
|
170
|
+
/**
|
|
171
|
+
* Get the CPU-side atlas data for a bundle.
|
|
172
|
+
* Useful for custom renderers that need access to the raw atlas data.
|
|
173
|
+
*
|
|
174
|
+
* @param bundleId - The bundle ID
|
|
175
|
+
* @returns Array of CPU texture atlases
|
|
176
|
+
*/
|
|
177
|
+
getBundleAtlases(bundleId: BundleId): CpuTextureAtlas[];
|
|
178
|
+
/**
|
|
179
|
+
* The atlas size used for coordinate calculations.
|
|
180
|
+
*/
|
|
181
|
+
get atlasSize(): number;
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=Bundles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bundles.d.ts","sourceRoot":"","sources":["../../src/textures/Bundles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,eAAe,EAEf,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAC/B,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAQ9B;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,OAAO;;gBAKN,OAAO,GAAE,cAAmB;IAIxC;;;;;;OAMG;IACG,mBAAmB,CACvB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,QAAQ,CAAC;IAmEpB;;;;;;OAMG;IACH,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI;IAQ3E;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAItC;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAK3C;;;;;OAKG;IACH,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE;IAKnD;;;;;;OAMG;IACH,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI;IASjE;;;;;;OAMG;IACH,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAwCnE;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IA8BtC;;OAEG;IACH,IAAI,QAAQ,IAAI,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,CAEpD;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,SAAS,EAAE,CAE5B;IAED;;;;;OAKG;IACH,cAAc,CAAC,EAAE,EAAE,SAAS,GAAG,WAAW,EAAE;IAU5C;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI;IAWxD;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI;IASzD;;;;;OAKG;IACH,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IActD;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS;IAQ1D;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAUrC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAS5B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAYnC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO;IAIlC;;OAEG;IACH,sBAAsB,IAAI,QAAQ,EAAE;IAIpC;;OAEG;IACH,kBAAkB,IAAI,QAAQ,EAAE;IAMhC;;;;;;OAMG;IACH,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe,EAAE;IAQvD;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;CA0EF"}
|
package/dist/textures/mod.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/textures/mod.ts"],"names":[],"mappings":"AAAA,mBAAmB,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/textures/mod.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,mBAAmB,SAAS,CAAC"}
|
package/dist/textures/types.d.ts
CHANGED
|
@@ -93,7 +93,8 @@ export type TextureBundleOpts = {
|
|
|
93
93
|
*/
|
|
94
94
|
cropTransparentPixels?: boolean;
|
|
95
95
|
/**
|
|
96
|
-
* Whether the bundle should be loaded automatically on registration
|
|
96
|
+
* Whether the bundle should be loaded automatically on registration.
|
|
97
|
+
* @default true
|
|
97
98
|
*/
|
|
98
99
|
autoLoad?: boolean;
|
|
99
100
|
};
|
|
@@ -119,7 +120,8 @@ export type AtlasBundleOpts = {
|
|
|
119
120
|
*/
|
|
120
121
|
atlases: AtlasDef[];
|
|
121
122
|
/**
|
|
122
|
-
* Whether the bundle should be loaded automatically on registration
|
|
123
|
+
* Whether the bundle should be loaded automatically on registration.
|
|
124
|
+
* @default true
|
|
123
125
|
*/
|
|
124
126
|
autoLoad?: boolean;
|
|
125
127
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/textures/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG;IACxC,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG;IACrC,6EAA6E;IAC7E,UAAU,EAAE,IAAI,CAAC;IACjB,iDAAiD;IACjD,YAAY,EAAE,IAAI,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB;;;;;;OAMG;IACH,QAAQ,EAAE,IAAI,CAAC;IACf;;;;;;OAMG;IACH,OAAO,EAAE,IAAI,CAAC;IACd;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,IAAI,CAAC;CACvB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IACnC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,UAAU,CAAC;IACpB,6CAA6C;IAC7C,UAAU,EAAE,IAAI,CAAC;IACjB,mDAAmD;IACnD,YAAY,EAAE,IAAI,CAAC;CACpB,CAAC;AAEF,iDAAiD;AACjD,MAAM,MAAM,QAAQ,GAChB;IACE,6FAA6F;IAC7F,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,8FAA8F;IAC9F,IAAI,EAAE,GAAG,CAAC;CACX,GACD;IACE,6FAA6F;IAC7F,GAAG,EAAE,GAAG,CAAC;IACT,8FAA8F;IAC9F,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,CAAC;AAEN,kEAAkE;AAClE,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE9B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/textures/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/Toodle.ts
CHANGED
|
@@ -510,7 +510,7 @@ export class Toodle {
|
|
|
510
510
|
*/
|
|
511
511
|
Quad(assetId: TextureId, options: QuadOptions = {}) {
|
|
512
512
|
const assetManager = options.assetManager ?? this.assets;
|
|
513
|
-
options.
|
|
513
|
+
options.size ??= assetManager.getSize(assetId);
|
|
514
514
|
options.shader ??= this.#defaultQuadShader();
|
|
515
515
|
options.atlasCoords ??= assetManager.extra.getAtlasCoords(assetId)[0];
|
|
516
516
|
options.textureId ??= assetId;
|
|
@@ -578,7 +578,7 @@ export class Toodle {
|
|
|
578
578
|
height: originalSize.height,
|
|
579
579
|
};
|
|
580
580
|
|
|
581
|
-
options.
|
|
581
|
+
options.size ??= {
|
|
582
582
|
width: originalSize.width,
|
|
583
583
|
height: originalSize.height,
|
|
584
584
|
};
|
|
@@ -612,7 +612,7 @@ export class Toodle {
|
|
|
612
612
|
|
|
613
613
|
shapes = {
|
|
614
614
|
Rect: (options: QuadOptions = {}) => {
|
|
615
|
-
options.
|
|
615
|
+
options.size ??= { width: 1, height: 1 };
|
|
616
616
|
options.shader ??= this.#defaultQuadShader();
|
|
617
617
|
options.atlasCoords ??= {
|
|
618
618
|
atlasIndex: 1000,
|
|
@@ -640,18 +640,25 @@ export class Toodle {
|
|
|
640
640
|
return quad;
|
|
641
641
|
},
|
|
642
642
|
|
|
643
|
-
Circle: (options:
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
643
|
+
Circle: (options: CircleOptions = { radius: 50 }) => {
|
|
644
|
+
const radius = options.radius ?? 50;
|
|
645
|
+
const diameter = radius * 2;
|
|
646
|
+
|
|
647
|
+
const quadOptions: QuadOptions = {
|
|
648
|
+
...options,
|
|
649
|
+
size: { width: diameter, height: diameter },
|
|
650
|
+
shader: options.shader ?? this.#defaultQuadShader(),
|
|
651
|
+
atlasCoords: options.atlasCoords ?? {
|
|
652
|
+
atlasIndex: 1001,
|
|
653
|
+
uvOffset: { x: 0, y: 0 },
|
|
654
|
+
uvScale: { width: 0, height: 0 },
|
|
655
|
+
cropOffset: { x: 0, y: 0 },
|
|
656
|
+
originalSize: { width: 1, height: 1 },
|
|
657
|
+
},
|
|
658
|
+
assetManager: this.assets,
|
|
652
659
|
};
|
|
653
|
-
|
|
654
|
-
const quad = new QuadNode(
|
|
660
|
+
|
|
661
|
+
const quad = new QuadNode(quadOptions, this.#matrixPool);
|
|
655
662
|
|
|
656
663
|
if (options?.position) {
|
|
657
664
|
quad.position = options.position;
|
|
@@ -693,7 +700,7 @@ export class Toodle {
|
|
|
693
700
|
originalSize: { width: 1, height: 1 },
|
|
694
701
|
},
|
|
695
702
|
shader: options.shader ?? this.#defaultQuadShader(),
|
|
696
|
-
|
|
703
|
+
size: { width: 1, height: 1 },
|
|
697
704
|
layer: options.layer,
|
|
698
705
|
key: options.key,
|
|
699
706
|
rotationRadians: angle,
|
|
@@ -821,6 +828,15 @@ export type ToodleOptions = {
|
|
|
821
828
|
limits?: LimitsOptions;
|
|
822
829
|
};
|
|
823
830
|
|
|
831
|
+
export type CircleOptions = Omit<QuadOptions, "size"> & {
|
|
832
|
+
/**
|
|
833
|
+
* The radius of the circle in pixels.
|
|
834
|
+
* The diameter will be radius * 2.
|
|
835
|
+
* @default 50
|
|
836
|
+
*/
|
|
837
|
+
radius?: number;
|
|
838
|
+
};
|
|
839
|
+
|
|
824
840
|
export type LineOptions = {
|
|
825
841
|
/**
|
|
826
842
|
* The start position of the line.
|
package/src/mod.ts
CHANGED
package/src/scene/QuadNode.ts
CHANGED
|
@@ -57,10 +57,7 @@ export class QuadNode extends SceneNode {
|
|
|
57
57
|
options.shader,
|
|
58
58
|
"QuadNode requires a shader to be explicitly provided",
|
|
59
59
|
);
|
|
60
|
-
assert(
|
|
61
|
-
options.idealSize,
|
|
62
|
-
"QuadNode requires an ideal size to be explicitly provided",
|
|
63
|
-
);
|
|
60
|
+
assert(options.size, "QuadNode requires a size to be explicitly provided");
|
|
64
61
|
|
|
65
62
|
assert(
|
|
66
63
|
options.atlasCoords,
|
package/src/scene/SceneNode.ts
CHANGED
|
@@ -27,7 +27,7 @@ export class SceneNode {
|
|
|
27
27
|
#transform: Transform;
|
|
28
28
|
#matrix: Mat3 = mat3.identity();
|
|
29
29
|
#renderComponent: RenderComponent | null = null;
|
|
30
|
-
#
|
|
30
|
+
#size: Size | null = null;
|
|
31
31
|
#positionProxy: Point;
|
|
32
32
|
#scaleProxy: Vec2;
|
|
33
33
|
|
|
@@ -45,7 +45,7 @@ export class SceneNode {
|
|
|
45
45
|
this.#transform = {
|
|
46
46
|
position: opts?.position ?? { x: 0, y: 0 },
|
|
47
47
|
scale: { x: 1, y: 1 },
|
|
48
|
-
size: opts?.
|
|
48
|
+
size: opts?.size ?? { width: 1, height: 1 },
|
|
49
49
|
rotation: opts?.rotationRadians ?? 0,
|
|
50
50
|
};
|
|
51
51
|
if (opts?.scale) this.scale = opts.scale;
|
|
@@ -56,7 +56,7 @@ export class SceneNode {
|
|
|
56
56
|
this.#layer = opts?.layer ?? null;
|
|
57
57
|
this.#isActive = opts?.isActive ?? true;
|
|
58
58
|
this.label = opts?.label ?? undefined;
|
|
59
|
-
this.#
|
|
59
|
+
this.#size = opts?.size ?? null;
|
|
60
60
|
this.#key = opts?.key ?? null;
|
|
61
61
|
|
|
62
62
|
for (const kid of opts?.kids ?? []) {
|
|
@@ -246,17 +246,16 @@ export class SceneNode {
|
|
|
246
246
|
this.setDirty();
|
|
247
247
|
}
|
|
248
248
|
|
|
249
|
-
set idealSize(value: Size | null) {
|
|
250
|
-
this.#idealSize = value;
|
|
251
|
-
this.setDirty();
|
|
252
|
-
}
|
|
253
|
-
|
|
254
249
|
/**
|
|
255
250
|
* The size of the node. See https://toodle.gg/f849595b3ed13fc956fc1459a5cb5f0228f9d259/examples/quad-size-scale.html
|
|
256
251
|
*/
|
|
252
|
+
set size(value: Size | null) {
|
|
253
|
+
this.#size = value;
|
|
254
|
+
this.setDirty();
|
|
255
|
+
}
|
|
257
256
|
|
|
258
257
|
get size() {
|
|
259
|
-
return this.#
|
|
258
|
+
return this.#size;
|
|
260
259
|
}
|
|
261
260
|
|
|
262
261
|
/**
|
|
@@ -264,13 +263,13 @@ export class SceneNode {
|
|
|
264
263
|
* If the node has no defined size, the aspect ratio will be 1.
|
|
265
264
|
*/
|
|
266
265
|
get aspectRatio() {
|
|
267
|
-
if (!this.#
|
|
266
|
+
if (!this.#size) {
|
|
268
267
|
console.warn(
|
|
269
268
|
"Attempted to get aspect ratio of a node with no ideal size",
|
|
270
269
|
);
|
|
271
270
|
return 1;
|
|
272
271
|
}
|
|
273
|
-
return this.#
|
|
272
|
+
return this.#size.width / this.#size.height;
|
|
274
273
|
}
|
|
275
274
|
|
|
276
275
|
/**
|
|
@@ -592,7 +591,7 @@ export type NodeOptions = {
|
|
|
592
591
|
/** The scale for the node. */
|
|
593
592
|
scale?: Vec2 | number;
|
|
594
593
|
/** The desired size for the node. */
|
|
595
|
-
|
|
594
|
+
size?: Size;
|
|
596
595
|
/** The active state for the node. */
|
|
597
596
|
isActive?: boolean;
|
|
598
597
|
/** The kids for the node. */
|
package/src/text/TextNode.ts
CHANGED
|
@@ -23,8 +23,8 @@ export class TextNode extends SceneNode {
|
|
|
23
23
|
|
|
24
24
|
const em2px = shader.font.lineHeight / (opts.fontSize ?? DEFAULT_FONT_SIZE);
|
|
25
25
|
|
|
26
|
-
if (!opts.shrinkToFit && !opts.
|
|
27
|
-
opts.
|
|
26
|
+
if (!opts.shrinkToFit && !opts.size) {
|
|
27
|
+
opts.size = { width: width / em2px, height: height / em2px };
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
super({
|