kiwiengine 0.5.5 → 0.5.12

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.
@@ -15,7 +15,7 @@ const loaderForPathMap = [
15
15
  function getLoaderForPath(path) {
16
16
  return loaderForPathMap.find(({ check }) => check(path))?.loader;
17
17
  }
18
- async function loadAsset(asset) {
18
+ export async function loadAsset(asset) {
19
19
  if (typeof asset === 'string') {
20
20
  const loader = getLoaderForPath(asset);
21
21
  if (!loader) {
@@ -35,24 +35,26 @@ async function loadAsset(asset) {
35
35
  console.warn(`Unknown asset type: ${asset}`);
36
36
  }
37
37
  }
38
- function releaseAsset(asset) {
39
- if (typeof asset === 'string') {
40
- const loader = getLoaderForPath(asset);
41
- if (!loader) {
42
- console.warn(`No loader found for asset: ${asset}`);
43
- return;
38
+ export function releaseAsset(...assets) {
39
+ for (const asset of assets) {
40
+ if (typeof asset === 'string') {
41
+ const loader = getLoaderForPath(asset);
42
+ if (!loader) {
43
+ console.warn(`No loader found for asset: ${asset}`);
44
+ return;
45
+ }
46
+ loader.release(asset);
47
+ }
48
+ else if ('atlas' in asset) {
49
+ const id = getCachedAtlasId(asset.src, asset.atlas);
50
+ spritesheetLoader.release(id);
51
+ }
52
+ else if ('fnt' in asset) {
53
+ bitmapFontLoader.release(asset.fnt);
54
+ }
55
+ else {
56
+ console.warn(`Unknown asset type: ${asset}`);
44
57
  }
45
- loader.release(asset);
46
- }
47
- else if ('atlas' in asset) {
48
- const id = getCachedAtlasId(asset.src, asset.atlas);
49
- spritesheetLoader.release(id);
50
- }
51
- else if ('fnt' in asset) {
52
- bitmapFontLoader.release(asset.fnt);
53
- }
54
- else {
55
- console.warn(`Unknown asset type: ${asset}`);
56
58
  }
57
59
  }
58
60
  export async function preload(assets, progressCallback) {
@@ -68,6 +70,6 @@ export async function preload(assets, progressCallback) {
68
70
  console.error(`Failed to load asset:`, asset, err);
69
71
  }
70
72
  }));
71
- return () => assets.forEach(releaseAsset);
73
+ return () => releaseAsset(...assets);
72
74
  }
73
75
  //# sourceMappingURL=preload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"preload.js","sourceRoot":"","sources":["../../src/asset/preload.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAMjD,MAAM,gBAAgB,GAAqE;IACzF,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE;IACjF,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE;IAC3D,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE;IAC1E,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE;IACjE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE;CAC7D,CAAA;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAA;AAClE,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,KAAkB;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAA;YACnD,OAAM;QACR,CAAC;QACD,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;SAAM,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,MAAM,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;QACnD,MAAM,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAC1D,CAAC;SAAM,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;IACnD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAA;IAC9C,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAkB;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAA;YACnD,OAAM;QACR,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC;SAAM,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,MAAM,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;QACnD,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAC/B,CAAC;SAAM,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACrC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAA;IAC9C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAqB,EACrB,gBAA6C;IAE7C,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAA;IAE3B,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,KAAK,CAAC,CAAA;YACtB,MAAM,EAAE,CAAA;YACR,gBAAgB,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC,CAAA;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QACpD,CAAC;IACH,CAAC,CAAC,CACH,CAAA;IAED,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;AAC3C,CAAC","sourcesContent":["import { Atlas } from '../types/atlas'\nimport { audioLoader } from './loaders/audio'\nimport { binaryLoader } from './loaders/binary'\nimport { bitmapFontLoader } from './loaders/bitmap-font'\nimport { fontFamilyLoader } from './loaders/font'\nimport { Loader } from './loaders/loader'\nimport { getCachedAtlasId, spritesheetLoader } from './loaders/spritesheet'\nimport { textLoader } from './loaders/text'\nimport { textureLoader } from './loaders/texture'\n\nexport type AssetSource = string\n | { src: string, atlas: Atlas }\n | { fnt: string, src: string }\n\nconst loaderForPathMap: Array<{ check: (path: string) => boolean, loader: Loader<any> }> = [\n { check: (p) => p.endsWith('.json') || p.endsWith('.atlas'), loader: textLoader },\n { check: (p) => p.endsWith('.skel'), loader: binaryLoader },\n { check: (p) => /\\.(png|jpe?g|gif|webp)$/.test(p), loader: textureLoader },\n { check: (p) => /\\.(mp3|wav|ogg)$/.test(p), loader: audioLoader },\n { check: (p) => !p.includes('.'), loader: fontFamilyLoader }\n]\n\nfunction getLoaderForPath(path: string): Loader<any> | undefined {\n return loaderForPathMap.find(({ check }) => check(path))?.loader\n}\n\nasync function loadAsset(asset: AssetSource): Promise<void> {\n if (typeof asset === 'string') {\n const loader = getLoaderForPath(asset)\n if (!loader) {\n console.warn(`No loader found for asset: ${asset}`)\n return\n }\n await loader.load(asset)\n } else if ('atlas' in asset) {\n const id = getCachedAtlasId(asset.src, asset.atlas)\n await spritesheetLoader.load(id, asset.src, asset.atlas)\n } else if ('fnt' in asset) {\n await bitmapFontLoader.load(asset.fnt, asset.src)\n } else {\n console.warn(`Unknown asset type: ${asset}`)\n }\n}\n\nfunction releaseAsset(asset: AssetSource): void {\n if (typeof asset === 'string') {\n const loader = getLoaderForPath(asset)\n if (!loader) {\n console.warn(`No loader found for asset: ${asset}`)\n return\n }\n loader.release(asset)\n } else if ('atlas' in asset) {\n const id = getCachedAtlasId(asset.src, asset.atlas)\n spritesheetLoader.release(id)\n } else if ('fnt' in asset) {\n bitmapFontLoader.release(asset.fnt)\n } else {\n console.warn(`Unknown asset type: ${asset}`)\n }\n}\n\nexport async function preload(\n assets: AssetSource[],\n progressCallback?: (progress: number) => void\n): Promise<() => void> {\n let loaded = 0\n const total = assets.length\n\n await Promise.all(\n assets.map(async (asset) => {\n try {\n await loadAsset(asset)\n loaded++\n progressCallback?.(loaded / total)\n } catch (err) {\n console.error(`Failed to load asset:`, asset, err)\n }\n })\n )\n\n return () => assets.forEach(releaseAsset)\n}\n"]}
1
+ {"version":3,"file":"preload.js","sourceRoot":"","sources":["../../src/asset/preload.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAMjD,MAAM,gBAAgB,GAAqE;IACzF,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE;IACjF,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE;IAC3D,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE;IAC1E,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE;IACjE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE;CAC7D,CAAA;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAA;AAClE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAkB;IAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAA;YACnD,OAAM;QACR,CAAC;QACD,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;SAAM,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,MAAM,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;QACnD,MAAM,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAC1D,CAAC;SAAM,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;IACnD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAA;IAC9C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAG,MAAqB;IACnD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;YACtC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAA;gBACnD,OAAM;YACR,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;aAAM,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;YAC5B,MAAM,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;YACnD,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC/B,CAAC;aAAM,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACrC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAqB,EACrB,gBAA6C;IAE7C,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAA;IAE3B,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,KAAK,CAAC,CAAA;YACtB,MAAM,EAAE,CAAA;YACR,gBAAgB,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC,CAAA;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QACpD,CAAC;IACH,CAAC,CAAC,CACH,CAAA;IAED,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,CAAA;AACtC,CAAC","sourcesContent":["import { Atlas } from '../types/atlas'\nimport { audioLoader } from './loaders/audio'\nimport { binaryLoader } from './loaders/binary'\nimport { bitmapFontLoader } from './loaders/bitmap-font'\nimport { fontFamilyLoader } from './loaders/font'\nimport { Loader } from './loaders/loader'\nimport { getCachedAtlasId, spritesheetLoader } from './loaders/spritesheet'\nimport { textLoader } from './loaders/text'\nimport { textureLoader } from './loaders/texture'\n\nexport type AssetSource = string\n | { src: string, atlas: Atlas }\n | { fnt: string, src: string }\n\nconst loaderForPathMap: Array<{ check: (path: string) => boolean, loader: Loader<any> }> = [\n { check: (p) => p.endsWith('.json') || p.endsWith('.atlas'), loader: textLoader },\n { check: (p) => p.endsWith('.skel'), loader: binaryLoader },\n { check: (p) => /\\.(png|jpe?g|gif|webp)$/.test(p), loader: textureLoader },\n { check: (p) => /\\.(mp3|wav|ogg)$/.test(p), loader: audioLoader },\n { check: (p) => !p.includes('.'), loader: fontFamilyLoader }\n]\n\nfunction getLoaderForPath(path: string): Loader<any> | undefined {\n return loaderForPathMap.find(({ check }) => check(path))?.loader\n}\n\nexport async function loadAsset(asset: AssetSource): Promise<void> {\n if (typeof asset === 'string') {\n const loader = getLoaderForPath(asset)\n if (!loader) {\n console.warn(`No loader found for asset: ${asset}`)\n return\n }\n await loader.load(asset)\n } else if ('atlas' in asset) {\n const id = getCachedAtlasId(asset.src, asset.atlas)\n await spritesheetLoader.load(id, asset.src, asset.atlas)\n } else if ('fnt' in asset) {\n await bitmapFontLoader.load(asset.fnt, asset.src)\n } else {\n console.warn(`Unknown asset type: ${asset}`)\n }\n}\n\nexport function releaseAsset(...assets: AssetSource[]): void {\n for (const asset of assets) {\n if (typeof asset === 'string') {\n const loader = getLoaderForPath(asset)\n if (!loader) {\n console.warn(`No loader found for asset: ${asset}`)\n return\n }\n loader.release(asset)\n } else if ('atlas' in asset) {\n const id = getCachedAtlasId(asset.src, asset.atlas)\n spritesheetLoader.release(id)\n } else if ('fnt' in asset) {\n bitmapFontLoader.release(asset.fnt)\n } else {\n console.warn(`Unknown asset type: ${asset}`)\n }\n }\n}\n\nexport async function preload(\n assets: AssetSource[],\n progressCallback?: (progress: number) => void\n): Promise<() => void> {\n let loaded = 0\n const total = assets.length\n\n await Promise.all(\n assets.map(async (asset) => {\n try {\n await loadAsset(asset)\n loaded++\n progressCallback?.(loaded / total)\n } catch (err) {\n console.error(`Failed to load asset:`, asset, err)\n }\n })\n )\n\n return () => releaseAsset(...assets)\n}\n"]}
@@ -50,9 +50,23 @@ export class DomGameObject extends GameNode {
50
50
  this.rotation = options.rotation;
51
51
  if (options.alpha !== undefined)
52
52
  this.alpha = options.alpha;
53
+ if (options.drawOrder !== undefined)
54
+ this.drawOrder = options.drawOrder;
53
55
  this.#useYSort = options.useYSort ?? false;
54
56
  }
55
57
  }
58
+ add(...children) {
59
+ super.add(...children);
60
+ for (const child of children) {
61
+ if (isDomGameObject(child)) {
62
+ this.el.appendChild(child.el);
63
+ }
64
+ }
65
+ }
66
+ remove() {
67
+ this.el.remove();
68
+ super.remove();
69
+ }
56
70
  render(dt) {
57
71
  this.update(dt);
58
72
  this.#updateWorldTransform();
@@ -73,6 +87,8 @@ export class DomGameObject extends GameNode {
73
87
  scale(${wt.scaleX.v}, ${wt.scaleY.v})
74
88
  rotate(${wt.rotation.v}rad)
75
89
  `;
90
+ if (this.#useYSort)
91
+ this.drawOrder = wt.y.v;
76
92
  }
77
93
  if (this.worldAlpha.dirty)
78
94
  this.el.style.opacity = this.worldAlpha.v.toString();
@@ -104,5 +120,7 @@ export class DomGameObject extends GameNode {
104
120
  get pivotY() { return this.#localTransform.pivotY; }
105
121
  set rotation(v) { this.#localTransform.rotation = v; }
106
122
  get rotation() { return this.#localTransform.rotation; }
123
+ set drawOrder(v) { this.el.style.zIndex = v.toString(); }
124
+ get drawOrder() { return Number(this.el.style.zIndex); }
107
125
  }
108
126
  //# sourceMappingURL=dom-game-object.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dom-game-object.js","sourceRoot":"","sources":["../../src/dom/dom-game-object.ts"],"names":[],"mappings":"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","sourcesContent":["import { EventMap } from '@webtaku/event-emitter'\nimport { DirtyNumber } from '../node/core/dirty-number'\nimport { GameNode } from '../node/core/game-node'\nimport { LocalTransform, WorldTransform } from '../node/core/transform'\nimport { setStyle } from './dom-utils'\n\nexport function isDomGameObject(v: unknown): v is DomGameObject {\n return (v as DomGameObject).worldTransform !== undefined\n}\n\nexport type DomGameObjectOptions = {\n x?: number\n y?: number\n scale?: number\n scaleX?: number\n scaleY?: number\n pivotX?: number\n pivotY?: number\n rotation?: number\n\n alpha?: number\n useYSort?: boolean\n}\n\nclass DomRootNode extends GameNode<EventMap> {\n worldTransform = new WorldTransform()\n worldAlpha = new DirtyNumber(1)\n\n constructor() {\n super()\n this.worldTransform.x.v = 0\n this.worldTransform.y.v = 0\n this.worldTransform.resetDirty()\n }\n}\n\nexport class DomGameObject<E extends EventMap = {}> extends GameNode<E> {\n protected el = document.createElement('div')\n\n #localTransform = new LocalTransform()\n worldTransform = new WorldTransform()\n alpha = 1\n worldAlpha = new DirtyNumber(1)\n #useYSort = false\n\n constructor(options?: DomGameObjectOptions) {\n super()\n\n setStyle(this.el, {\n position: 'absolute',\n left: '50%',\n top: '50%',\n zIndex: '1',\n transform: 'translate(-50%, -50%)',\n })\n\n if (options) {\n if (options.x !== undefined) this.x = options.x\n if (options.y !== undefined) this.y = options.y\n if (options.scale !== undefined) this.scale = options.scale\n if (options.scaleX !== undefined) this.scaleX = options.scaleX\n if (options.scaleY !== undefined) this.scaleY = options.scaleY\n if (options.pivotX !== undefined) this.pivotX = options.pivotX\n if (options.pivotY !== undefined) this.pivotY = options.pivotY\n if (options.rotation !== undefined) this.rotation = options.rotation\n if (options.alpha !== undefined) this.alpha = options.alpha\n\n this.#useYSort = options.useYSort ?? false\n }\n }\n\n render(dt: number) {\n this.update(dt)\n this.#updateWorldTransform()\n }\n\n #updateWorldTransform() {\n const parent = this.parent\n if (parent && isDomGameObject(parent)) {\n this.worldTransform.update(parent.worldTransform, this.#localTransform)\n this.worldAlpha.v = parent.worldAlpha.v * this.alpha\n }\n\n if (this.worldTransform.dirty) {\n const wt = this.worldTransform\n\n this.el.style.transform = `\n translate(\n calc(-50% + ${wt.x.v}px),\n calc(-50% + ${wt.y.v}px)\n )\n scale(${wt.scaleX.v}, ${wt.scaleY.v})\n rotate(${wt.rotation.v}rad)\n `\n }\n if (this.worldAlpha.dirty) this.el.style.opacity = this.worldAlpha.v.toString()\n\n for (const child of this.children) {\n if (isDomGameObject(child)) child.#updateWorldTransform()\n }\n this.worldTransform.resetDirty()\n }\n\n attachTo(target: HTMLElement) {\n target.appendChild(this.el)\n this.parent = new DomRootNode()\n this.#updateWorldTransform()\n return this\n }\n\n set x(v) { this.#localTransform.x = v }\n get x() { return this.#localTransform.x }\n\n set y(v) { this.#localTransform.y = v }\n get y() { return this.#localTransform.y }\n\n set scale(v) { this.#localTransform.scaleX = v; this.#localTransform.scaleY = v }\n get scale() { return this.#localTransform.scaleX }\n\n set scaleX(v) { this.#localTransform.scaleX = v }\n get scaleX() { return this.#localTransform.scaleX }\n\n set scaleY(v) { this.#localTransform.scaleY = v }\n get scaleY() { return this.#localTransform.scaleY }\n\n set pivotX(v) { this.#localTransform.pivotX = v }\n get pivotX() { return this.#localTransform.pivotX }\n\n set pivotY(v) { this.#localTransform.pivotY = v }\n get pivotY() { return this.#localTransform.pivotY }\n\n set rotation(v) { this.#localTransform.rotation = v }\n get rotation() { return this.#localTransform.rotation }\n}\n"]}
1
+ {"version":3,"file":"dom-game-object.js","sourceRoot":"","sources":["../../src/dom/dom-game-object.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,MAAM,UAAU,eAAe,CAAC,CAAU;IACxC,OAAQ,CAAmB,CAAC,cAAc,KAAK,SAAS,CAAA;AAC1D,CAAC;AAiBD,MAAM,WAAY,SAAQ,QAAkB;IAC1C,cAAc,GAAG,IAAI,cAAc,EAAE,CAAA;IACrC,UAAU,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAA;IAE/B;QACE,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAA;IAClC,CAAC;CACF;AAED,MAAM,OAAO,aAAuC,SAAQ,QAAW;IAC3D,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAE5C,eAAe,GAAG,IAAI,cAAc,EAAE,CAAA;IACtC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAA;IACrC,KAAK,GAAG,CAAC,CAAA;IACT,UAAU,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAA;IAC/B,SAAS,GAAG,KAAK,CAAA;IAEjB,YAAY,OAA8B;QACxC,KAAK,EAAE,CAAA;QAEP,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE;YAChB,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,KAAK;YACV,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,uBAAuB;SACnC,CAAC,CAAA;QAEF,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,OAAO,CAAC,CAAC,KAAK,SAAS;gBAAE,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAA;YAC/C,IAAI,OAAO,CAAC,CAAC,KAAK,SAAS;gBAAE,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAA;YAC/C,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;gBAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;YAC3D,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;gBAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;YAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;gBAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;YAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;gBAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;YAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;gBAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;YAC9D,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;gBAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;YACpE,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;gBAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;YAC3D,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;gBAAE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;YAEvE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAA;QAC5C,CAAC;IACH,CAAC;IAEQ,GAAG,CAAC,GAAG,QAA8B;QAC5C,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAA;QAEtB,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAEQ,MAAM;QACb,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAA;QAChB,KAAK,CAAC,MAAM,EAAE,CAAA;IAChB,CAAC;IAED,MAAM,CAAC,EAAU;QACf,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACf,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC9B,CAAC;IAED,qBAAqB;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAC1B,IAAI,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;YACvE,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAA;QACtD,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAA;YAE9B,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG;;wBAER,EAAE,CAAC,CAAC,CAAC,CAAC;wBACN,EAAE,CAAC,CAAC,CAAC,CAAC;;gBAEd,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;iBAC1B,EAAE,CAAC,QAAQ,CAAC,CAAC;OACvB,CAAA;YAED,IAAI,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7C,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK;YAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;QAE/E,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,eAAe,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,qBAAqB,EAAE,CAAA;QAC3D,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAA;IAClC,CAAC;IAED,QAAQ,CAAC,MAAmB;QAC1B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,EAAE,CAAA;QAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAA,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA,CAAC,CAAC;IAEzC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAA,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA,CAAC,CAAC;IAEzC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAA,CAAC,CAAC;IACjF,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAA,CAAC,CAAC;IAElD,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAA,CAAC,CAAC;IACjD,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAA,CAAC,CAAC;IAEnD,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAA,CAAC,CAAC;IACjD,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAA,CAAC,CAAC;IAEnD,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAA,CAAC,CAAC;IACjD,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAA,CAAC,CAAC;IAEnD,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAA,CAAC,CAAC;IACjD,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAA,CAAC,CAAC;IAEnD,IAAI,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,CAAC,CAAA,CAAC,CAAC;IACrD,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAA,CAAC,CAAC;IAEvD,IAAI,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAA,CAAC,CAAC;IACxD,IAAI,SAAS,KAAK,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA,CAAC,CAAC;CACxD","sourcesContent":["import { EventMap } from '@webtaku/event-emitter'\nimport { DirtyNumber } from '../node/core/dirty-number'\nimport { GameNode } from '../node/core/game-node'\nimport { LocalTransform, WorldTransform } from '../node/core/transform'\nimport { setStyle } from './dom-utils'\n\nexport function isDomGameObject(v: unknown): v is DomGameObject {\n return (v as DomGameObject).worldTransform !== undefined\n}\n\nexport type DomGameObjectOptions = {\n x?: number\n y?: number\n scale?: number\n scaleX?: number\n scaleY?: number\n pivotX?: number\n pivotY?: number\n rotation?: number\n drawOrder?: number\n\n alpha?: number\n useYSort?: boolean\n}\n\nclass DomRootNode extends GameNode<EventMap> {\n worldTransform = new WorldTransform()\n worldAlpha = new DirtyNumber(1)\n\n constructor() {\n super()\n this.worldTransform.x.v = 0\n this.worldTransform.y.v = 0\n this.worldTransform.resetDirty()\n }\n}\n\nexport class DomGameObject<E extends EventMap = {}> extends GameNode<E> {\n protected el = document.createElement('div')\n\n #localTransform = new LocalTransform()\n worldTransform = new WorldTransform()\n alpha = 1\n worldAlpha = new DirtyNumber(1)\n #useYSort = false\n\n constructor(options?: DomGameObjectOptions) {\n super()\n\n setStyle(this.el, {\n position: 'absolute',\n left: '50%',\n top: '50%',\n zIndex: '1',\n transform: 'translate(-50%, -50%)',\n })\n\n if (options) {\n if (options.x !== undefined) this.x = options.x\n if (options.y !== undefined) this.y = options.y\n if (options.scale !== undefined) this.scale = options.scale\n if (options.scaleX !== undefined) this.scaleX = options.scaleX\n if (options.scaleY !== undefined) this.scaleY = options.scaleY\n if (options.pivotX !== undefined) this.pivotX = options.pivotX\n if (options.pivotY !== undefined) this.pivotY = options.pivotY\n if (options.rotation !== undefined) this.rotation = options.rotation\n if (options.alpha !== undefined) this.alpha = options.alpha\n if (options.drawOrder !== undefined) this.drawOrder = options.drawOrder\n\n this.#useYSort = options.useYSort ?? false\n }\n }\n\n override add(...children: GameNode<EventMap>[]) {\n super.add(...children)\n\n for (const child of children) {\n if (isDomGameObject(child)) {\n this.el.appendChild(child.el)\n }\n }\n }\n\n override remove() {\n this.el.remove()\n super.remove()\n }\n\n render(dt: number) {\n this.update(dt)\n this.#updateWorldTransform()\n }\n\n #updateWorldTransform() {\n const parent = this.parent\n if (parent && isDomGameObject(parent)) {\n this.worldTransform.update(parent.worldTransform, this.#localTransform)\n this.worldAlpha.v = parent.worldAlpha.v * this.alpha\n }\n\n if (this.worldTransform.dirty) {\n const wt = this.worldTransform\n\n this.el.style.transform = `\n translate(\n calc(-50% + ${wt.x.v}px),\n calc(-50% + ${wt.y.v}px)\n )\n scale(${wt.scaleX.v}, ${wt.scaleY.v})\n rotate(${wt.rotation.v}rad)\n `\n\n if (this.#useYSort) this.drawOrder = wt.y.v\n }\n if (this.worldAlpha.dirty) this.el.style.opacity = this.worldAlpha.v.toString()\n\n for (const child of this.children) {\n if (isDomGameObject(child)) child.#updateWorldTransform()\n }\n this.worldTransform.resetDirty()\n }\n\n attachTo(target: HTMLElement) {\n target.appendChild(this.el)\n this.parent = new DomRootNode()\n this.#updateWorldTransform()\n return this\n }\n\n set x(v) { this.#localTransform.x = v }\n get x() { return this.#localTransform.x }\n\n set y(v) { this.#localTransform.y = v }\n get y() { return this.#localTransform.y }\n\n set scale(v) { this.#localTransform.scaleX = v; this.#localTransform.scaleY = v }\n get scale() { return this.#localTransform.scaleX }\n\n set scaleX(v) { this.#localTransform.scaleX = v }\n get scaleX() { return this.#localTransform.scaleX }\n\n set scaleY(v) { this.#localTransform.scaleY = v }\n get scaleY() { return this.#localTransform.scaleY }\n\n set pivotX(v) { this.#localTransform.pivotX = v }\n get pivotX() { return this.#localTransform.pivotX }\n\n set pivotY(v) { this.#localTransform.pivotY = v }\n get pivotY() { return this.#localTransform.pivotY }\n\n set rotation(v) { this.#localTransform.rotation = v }\n get rotation() { return this.#localTransform.rotation }\n\n set drawOrder(v) { this.el.style.zIndex = v.toString() }\n get drawOrder() { return Number(this.el.style.zIndex) }\n}\n"]}
package/lib/index.js CHANGED
@@ -5,7 +5,7 @@ export { Renderer } from './renderer/renderer';
5
5
  export { Ticker } from './renderer/ticker';
6
6
  // Assets
7
7
  export { musicPlayer, sfxPlayer } from './asset/audio';
8
- export { preload } from './asset/preload';
8
+ export { loadAsset, preload, releaseAsset } from './asset/preload';
9
9
  // Collision
10
10
  export { checkCollision } from './collision/check-collision';
11
11
  export { ColliderType } from './collision/colliders';
@@ -26,6 +26,7 @@ export { PhysicsWorld } from './node/physics/physics-world';
26
26
  export { RigidbodyType } from './node/physics/rigidbodies';
27
27
  // DOM Nodes
28
28
  export { DomAnimatedSpriteNode } from './dom/dom-animated-sprite';
29
+ export { DomGameObject } from './dom/dom-game-object';
29
30
  export { DomParticleSystem } from './dom/dom-particle';
30
31
  export { domPreload } from './dom/dom-preload';
31
32
  export { DomSpriteNode } from './dom/dom-sprite';
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO;AACP,OAAO,EAAE,UAAU,EAAqB,MAAM,yBAAyB,CAAA;AAEvE,WAAW;AACX,OAAO,EAAE,QAAQ,EAAmB,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,SAAS;AACT,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAe,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAGtD,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAA4B,YAAY,EAAuD,MAAM,uBAAuB,CAAA;AAEnI,kBAAkB;AAClB,OAAO,EAAE,kBAAkB,EAA6B,MAAM,4BAA4B,CAAA;AAC1F,OAAO,EAAE,cAAc,EAAyB,MAAM,wBAAwB,CAAA;AAC9E,OAAO,EAAE,UAAU,EAAqB,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAA2B,MAAM,0BAA0B,CAAA;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAyB,MAAM,qBAAqB,CAAA;AAC3E,OAAO,EAAE,aAAa,EAAwB,MAAM,sBAAsB,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAoB,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAqB,MAAM,mBAAmB,CAAA;AAEjE,UAAU;AACV,OAAO,EAAE,aAAa,EAAwB,MAAM,+BAA+B,CAAA;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAoE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE5H,YAAY;AACZ,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,EAAE,iBAAiB,EAA4B,MAAM,oBAAoB,CAAA;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAwB,MAAM,kBAAkB,CAAA;AACtE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEtD,QAAQ;AACR,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,QAAQ;AACR,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,QAAQ;AACR,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA","sourcesContent":["// Core\nexport { GameObject, GameObjectOptions } from './node/core/game-object'\n\n// Renderer\nexport { Renderer, RendererOptions } from './renderer/renderer'\nexport { Ticker } from './renderer/ticker'\n\n// Assets\nexport { musicPlayer, sfxPlayer } from './asset/audio'\nexport { AssetSource, preload } from './asset/preload'\nexport { Atlas } from './types/atlas'\n\n// Collision\nexport { checkCollision } from './collision/check-collision'\nexport { CircleCollider, Collider, ColliderType, EllipseCollider, PolygonCollider, RectangleCollider } from './collision/colliders'\n\n// Node Extensions\nexport { AnimatedSpriteNode, AnimatedSpriteNodeOptions } from './node/ext/animated-sprite'\nexport { BitmapTextNode, BitmapTextNodeOptions } from './node/ext/bitmap-text'\nexport { CircleNode, CircleNodeOptions } from './node/ext/circle'\nexport { DelayNode } from './node/ext/deplay'\nexport { DomContainerNode, DomContainerNodeOptions } from './node/ext/dom-container'\nexport { IntervalNode } from './node/ext/interval'\nexport { ParticleSystem, ParticleSystemOptions } from './node/ext/particle'\nexport { RectangleNode, RectangleNodeOptions } from './node/ext/rectangle'\nexport { SpineNode, SpineNodeOptions } from './node/ext/spine'\nexport { SpriteNode, SpriteNodeOptions } from './node/ext/sprite'\n\n// Physics\nexport { PhysicsObject, PhysicsObjectOptions } from './node/physics/physics-object'\nexport { PhysicsWorld } from './node/physics/physics-world'\nexport { CircleRigidbody, PolygonRigidbody, RectangleRigidbody, Rigidbody, RigidbodyType } from './node/physics/rigidbodies'\n\n// DOM Nodes\nexport { DomAnimatedSpriteNode } from './dom/dom-animated-sprite'\nexport { DomParticleSystem, DomParticleSystemOptions } from './dom/dom-particle'\nexport { domPreload } from './dom/dom-preload'\nexport { DomSpriteNode, DomSpriteNodeOptions } from './dom/dom-sprite'\nexport { setStyle, textStroke } from './dom/dom-utils'\n\n// Input\nexport { Joystick } from './input/joystick'\n\n// Utils\nexport { isMobile } from './utils/device'\n\n// Debug\nexport { debugMode, enableDebug } from './debug'\n\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO;AACP,OAAO,EAAE,UAAU,EAAqB,MAAM,yBAAyB,CAAA;AAEvE,WAAW;AACX,OAAO,EAAE,QAAQ,EAAmB,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,SAAS;AACT,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAe,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG/E,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAA4B,YAAY,EAAuD,MAAM,uBAAuB,CAAA;AAEnI,kBAAkB;AAClB,OAAO,EAAE,kBAAkB,EAA6B,MAAM,4BAA4B,CAAA;AAC1F,OAAO,EAAE,cAAc,EAAyB,MAAM,wBAAwB,CAAA;AAC9E,OAAO,EAAE,UAAU,EAAqB,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAA2B,MAAM,0BAA0B,CAAA;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAyB,MAAM,qBAAqB,CAAA;AAC3E,OAAO,EAAE,aAAa,EAAwB,MAAM,sBAAsB,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAoB,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAqB,MAAM,mBAAmB,CAAA;AAEjE,UAAU;AACV,OAAO,EAAE,aAAa,EAAwB,MAAM,+BAA+B,CAAA;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAoE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE5H,YAAY;AACZ,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,EAAE,aAAa,EAAwB,MAAM,uBAAuB,CAAA;AAC3E,OAAO,EAAE,iBAAiB,EAA4B,MAAM,oBAAoB,CAAA;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAwB,MAAM,kBAAkB,CAAA;AACtE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEtD,QAAQ;AACR,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,QAAQ;AACR,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,QAAQ;AACR,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA","sourcesContent":["// Core\nexport { GameObject, GameObjectOptions } from './node/core/game-object'\n\n// Renderer\nexport { Renderer, RendererOptions } from './renderer/renderer'\nexport { Ticker } from './renderer/ticker'\n\n// Assets\nexport { musicPlayer, sfxPlayer } from './asset/audio'\nexport { AssetSource, loadAsset, preload, releaseAsset } from './asset/preload'\nexport { Animation, Atlas, Frame } from './types/atlas'\n\n// Collision\nexport { checkCollision } from './collision/check-collision'\nexport { CircleCollider, Collider, ColliderType, EllipseCollider, PolygonCollider, RectangleCollider } from './collision/colliders'\n\n// Node Extensions\nexport { AnimatedSpriteNode, AnimatedSpriteNodeOptions } from './node/ext/animated-sprite'\nexport { BitmapTextNode, BitmapTextNodeOptions } from './node/ext/bitmap-text'\nexport { CircleNode, CircleNodeOptions } from './node/ext/circle'\nexport { DelayNode } from './node/ext/deplay'\nexport { DomContainerNode, DomContainerNodeOptions } from './node/ext/dom-container'\nexport { IntervalNode } from './node/ext/interval'\nexport { ParticleSystem, ParticleSystemOptions } from './node/ext/particle'\nexport { RectangleNode, RectangleNodeOptions } from './node/ext/rectangle'\nexport { SpineNode, SpineNodeOptions } from './node/ext/spine'\nexport { SpriteNode, SpriteNodeOptions } from './node/ext/sprite'\n\n// Physics\nexport { PhysicsObject, PhysicsObjectOptions } from './node/physics/physics-object'\nexport { PhysicsWorld } from './node/physics/physics-world'\nexport { CircleRigidbody, PolygonRigidbody, RectangleRigidbody, Rigidbody, RigidbodyType } from './node/physics/rigidbodies'\n\n// DOM Nodes\nexport { DomAnimatedSpriteNode } from './dom/dom-animated-sprite'\nexport { DomGameObject, DomGameObjectOptions } from './dom/dom-game-object'\nexport { DomParticleSystem, DomParticleSystemOptions } from './dom/dom-particle'\nexport { domPreload } from './dom/dom-preload'\nexport { DomSpriteNode, DomSpriteNodeOptions } from './dom/dom-sprite'\nexport { setStyle, textStroke } from './dom/dom-utils'\n\n// Input\nexport { Joystick } from './input/joystick'\n\n// Utils\nexport { isMobile } from './utils/device'\n\n// Debug\nexport { debugMode, enableDebug } from './debug'\n\n"]}
@@ -25,6 +25,8 @@ export class TransformableNode extends RenderableNode {
25
25
  this.rotation = options.rotation;
26
26
  if (options.alpha !== undefined)
27
27
  this.alpha = options.alpha;
28
+ if (options.drawOrder !== undefined)
29
+ this.drawOrder = options.drawOrder;
28
30
  this.#layer = options.layer;
29
31
  this.#useYSort = options.useYSort ?? false;
30
32
  }
@@ -57,7 +59,7 @@ export class TransformableNode extends RenderableNode {
57
59
  const lt = this.localTransform;
58
60
  pc.position.set(lt.x, lt.y);
59
61
  if (this.#useYSort)
60
- pc.zIndex = lt.y;
62
+ this.drawOrder = lt.y;
61
63
  pc.pivot.set(lt.pivotX, lt.pivotY);
62
64
  pc.scale.set(lt.scaleX, lt.scaleY);
63
65
  pc.rotation = lt.rotation;
@@ -81,5 +83,7 @@ export class TransformableNode extends RenderableNode {
81
83
  get pivotY() { return this.localTransform.pivotY; }
82
84
  set rotation(v) { this.localTransform.rotation = v; }
83
85
  get rotation() { return this.localTransform.rotation; }
86
+ set drawOrder(v) { this._pixiContainer.zIndex = v; }
87
+ get drawOrder() { return this._pixiContainer.zIndex; }
84
88
  }
85
89
  //# sourceMappingURL=transformable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transformable.js","sourceRoot":"","sources":["../../../src/node/core/transformable.ts"],"names":[],"mappings":"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","sourcesContent":["import { EventMap } from '@webtaku/event-emitter'\nimport { Container as PixiContainer } from 'pixi.js'\nimport { Renderer } from '../../renderer/renderer'\nimport { isRenderableNode, RenderableNode } from './renderable'\nimport { LocalTransform } from './transform'\n\nexport type TransformableNodeOptions = {\n x?: number\n y?: number\n scale?: number\n scaleX?: number\n scaleY?: number\n pivotX?: number\n pivotY?: number\n rotation?: number\n\n alpha?: number\n layer?: string\n useYSort?: boolean\n}\n\nexport abstract class TransformableNode<C extends PixiContainer, E extends EventMap> extends RenderableNode<C, E> {\n protected localTransform = new LocalTransform()\n\n alpha = 1\n #layer?: string\n #useYSort = false\n\n constructor(pixiContainer: C, options: TransformableNodeOptions) {\n super(pixiContainer)\n\n if (options.x !== undefined) this.x = options.x\n if (options.y !== undefined) this.y = options.y\n if (options.scale !== undefined) this.scale = options.scale\n if (options.scaleX !== undefined) this.scaleX = options.scaleX\n if (options.scaleY !== undefined) this.scaleY = options.scaleY\n if (options.pivotX !== undefined) this.pivotX = options.pivotX\n if (options.pivotY !== undefined) this.pivotY = options.pivotY\n if (options.rotation !== undefined) this.rotation = options.rotation\n if (options.alpha !== undefined) this.alpha = options.alpha\n\n this.#layer = options.layer\n this.#useYSort = options.useYSort ?? false\n }\n\n protected override set renderer(renderer: Renderer | undefined) {\n super.renderer = renderer\n\n if (this.#layer && renderer) {\n renderer._addToLayer(this, this.#layer)\n }\n }\n\n protected override get renderer() {\n return super.renderer\n }\n\n override _updateWorldTransform() {\n const parent = this.parent\n if (parent && isRenderableNode(parent)) {\n this.worldTransform.update(parent.worldTransform, this.localTransform)\n this.worldAlpha.v = parent.worldAlpha.v * this.alpha\n }\n\n const pc = this._pixiContainer\n const renderer = this.renderer\n\n // 레이어 상에 있는 경우, 독립적으로 업데이트\n if (this.#layer && renderer) {\n const wt = this.worldTransform\n pc.position.set(wt.x.v, wt.y.v)\n pc.scale.set(wt.scaleX.v, wt.scaleY.v)\n pc.rotation = wt.rotation.v\n pc.alpha = this.worldAlpha.v\n } else {\n const lt = this.localTransform\n pc.position.set(lt.x, lt.y)\n if (this.#useYSort) pc.zIndex = lt.y\n pc.pivot.set(lt.pivotX, lt.pivotY)\n pc.scale.set(lt.scaleX, lt.scaleY)\n pc.rotation = lt.rotation\n pc.alpha = this.alpha\n }\n\n super._updateWorldTransform()\n }\n\n set x(v) { this.localTransform.x = v }\n get x() { return this.localTransform.x }\n\n set y(v) { this.localTransform.y = v }\n get y() { return this.localTransform.y }\n\n set scale(v) { this.localTransform.scaleX = v; this.localTransform.scaleY = v }\n get scale() { return this.localTransform.scaleX }\n\n set scaleX(v) { this.localTransform.scaleX = v }\n get scaleX() { return this.localTransform.scaleX }\n\n set scaleY(v) { this.localTransform.scaleY = v }\n get scaleY() { return this.localTransform.scaleY }\n\n set pivotX(v) { this.localTransform.pivotX = v }\n get pivotX() { return this.localTransform.pivotX }\n\n set pivotY(v) { this.localTransform.pivotY = v }\n get pivotY() { return this.localTransform.pivotY }\n\n set rotation(v) { this.localTransform.rotation = v }\n get rotation() { return this.localTransform.rotation }\n}\n"]}
1
+ {"version":3,"file":"transformable.js","sourceRoot":"","sources":["../../../src/node/core/transformable.ts"],"names":[],"mappings":"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","sourcesContent":["import { EventMap } from '@webtaku/event-emitter'\nimport { Container as PixiContainer } from 'pixi.js'\nimport { Renderer } from '../../renderer/renderer'\nimport { isRenderableNode, RenderableNode } from './renderable'\nimport { LocalTransform } from './transform'\n\nexport type TransformableNodeOptions = {\n x?: number\n y?: number\n scale?: number\n scaleX?: number\n scaleY?: number\n pivotX?: number\n pivotY?: number\n rotation?: number\n drawOrder?: number\n\n alpha?: number\n layer?: string\n useYSort?: boolean\n}\n\nexport abstract class TransformableNode<C extends PixiContainer, E extends EventMap> extends RenderableNode<C, E> {\n protected localTransform = new LocalTransform()\n\n alpha = 1\n #layer?: string\n #useYSort = false\n\n constructor(pixiContainer: C, options: TransformableNodeOptions) {\n super(pixiContainer)\n\n if (options.x !== undefined) this.x = options.x\n if (options.y !== undefined) this.y = options.y\n if (options.scale !== undefined) this.scale = options.scale\n if (options.scaleX !== undefined) this.scaleX = options.scaleX\n if (options.scaleY !== undefined) this.scaleY = options.scaleY\n if (options.pivotX !== undefined) this.pivotX = options.pivotX\n if (options.pivotY !== undefined) this.pivotY = options.pivotY\n if (options.rotation !== undefined) this.rotation = options.rotation\n if (options.alpha !== undefined) this.alpha = options.alpha\n if (options.drawOrder !== undefined) this.drawOrder = options.drawOrder\n\n this.#layer = options.layer\n this.#useYSort = options.useYSort ?? false\n }\n\n protected override set renderer(renderer: Renderer | undefined) {\n super.renderer = renderer\n\n if (this.#layer && renderer) {\n renderer._addToLayer(this, this.#layer)\n }\n }\n\n protected override get renderer() {\n return super.renderer\n }\n\n override _updateWorldTransform() {\n const parent = this.parent\n if (parent && isRenderableNode(parent)) {\n this.worldTransform.update(parent.worldTransform, this.localTransform)\n this.worldAlpha.v = parent.worldAlpha.v * this.alpha\n }\n\n const pc = this._pixiContainer\n const renderer = this.renderer\n\n // 레이어 상에 있는 경우, 독립적으로 업데이트\n if (this.#layer && renderer) {\n const wt = this.worldTransform\n pc.position.set(wt.x.v, wt.y.v)\n pc.scale.set(wt.scaleX.v, wt.scaleY.v)\n pc.rotation = wt.rotation.v\n pc.alpha = this.worldAlpha.v\n } else {\n const lt = this.localTransform\n pc.position.set(lt.x, lt.y)\n if (this.#useYSort) this.drawOrder = lt.y\n pc.pivot.set(lt.pivotX, lt.pivotY)\n pc.scale.set(lt.scaleX, lt.scaleY)\n pc.rotation = lt.rotation\n pc.alpha = this.alpha\n }\n\n super._updateWorldTransform()\n }\n\n set x(v) { this.localTransform.x = v }\n get x() { return this.localTransform.x }\n\n set y(v) { this.localTransform.y = v }\n get y() { return this.localTransform.y }\n\n set scale(v) { this.localTransform.scaleX = v; this.localTransform.scaleY = v }\n get scale() { return this.localTransform.scaleX }\n\n set scaleX(v) { this.localTransform.scaleX = v }\n get scaleX() { return this.localTransform.scaleX }\n\n set scaleY(v) { this.localTransform.scaleY = v }\n get scaleY() { return this.localTransform.scaleY }\n\n set pivotX(v) { this.localTransform.pivotX = v }\n get pivotX() { return this.localTransform.pivotX }\n\n set pivotY(v) { this.localTransform.pivotY = v }\n get pivotY() { return this.localTransform.pivotY }\n\n set rotation(v) { this.localTransform.rotation = v }\n get rotation() { return this.localTransform.rotation }\n\n set drawOrder(v) { this._pixiContainer.zIndex = v }\n get drawOrder() { return this._pixiContainer.zIndex }\n}\n"]}
@@ -6,5 +6,7 @@ export type AssetSource = string | {
6
6
  fnt: string;
7
7
  src: string;
8
8
  };
9
+ export declare function loadAsset(asset: AssetSource): Promise<void>;
10
+ export declare function releaseAsset(...assets: AssetSource[]): void;
9
11
  export declare function preload(assets: AssetSource[], progressCallback?: (progress: number) => void): Promise<() => void>;
10
12
  //# sourceMappingURL=preload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"preload.d.ts","sourceRoot":"","sources":["../../../src/asset/preload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAUtC,MAAM,MAAM,WAAW,GAAG,MAAM,GAC5B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC7B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AAkDhC,wBAAsB,OAAO,CAC3B,MAAM,EAAE,WAAW,EAAE,EACrB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAC5C,OAAO,CAAC,MAAM,IAAI,CAAC,CAiBrB"}
1
+ {"version":3,"file":"preload.d.ts","sourceRoot":"","sources":["../../../src/asset/preload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAUtC,MAAM,MAAM,WAAW,GAAG,MAAM,GAC5B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC7B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AAchC,wBAAsB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBjE;AAED,wBAAgB,YAAY,CAAC,GAAG,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAkB3D;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,WAAW,EAAE,EACrB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAC5C,OAAO,CAAC,MAAM,IAAI,CAAC,CAiBrB"}
@@ -12,6 +12,7 @@ export type DomGameObjectOptions = {
12
12
  pivotX?: number;
13
13
  pivotY?: number;
14
14
  rotation?: number;
15
+ drawOrder?: number;
15
16
  alpha?: number;
16
17
  useYSort?: boolean;
17
18
  };
@@ -22,6 +23,8 @@ export declare class DomGameObject<E extends EventMap = {}> extends GameNode<E>
22
23
  alpha: number;
23
24
  worldAlpha: DirtyNumber;
24
25
  constructor(options?: DomGameObjectOptions);
26
+ add(...children: GameNode<EventMap>[]): void;
27
+ remove(): void;
25
28
  render(dt: number): void;
26
29
  attachTo(target: HTMLElement): this;
27
30
  set x(v: number);
@@ -40,5 +43,7 @@ export declare class DomGameObject<E extends EventMap = {}> extends GameNode<E>
40
43
  get pivotY(): number;
41
44
  set rotation(v: number);
42
45
  get rotation(): number;
46
+ set drawOrder(v: number);
47
+ get drawOrder(): number;
43
48
  }
44
49
  //# sourceMappingURL=dom-game-object.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dom-game-object.d.ts","sourceRoot":"","sources":["../../../src/dom/dom-game-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAkB,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGvE,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,aAAa,CAE9D;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAcD,qBAAa,aAAa,CAAC,CAAC,SAAS,QAAQ,GAAG,EAAE,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;;IACrE,SAAS,CAAC,EAAE,iBAAgC;IAG5C,cAAc,iBAAuB;IACrC,KAAK,SAAI;IACT,UAAU,cAAqB;gBAGnB,OAAO,CAAC,EAAE,oBAAoB;IA0B1C,MAAM,CAAC,EAAE,EAAE,MAAM;IAgCjB,QAAQ,CAAC,MAAM,EAAE,WAAW;IAO5B,IAAI,CAAC,CAAC,CAAC,QAAA,EAAgC;IACvC,IAAI,CAAC,WAAoC;IAEzC,IAAI,CAAC,CAAC,CAAC,QAAA,EAAgC;IACvC,IAAI,CAAC,WAAoC;IAEzC,IAAI,KAAK,CAAC,CAAC,QAAA,EAAsE;IACjF,IAAI,KAAK,WAAyC;IAElD,IAAI,MAAM,CAAC,CAAC,QAAA,EAAqC;IACjD,IAAI,MAAM,WAAyC;IAEnD,IAAI,MAAM,CAAC,CAAC,QAAA,EAAqC;IACjD,IAAI,MAAM,WAAyC;IAEnD,IAAI,MAAM,CAAC,CAAC,QAAA,EAAqC;IACjD,IAAI,MAAM,WAAyC;IAEnD,IAAI,MAAM,CAAC,CAAC,QAAA,EAAqC;IACjD,IAAI,MAAM,WAAyC;IAEnD,IAAI,QAAQ,CAAC,CAAC,QAAA,EAAuC;IACrD,IAAI,QAAQ,WAA2C;CACxD"}
1
+ {"version":3,"file":"dom-game-object.d.ts","sourceRoot":"","sources":["../../../src/dom/dom-game-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAkB,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGvE,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,aAAa,CAE9D;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAcD,qBAAa,aAAa,CAAC,CAAC,SAAS,QAAQ,GAAG,EAAE,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;;IACrE,SAAS,CAAC,EAAE,iBAAgC;IAG5C,cAAc,iBAAuB;IACrC,KAAK,SAAI;IACT,UAAU,cAAqB;gBAGnB,OAAO,CAAC,EAAE,oBAAoB;IA2BjC,GAAG,CAAC,GAAG,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE;IAUrC,MAAM;IAKf,MAAM,CAAC,EAAE,EAAE,MAAM;IAkCjB,QAAQ,CAAC,MAAM,EAAE,WAAW;IAO5B,IAAI,CAAC,CAAC,CAAC,QAAA,EAAgC;IACvC,IAAI,CAAC,WAAoC;IAEzC,IAAI,CAAC,CAAC,CAAC,QAAA,EAAgC;IACvC,IAAI,CAAC,WAAoC;IAEzC,IAAI,KAAK,CAAC,CAAC,QAAA,EAAsE;IACjF,IAAI,KAAK,WAAyC;IAElD,IAAI,MAAM,CAAC,CAAC,QAAA,EAAqC;IACjD,IAAI,MAAM,WAAyC;IAEnD,IAAI,MAAM,CAAC,CAAC,QAAA,EAAqC;IACjD,IAAI,MAAM,WAAyC;IAEnD,IAAI,MAAM,CAAC,CAAC,QAAA,EAAqC;IACjD,IAAI,MAAM,WAAyC;IAEnD,IAAI,MAAM,CAAC,CAAC,QAAA,EAAqC;IACjD,IAAI,MAAM,WAAyC;IAEnD,IAAI,QAAQ,CAAC,CAAC,QAAA,EAAuC;IACrD,IAAI,QAAQ,WAA2C;IAEvD,IAAI,SAAS,CAAC,CAAC,QAAA,EAAyC;IACxD,IAAI,SAAS,WAA0C;CACxD"}
@@ -2,8 +2,8 @@ export { GameObject, GameObjectOptions } from './node/core/game-object';
2
2
  export { Renderer, RendererOptions } from './renderer/renderer';
3
3
  export { Ticker } from './renderer/ticker';
4
4
  export { musicPlayer, sfxPlayer } from './asset/audio';
5
- export { AssetSource, preload } from './asset/preload';
6
- export { Atlas } from './types/atlas';
5
+ export { AssetSource, loadAsset, preload, releaseAsset } from './asset/preload';
6
+ export { Animation, Atlas, Frame } from './types/atlas';
7
7
  export { checkCollision } from './collision/check-collision';
8
8
  export { CircleCollider, Collider, ColliderType, EllipseCollider, PolygonCollider, RectangleCollider } from './collision/colliders';
9
9
  export { AnimatedSpriteNode, AnimatedSpriteNodeOptions } from './node/ext/animated-sprite';
@@ -20,6 +20,7 @@ export { PhysicsObject, PhysicsObjectOptions } from './node/physics/physics-obje
20
20
  export { PhysicsWorld } from './node/physics/physics-world';
21
21
  export { CircleRigidbody, PolygonRigidbody, RectangleRigidbody, Rigidbody, RigidbodyType } from './node/physics/rigidbodies';
22
22
  export { DomAnimatedSpriteNode } from './dom/dom-animated-sprite';
23
+ export { DomGameObject, DomGameObjectOptions } from './dom/dom-game-object';
23
24
  export { DomParticleSystem, DomParticleSystemOptions } from './dom/dom-particle';
24
25
  export { domPreload } from './dom/dom-preload';
25
26
  export { DomSpriteNode, DomSpriteNodeOptions } from './dom/dom-sprite';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAGvE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG1C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAGrC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAGnI,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AAC1F,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC9E,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3E,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAGjE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAG5H,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACtE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGtD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAG3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGzC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAGvE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG1C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC/E,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAGvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAGnI,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AAC1F,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC9E,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3E,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAGjE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAG5H,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACtE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGtD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAG3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGzC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA"}
@@ -12,6 +12,7 @@ export type TransformableNodeOptions = {
12
12
  pivotX?: number;
13
13
  pivotY?: number;
14
14
  rotation?: number;
15
+ drawOrder?: number;
15
16
  alpha?: number;
16
17
  layer?: string;
17
18
  useYSort?: boolean;
@@ -40,5 +41,7 @@ export declare abstract class TransformableNode<C extends PixiContainer, E exten
40
41
  get pivotY(): number;
41
42
  set rotation(v: number);
42
43
  get rotation(): number;
44
+ set drawOrder(v: number);
45
+ get drawOrder(): number;
43
46
  }
44
47
  //# sourceMappingURL=transformable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transformable.d.ts","sourceRoot":"","sources":["../../../../src/node/core/transformable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,SAAS,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAoB,cAAc,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,MAAM,wBAAwB,GAAG;IACrC,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,8BAAsB,iBAAiB,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,SAAS,QAAQ,CAAE,SAAQ,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;;IAC/G,SAAS,CAAC,cAAc,iBAAuB;IAE/C,KAAK,SAAI;gBAIG,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,wBAAwB;IAiB/D,cAAuB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAM7D;IAED,cAAuB,QAAQ,IARW,QAAQ,GAAG,SAAS,CAU7D;IAEQ,qBAAqB;IA8B9B,IAAI,CAAC,CAAC,CAAC,QAAA,EAA+B;IACtC,IAAI,CAAC,WAAmC;IAExC,IAAI,CAAC,CAAC,CAAC,QAAA,EAA+B;IACtC,IAAI,CAAC,WAAmC;IAExC,IAAI,KAAK,CAAC,CAAC,QAAA,EAAoE;IAC/E,IAAI,KAAK,WAAwC;IAEjD,IAAI,MAAM,CAAC,CAAC,QAAA,EAAoC;IAChD,IAAI,MAAM,WAAwC;IAElD,IAAI,MAAM,CAAC,CAAC,QAAA,EAAoC;IAChD,IAAI,MAAM,WAAwC;IAElD,IAAI,MAAM,CAAC,CAAC,QAAA,EAAoC;IAChD,IAAI,MAAM,WAAwC;IAElD,IAAI,MAAM,CAAC,CAAC,QAAA,EAAoC;IAChD,IAAI,MAAM,WAAwC;IAElD,IAAI,QAAQ,CAAC,CAAC,QAAA,EAAsC;IACpD,IAAI,QAAQ,WAA0C;CACvD"}
1
+ {"version":3,"file":"transformable.d.ts","sourceRoot":"","sources":["../../../../src/node/core/transformable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,SAAS,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAoB,cAAc,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,MAAM,wBAAwB,GAAG;IACrC,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,8BAAsB,iBAAiB,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,SAAS,QAAQ,CAAE,SAAQ,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;;IAC/G,SAAS,CAAC,cAAc,iBAAuB;IAE/C,KAAK,SAAI;gBAIG,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,wBAAwB;IAkB/D,cAAuB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAM7D;IAED,cAAuB,QAAQ,IARW,QAAQ,GAAG,SAAS,CAU7D;IAEQ,qBAAqB;IA8B9B,IAAI,CAAC,CAAC,CAAC,QAAA,EAA+B;IACtC,IAAI,CAAC,WAAmC;IAExC,IAAI,CAAC,CAAC,CAAC,QAAA,EAA+B;IACtC,IAAI,CAAC,WAAmC;IAExC,IAAI,KAAK,CAAC,CAAC,QAAA,EAAoE;IAC/E,IAAI,KAAK,WAAwC;IAEjD,IAAI,MAAM,CAAC,CAAC,QAAA,EAAoC;IAChD,IAAI,MAAM,WAAwC;IAElD,IAAI,MAAM,CAAC,CAAC,QAAA,EAAoC;IAChD,IAAI,MAAM,WAAwC;IAElD,IAAI,MAAM,CAAC,CAAC,QAAA,EAAoC;IAChD,IAAI,MAAM,WAAwC;IAElD,IAAI,MAAM,CAAC,CAAC,QAAA,EAAoC;IAChD,IAAI,MAAM,WAAwC;IAElD,IAAI,QAAQ,CAAC,CAAC,QAAA,EAAsC;IACpD,IAAI,QAAQ,WAA0C;IAEtD,IAAI,SAAS,CAAC,CAAC,QAAA,EAAoC;IACnD,IAAI,SAAS,WAAwC;CACtD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kiwiengine",
3
- "version": "0.5.5",
3
+ "version": "0.5.12",
4
4
  "types": "./lib/types/index.d.ts",
5
5
  "main": "./lib/index.js",
6
6
  "dependencies": {
@@ -21,4 +21,4 @@
21
21
  "typescript": "^5.8.3"
22
22
  },
23
23
  "packageManager": "yarn@1.22.22"
24
- }
24
+ }
@@ -24,7 +24,7 @@ function getLoaderForPath(path: string): Loader<any> | undefined {
24
24
  return loaderForPathMap.find(({ check }) => check(path))?.loader
25
25
  }
26
26
 
27
- async function loadAsset(asset: AssetSource): Promise<void> {
27
+ export async function loadAsset(asset: AssetSource): Promise<void> {
28
28
  if (typeof asset === 'string') {
29
29
  const loader = getLoaderForPath(asset)
30
30
  if (!loader) {
@@ -42,21 +42,23 @@ async function loadAsset(asset: AssetSource): Promise<void> {
42
42
  }
43
43
  }
44
44
 
45
- function releaseAsset(asset: AssetSource): void {
46
- if (typeof asset === 'string') {
47
- const loader = getLoaderForPath(asset)
48
- if (!loader) {
49
- console.warn(`No loader found for asset: ${asset}`)
50
- return
45
+ export function releaseAsset(...assets: AssetSource[]): void {
46
+ for (const asset of assets) {
47
+ if (typeof asset === 'string') {
48
+ const loader = getLoaderForPath(asset)
49
+ if (!loader) {
50
+ console.warn(`No loader found for asset: ${asset}`)
51
+ return
52
+ }
53
+ loader.release(asset)
54
+ } else if ('atlas' in asset) {
55
+ const id = getCachedAtlasId(asset.src, asset.atlas)
56
+ spritesheetLoader.release(id)
57
+ } else if ('fnt' in asset) {
58
+ bitmapFontLoader.release(asset.fnt)
59
+ } else {
60
+ console.warn(`Unknown asset type: ${asset}`)
51
61
  }
52
- loader.release(asset)
53
- } else if ('atlas' in asset) {
54
- const id = getCachedAtlasId(asset.src, asset.atlas)
55
- spritesheetLoader.release(id)
56
- } else if ('fnt' in asset) {
57
- bitmapFontLoader.release(asset.fnt)
58
- } else {
59
- console.warn(`Unknown asset type: ${asset}`)
60
62
  }
61
63
  }
62
64
 
@@ -79,5 +81,5 @@ export async function preload(
79
81
  })
80
82
  )
81
83
 
82
- return () => assets.forEach(releaseAsset)
84
+ return () => releaseAsset(...assets)
83
85
  }
@@ -17,6 +17,7 @@ export type DomGameObjectOptions = {
17
17
  pivotX?: number
18
18
  pivotY?: number
19
19
  rotation?: number
20
+ drawOrder?: number
20
21
 
21
22
  alpha?: number
22
23
  useYSort?: boolean
@@ -64,11 +65,27 @@ export class DomGameObject<E extends EventMap = {}> extends GameNode<E> {
64
65
  if (options.pivotY !== undefined) this.pivotY = options.pivotY
65
66
  if (options.rotation !== undefined) this.rotation = options.rotation
66
67
  if (options.alpha !== undefined) this.alpha = options.alpha
68
+ if (options.drawOrder !== undefined) this.drawOrder = options.drawOrder
67
69
 
68
70
  this.#useYSort = options.useYSort ?? false
69
71
  }
70
72
  }
71
73
 
74
+ override add(...children: GameNode<EventMap>[]) {
75
+ super.add(...children)
76
+
77
+ for (const child of children) {
78
+ if (isDomGameObject(child)) {
79
+ this.el.appendChild(child.el)
80
+ }
81
+ }
82
+ }
83
+
84
+ override remove() {
85
+ this.el.remove()
86
+ super.remove()
87
+ }
88
+
72
89
  render(dt: number) {
73
90
  this.update(dt)
74
91
  this.#updateWorldTransform()
@@ -92,6 +109,8 @@ export class DomGameObject<E extends EventMap = {}> extends GameNode<E> {
92
109
  scale(${wt.scaleX.v}, ${wt.scaleY.v})
93
110
  rotate(${wt.rotation.v}rad)
94
111
  `
112
+
113
+ if (this.#useYSort) this.drawOrder = wt.y.v
95
114
  }
96
115
  if (this.worldAlpha.dirty) this.el.style.opacity = this.worldAlpha.v.toString()
97
116
 
@@ -131,4 +150,7 @@ export class DomGameObject<E extends EventMap = {}> extends GameNode<E> {
131
150
 
132
151
  set rotation(v) { this.#localTransform.rotation = v }
133
152
  get rotation() { return this.#localTransform.rotation }
153
+
154
+ set drawOrder(v) { this.el.style.zIndex = v.toString() }
155
+ get drawOrder() { return Number(this.el.style.zIndex) }
134
156
  }
package/src/index.ts CHANGED
@@ -7,8 +7,8 @@ export { Ticker } from './renderer/ticker'
7
7
 
8
8
  // Assets
9
9
  export { musicPlayer, sfxPlayer } from './asset/audio'
10
- export { AssetSource, preload } from './asset/preload'
11
- export { Atlas } from './types/atlas'
10
+ export { AssetSource, loadAsset, preload, releaseAsset } from './asset/preload'
11
+ export { Animation, Atlas, Frame } from './types/atlas'
12
12
 
13
13
  // Collision
14
14
  export { checkCollision } from './collision/check-collision'
@@ -33,6 +33,7 @@ export { CircleRigidbody, PolygonRigidbody, RectangleRigidbody, Rigidbody, Rigid
33
33
 
34
34
  // DOM Nodes
35
35
  export { DomAnimatedSpriteNode } from './dom/dom-animated-sprite'
36
+ export { DomGameObject, DomGameObjectOptions } from './dom/dom-game-object'
36
37
  export { DomParticleSystem, DomParticleSystemOptions } from './dom/dom-particle'
37
38
  export { domPreload } from './dom/dom-preload'
38
39
  export { DomSpriteNode, DomSpriteNodeOptions } from './dom/dom-sprite'
@@ -13,6 +13,7 @@ export type TransformableNodeOptions = {
13
13
  pivotX?: number
14
14
  pivotY?: number
15
15
  rotation?: number
16
+ drawOrder?: number
16
17
 
17
18
  alpha?: number
18
19
  layer?: string
@@ -38,6 +39,7 @@ export abstract class TransformableNode<C extends PixiContainer, E extends Event
38
39
  if (options.pivotY !== undefined) this.pivotY = options.pivotY
39
40
  if (options.rotation !== undefined) this.rotation = options.rotation
40
41
  if (options.alpha !== undefined) this.alpha = options.alpha
42
+ if (options.drawOrder !== undefined) this.drawOrder = options.drawOrder
41
43
 
42
44
  this.#layer = options.layer
43
45
  this.#useYSort = options.useYSort ?? false
@@ -75,7 +77,7 @@ export abstract class TransformableNode<C extends PixiContainer, E extends Event
75
77
  } else {
76
78
  const lt = this.localTransform
77
79
  pc.position.set(lt.x, lt.y)
78
- if (this.#useYSort) pc.zIndex = lt.y
80
+ if (this.#useYSort) this.drawOrder = lt.y
79
81
  pc.pivot.set(lt.pivotX, lt.pivotY)
80
82
  pc.scale.set(lt.scaleX, lt.scaleY)
81
83
  pc.rotation = lt.rotation
@@ -108,4 +110,7 @@ export abstract class TransformableNode<C extends PixiContainer, E extends Event
108
110
 
109
111
  set rotation(v) { this.localTransform.rotation = v }
110
112
  get rotation() { return this.localTransform.rotation }
113
+
114
+ set drawOrder(v) { this._pixiContainer.zIndex = v }
115
+ get drawOrder() { return this._pixiContainer.zIndex }
111
116
  }