@zylem/behaviors 0.5.7 → 0.5.11

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.
Files changed (162) hide show
  1. package/dist/{behavior-system-HEt67el5.d.ts → behavior-system-DkFAwLb_.d.ts} +6 -0
  2. package/dist/{chunk-7LHXAEOZ.js → chunk-3QUECYMT.js} +5 -4
  3. package/dist/chunk-3QUECYMT.js.map +1 -0
  4. package/dist/{chunk-GZ3DQIIZ.js → chunk-4GW6DCYF.js} +1 -0
  5. package/dist/chunk-4GW6DCYF.js.map +1 -0
  6. package/dist/{chunk-F7E23E26.js → chunk-4WH2ZN7P.js} +1 -0
  7. package/dist/chunk-4WH2ZN7P.js.map +1 -0
  8. package/dist/{chunk-LAN7U3AK.js → chunk-52FJIDGL.js} +2 -1
  9. package/dist/chunk-52FJIDGL.js.map +1 -0
  10. package/dist/{chunk-K6CWKFHL.js → chunk-5A5AYP2C.js} +1 -0
  11. package/dist/chunk-5A5AYP2C.js.map +1 -0
  12. package/dist/{chunk-JSBRDJBE.js → chunk-5WRI5ZAA.js} +1 -0
  13. package/dist/chunk-5WRI5ZAA.js.map +1 -0
  14. package/dist/{chunk-UUMH3DC3.js → chunk-5XPPLTC7.js} +2 -1
  15. package/dist/chunk-5XPPLTC7.js.map +1 -0
  16. package/dist/{chunk-OBF6BIA2.js → chunk-AS3HR7AS.js} +2 -1
  17. package/dist/chunk-AS3HR7AS.js.map +1 -0
  18. package/dist/{chunk-E2MOFIDH.js → chunk-BAXJ7XHJ.js} +4 -3
  19. package/dist/chunk-BAXJ7XHJ.js.map +1 -0
  20. package/dist/{chunk-TK3AXXXI.js → chunk-D7N6SC4D.js} +4 -3
  21. package/dist/chunk-D7N6SC4D.js.map +1 -0
  22. package/dist/{chunk-CTSYM56P.js → chunk-DGDNFX43.js} +6 -5
  23. package/dist/chunk-DGDNFX43.js.map +1 -0
  24. package/dist/{chunk-CB3C7CRD.js → chunk-DWVLGXMF.js} +5 -4
  25. package/dist/chunk-DWVLGXMF.js.map +1 -0
  26. package/dist/{chunk-2HKY6WF7.js → chunk-EIWQM6U3.js} +1 -0
  27. package/dist/chunk-EIWQM6U3.js.map +1 -0
  28. package/dist/{chunk-YDLO5M7S.js → chunk-EZNCCO4L.js} +1 -0
  29. package/dist/chunk-EZNCCO4L.js.map +1 -0
  30. package/dist/{chunk-LLDLVVG4.js → chunk-GL5JGXPR.js} +5 -4
  31. package/dist/chunk-GL5JGXPR.js.map +1 -0
  32. package/dist/{chunk-NDJO56BB.js → chunk-GLXEJD2P.js} +4 -3
  33. package/dist/chunk-GLXEJD2P.js.map +1 -0
  34. package/dist/{chunk-QU6GQ657.js → chunk-H4TJ7X4O.js} +3 -2
  35. package/dist/chunk-H4TJ7X4O.js.map +1 -0
  36. package/dist/{chunk-4DVDFCVY.js → chunk-HZMY3TT4.js} +1 -0
  37. package/dist/chunk-HZMY3TT4.js.map +1 -0
  38. package/dist/{chunk-57GLKGEX.js → chunk-IRMJTAIK.js} +4 -3
  39. package/dist/chunk-IRMJTAIK.js.map +1 -0
  40. package/dist/{chunk-2HLZBWGD.js → chunk-IZJFUAXB.js} +1 -0
  41. package/dist/chunk-IZJFUAXB.js.map +1 -0
  42. package/dist/{chunk-M25QJBDN.js → chunk-JACX7ZMJ.js} +5 -4
  43. package/dist/chunk-JACX7ZMJ.js.map +1 -0
  44. package/dist/{chunk-SHZZ2QRV.js → chunk-JVADRLWX.js} +3 -2
  45. package/dist/chunk-JVADRLWX.js.map +1 -0
  46. package/dist/{chunk-RR3XNDKG.js → chunk-KFFETUAL.js} +3 -2
  47. package/dist/chunk-KFFETUAL.js.map +1 -0
  48. package/dist/{chunk-OSPQFWQF.js → chunk-KIYUUSPK.js} +3 -2
  49. package/dist/chunk-KIYUUSPK.js.map +1 -0
  50. package/dist/{chunk-2YF7J3H4.js → chunk-LL4FLHIY.js} +1 -0
  51. package/dist/chunk-LL4FLHIY.js.map +1 -0
  52. package/dist/{chunk-LWM346FW.js → chunk-M3QDKKDF.js} +1 -0
  53. package/dist/chunk-M3QDKKDF.js.map +1 -0
  54. package/dist/{chunk-CVRN7YAI.js → chunk-MUBU2DIB.js} +44 -16
  55. package/dist/chunk-MUBU2DIB.js.map +1 -0
  56. package/dist/{chunk-UKGBQTHL.js → chunk-NQPYMUDF.js} +4 -3
  57. package/dist/chunk-NQPYMUDF.js.map +1 -0
  58. package/dist/{chunk-DD4U42FG.js → chunk-NW4SE5XW.js} +3 -2
  59. package/dist/chunk-NW4SE5XW.js.map +1 -0
  60. package/dist/{chunk-WHKPWIQO.js → chunk-OHCPV2NT.js} +1 -0
  61. package/dist/chunk-OHCPV2NT.js.map +1 -0
  62. package/dist/{chunk-TZQQYJYK.js → chunk-OPZ2LVS2.js} +1 -0
  63. package/dist/chunk-OPZ2LVS2.js.map +1 -0
  64. package/dist/{chunk-7TIIRJKF.js → chunk-PLIXVF7B.js} +4 -3
  65. package/dist/chunk-PLIXVF7B.js.map +1 -0
  66. package/dist/{chunk-4EWASZHB.js → chunk-QVCMJ4Q2.js} +1 -0
  67. package/dist/chunk-QVCMJ4Q2.js.map +1 -0
  68. package/dist/{chunk-55CFXXZH.js → chunk-S5HFWDGM.js} +4 -3
  69. package/dist/chunk-S5HFWDGM.js.map +1 -0
  70. package/dist/{chunk-3X3CL24Z.js → chunk-SGHIGTVZ.js} +1 -0
  71. package/dist/chunk-SGHIGTVZ.js.map +1 -0
  72. package/dist/{chunk-VJ3UA6OD.js → chunk-TBUKJKY6.js} +2 -1
  73. package/dist/chunk-TBUKJKY6.js.map +1 -0
  74. package/dist/{chunk-UF7QPYUX.js → chunk-USFIJUDN.js} +1 -0
  75. package/dist/chunk-USFIJUDN.js.map +1 -0
  76. package/dist/{chunk-ERS6SNA5.js → chunk-WOMHL23C.js} +2 -1
  77. package/dist/chunk-WOMHL23C.js.map +1 -0
  78. package/dist/{chunk-7GGR26YA.js → chunk-WQUPSOFV.js} +4 -3
  79. package/dist/chunk-WQUPSOFV.js.map +1 -0
  80. package/dist/{chunk-OU2SW4U5.js → chunk-ZOYA3TZG.js} +4 -3
  81. package/dist/chunk-ZOYA3TZG.js.map +1 -0
  82. package/dist/{components-JZQoO2sU.d.ts → components--RTwuT4S.d.ts} +1 -1
  83. package/dist/cooldown.d.ts +1 -1
  84. package/dist/cooldown.js +4 -3
  85. package/dist/cooldown.js.map +1 -0
  86. package/dist/coordinators/boundary-ricochet-3d.d.ts +2 -2
  87. package/dist/coordinators/boundary-ricochet-3d.js +5 -4
  88. package/dist/coordinators/boundary-ricochet-3d.js.map +1 -0
  89. package/dist/coordinators/boundary-ricochet.d.ts +2 -2
  90. package/dist/coordinators/boundary-ricochet.js +5 -4
  91. package/dist/coordinators/boundary-ricochet.js.map +1 -0
  92. package/dist/coordinators/first-person-shooter.js +5 -4
  93. package/dist/coordinators/first-person-shooter.js.map +1 -0
  94. package/dist/coordinators/multidirectional-space-shooter.d.ts +1 -1
  95. package/dist/coordinators/multidirectional-space-shooter.js +7 -6
  96. package/dist/coordinators/multidirectional-space-shooter.js.map +1 -0
  97. package/dist/coordinators/top-down-shooter.d.ts +1 -1
  98. package/dist/coordinators/top-down-shooter.js +7 -6
  99. package/dist/coordinators/top-down-shooter.js.map +1 -0
  100. package/dist/core.d.ts +4 -4
  101. package/dist/core.js +7 -6
  102. package/dist/core.js.map +1 -0
  103. package/dist/destructible-3d.d.ts +1 -1
  104. package/dist/destructible-3d.js +5 -4
  105. package/dist/destructible-3d.js.map +1 -0
  106. package/dist/destructible-prebake.js +3 -2
  107. package/dist/destructible-prebake.js.map +1 -0
  108. package/dist/first-person.d.ts +1 -1
  109. package/dist/first-person.js +8 -7
  110. package/dist/first-person.js.map +1 -0
  111. package/dist/index.d.ts +3 -3
  112. package/dist/index.js +41 -40
  113. package/dist/index.js.map +1 -0
  114. package/dist/jumper-2d.d.ts +1 -1
  115. package/dist/jumper-2d.js +6 -5
  116. package/dist/jumper-2d.js.map +1 -0
  117. package/dist/jumper-3d.d.ts +1 -1
  118. package/dist/jumper-3d.js +7 -6
  119. package/dist/jumper-3d.js.map +1 -0
  120. package/dist/{moveable-BdFmI3s1.d.ts → moveable-CFOHmblC.d.ts} +1 -1
  121. package/dist/particle-emitter/presets.js +3 -2
  122. package/dist/particle-emitter/presets.js.map +1 -0
  123. package/dist/particle-emitter.d.ts +1 -1
  124. package/dist/particle-emitter.js +6 -5
  125. package/dist/particle-emitter.js.map +1 -0
  126. package/dist/platformer-2d.d.ts +1 -1
  127. package/dist/platformer-2d.js +6 -5
  128. package/dist/platformer-2d.js.map +1 -0
  129. package/dist/platformer-3d.d.ts +1 -1
  130. package/dist/platformer-3d.js +6 -5
  131. package/dist/platformer-3d.js.map +1 -0
  132. package/dist/ricochet-2d.d.ts +1 -1
  133. package/dist/ricochet-2d.js +6 -5
  134. package/dist/ricochet-2d.js.map +1 -0
  135. package/dist/ricochet-3d.d.ts +1 -1
  136. package/dist/ricochet-3d.js +6 -5
  137. package/dist/ricochet-3d.js.map +1 -0
  138. package/dist/runtime-2d.d.ts +1 -1
  139. package/dist/runtime-2d.js +3 -2
  140. package/dist/runtime-2d.js.map +1 -0
  141. package/dist/screen-visibility.d.ts +1 -1
  142. package/dist/screen-visibility.js +4 -3
  143. package/dist/screen-visibility.js.map +1 -0
  144. package/dist/screen-wrap.d.ts +1 -1
  145. package/dist/screen-wrap.js +6 -5
  146. package/dist/screen-wrap.js.map +1 -0
  147. package/dist/shooter-2d.d.ts +1 -1
  148. package/dist/shooter-2d.js +6 -5
  149. package/dist/shooter-2d.js.map +1 -0
  150. package/dist/thruster.d.ts +1 -1
  151. package/dist/thruster.js +6 -5
  152. package/dist/thruster.js.map +1 -0
  153. package/dist/top-down-movement.d.ts +1 -1
  154. package/dist/top-down-movement.js +8 -7
  155. package/dist/top-down-movement.js.map +1 -0
  156. package/dist/world-boundary-2d.d.ts +1 -1
  157. package/dist/world-boundary-2d.js +7 -6
  158. package/dist/world-boundary-2d.js.map +1 -0
  159. package/dist/world-boundary-3d.d.ts +1 -1
  160. package/dist/world-boundary-3d.js +7 -6
  161. package/dist/world-boundary-3d.js.map +1 -0
  162. package/package.json +160 -159
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/behaviors/runtime-2d/runtime-2d.descriptor.ts"],"sourcesContent":["/**\n * Runtime 2D Behavior Descriptors\n *\n * Marker descriptors for entities managed entirely by the wasm gameplay-2d\n * runtime (paddle-and-ball style games, boundaries, trigger regions, goal\n * zones). The descriptors carry configuration and event wiring only — all\n * per-frame simulation happens inside the wasm runtime, so their systems are\n * no-ops. The host runtime binds concrete callbacks onto the behavior refs\n * (see {@link bindRuntimeDynamicCircleBody2DHandle} and the emit helpers).\n */\n\nimport {\n\tdefineBehavior,\n\ttype BehaviorRef,\n} from '../behavior-descriptor';\nimport type { BehaviorSystem } from '../behavior-system';\n\nexport interface RuntimeDynamicCircleBody2DOptions {\n\tinitialVelocity: readonly [number, number];\n}\n\nexport interface RuntimeDynamicCircleBody2DHandle {\n\tsetRuntimePosition(x: number, y: number, z?: number): void;\n\tsetRuntimeVelocity(x: number, y: number): void;\n\tgetRuntimePosition(): { x: number; y: number; z: number } | null;\n}\n\nexport interface RuntimePlayerInput2DOptions {\n\tplayer: 'p1' | 'p2';\n\tspeed: number;\n}\n\nexport interface RuntimeBoundary2DOptions {\n\tboundaries: {\n\t\tleft: number;\n\t\tright: number;\n\t\tbottom: number;\n\t\ttop: number;\n\t};\n}\n\nexport interface RuntimeRicochet2DOptions {\n\tminSpeed: number;\n\tmaxSpeed: number;\n\tspeedMultiplier: number;\n\treflectionMode: 'simple' | 'angled';\n\tmaxAngleDeg: number;\n}\n\nexport interface RuntimeRicochet2DEvent {\n\tkind: 'wall' | 'paddle';\n}\n\nexport interface RuntimeRicochet2DHandle {\n\tonRicochet(callback: (event: RuntimeRicochet2DEvent) => void): () => void;\n}\n\n/** Registers a gameplay2d trigger AABB (sensor); wasm reports overlap via {@link emitRuntimeTriggerRegionEnter}. */\nexport interface RuntimeTriggerRegion2DOptions {\n\ttriggerId: number;\n\thalfExtents: readonly [number, number];\n}\n\nexport interface RuntimeTriggerRegion2DEvent {\n\ttriggerId: number;\n}\n\nexport interface RuntimeTriggerRegion2DHandle {\n\tonRegionEnter(callback: (event: RuntimeTriggerRegion2DEvent) => void): () => void;\n}\n\nexport interface RuntimeGoalZone2DOptions {\n\tscorer: 'p1' | 'p2';\n}\n\nexport interface RuntimeGoalZone2DEvent {\n\tscorer: 'p1' | 'p2';\n}\n\nexport interface RuntimeGoalZone2DHandle {\n\tonGoal(callback: (event: RuntimeGoalZone2DEvent) => void): () => void;\n}\n\nconst runtimeNoopSystemFactory = (): BehaviorSystem => ({\n\tupdate(_ecs: unknown, _delta: number) {},\n});\n\nexport const RUNTIME_DYNAMIC_CIRCLE_BODY_2D_BEHAVIOR_KEY = Symbol.for('zylem:behavior:runtime-dynamic-circle-body-2d');\nexport const RUNTIME_PLAYER_INPUT_2D_BEHAVIOR_KEY = Symbol.for('zylem:behavior:runtime-player-input-2d');\nexport const RUNTIME_BOUNDARY_2D_BEHAVIOR_KEY = Symbol.for('zylem:behavior:runtime-boundary-2d');\nexport const RUNTIME_RICOCHET_2D_BEHAVIOR_KEY = Symbol.for('zylem:behavior:runtime-ricochet-2d');\nexport const RUNTIME_TRIGGER_REGION_2D_BEHAVIOR_KEY = Symbol.for('zylem:behavior:runtime-trigger-region-2d');\nexport const RUNTIME_GOAL_ZONE_2D_BEHAVIOR_KEY = Symbol.for('zylem:behavior:runtime-goal-zone-2d');\n\nconst RICOCHET_LISTENERS = Symbol('runtime-ricochet-listeners');\nconst TRIGGER_REGION_LISTENERS = Symbol('runtime-trigger-region-listeners');\nconst GOAL_LISTENERS = Symbol('runtime-goal-listeners');\nconst CIRCLE_BODY_SET_POSITION = Symbol('runtime-circle-body-set-position');\nconst CIRCLE_BODY_SET_VELOCITY = Symbol('runtime-circle-body-set-velocity');\nconst CIRCLE_BODY_GET_POSITION = Symbol('runtime-circle-body-get-position');\n\nfunction getListeners<E>(ref: BehaviorRef<any>, slot: symbol): Array<(event: E) => void> {\n\tlet listeners = (ref as any)[slot] as Array<(event: E) => void> | undefined;\n\tif (!listeners) {\n\t\tlisteners = [];\n\t\t(ref as any)[slot] = listeners;\n\t}\n\treturn listeners;\n}\n\nfunction addListener<E>(ref: BehaviorRef<any>, slot: symbol, callback: (event: E) => void): () => void {\n\tconst listeners = getListeners<E>(ref, slot);\n\tlisteners.push(callback);\n\treturn () => {\n\t\tconst index = listeners.indexOf(callback);\n\t\tif (index >= 0) {\n\t\t\tlisteners.splice(index, 1);\n\t\t}\n\t};\n}\n\nfunction emit<E>(ref: BehaviorRef<any>, slot: symbol, event: E): void {\n\tconst listeners = (ref as any)[slot] as Array<(event: E) => void> | undefined;\n\tif (!listeners) return;\n\tfor (const listener of listeners) {\n\t\tlistener(event);\n\t}\n}\n\nexport const RuntimeDynamicCircleBody2DBehavior = defineBehavior<\n\tRuntimeDynamicCircleBody2DOptions,\n\tRuntimeDynamicCircleBody2DHandle\n>({\n\tname: 'runtime-dynamic-circle-body-2d',\n\tdefaultOptions: {\n\t\tinitialVelocity: [0, 0] as [number, number],\n\t},\n\tsystemFactory: runtimeNoopSystemFactory,\n\tcreateHandle: (ref: BehaviorRef<RuntimeDynamicCircleBody2DOptions>) => ({\n\t\tsetRuntimePosition(x: number, y: number, z: number = 0): void {\n\t\t\tconst callback = (ref as any)[CIRCLE_BODY_SET_POSITION] as\n\t\t\t\t| ((x: number, y: number, z: number) => void)\n\t\t\t\t| undefined;\n\t\t\tcallback?.(x, y, z);\n\t\t},\n\t\tsetRuntimeVelocity(x: number, y: number): void {\n\t\t\tconst callback = (ref as any)[CIRCLE_BODY_SET_VELOCITY] as\n\t\t\t\t| ((x: number, y: number) => void)\n\t\t\t\t| undefined;\n\t\t\tcallback?.(x, y);\n\t\t},\n\t\tgetRuntimePosition(): { x: number; y: number; z: number } | null {\n\t\t\tconst callback = (ref as any)[CIRCLE_BODY_GET_POSITION] as\n\t\t\t\t| (() => { x: number; y: number; z: number } | null)\n\t\t\t\t| undefined;\n\t\t\treturn callback?.() ?? null;\n\t\t},\n\t}),\n});\n\nexport const RuntimePlayerInput2DBehavior = defineBehavior<RuntimePlayerInput2DOptions>({\n\tname: 'runtime-player-input-2d',\n\tdefaultOptions: {\n\t\tplayer: 'p1',\n\t\tspeed: 5,\n\t} as RuntimePlayerInput2DOptions,\n\tsystemFactory: runtimeNoopSystemFactory,\n});\n\nexport const RuntimeBoundary2DBehavior = defineBehavior({\n\tname: 'runtime-boundary-2d',\n\tdefaultOptions: {\n\t\tboundaries: {\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t\ttop: 0,\n\t\t},\n\t},\n\tsystemFactory: runtimeNoopSystemFactory,\n});\n\nexport const RuntimeRicochet2DBehavior = defineBehavior<\n\tRuntimeRicochet2DOptions,\n\tRuntimeRicochet2DHandle\n>({\n\tname: 'runtime-ricochet-2d',\n\tdefaultOptions: {\n\t\tminSpeed: 2,\n\t\tmaxSpeed: 20,\n\t\tspeedMultiplier: 1.05,\n\t\treflectionMode: 'angled' as const,\n\t\tmaxAngleDeg: 60,\n\t},\n\tsystemFactory: runtimeNoopSystemFactory,\n\tcreateHandle: (ref: BehaviorRef<RuntimeRicochet2DOptions>) => ({\n\t\tonRicochet: (callback: (event: RuntimeRicochet2DEvent) => void) =>\n\t\t\taddListener(ref, RICOCHET_LISTENERS, callback),\n\t}),\n});\n\nexport const RuntimeTriggerRegion2DBehavior = defineBehavior<\n\tRuntimeTriggerRegion2DOptions,\n\tRuntimeTriggerRegion2DHandle\n>({\n\tname: 'runtime-trigger-region-2d',\n\tdefaultOptions: {\n\t\ttriggerId: 0,\n\t\thalfExtents: [0.5, 2.5] as [number, number],\n\t},\n\tsystemFactory: runtimeNoopSystemFactory,\n\tcreateHandle: (ref: BehaviorRef<RuntimeTriggerRegion2DOptions>) => ({\n\t\tonRegionEnter: (callback: (event: RuntimeTriggerRegion2DEvent) => void) =>\n\t\t\taddListener(ref, TRIGGER_REGION_LISTENERS, callback),\n\t}),\n});\n\nexport const RuntimeGoalZone2DBehavior = defineBehavior<\n\tRuntimeGoalZone2DOptions,\n\tRuntimeGoalZone2DHandle\n>({\n\tname: 'runtime-goal-zone-2d',\n\tdefaultOptions: {\n\t\tscorer: 'p1',\n\t} as RuntimeGoalZone2DOptions,\n\tsystemFactory: runtimeNoopSystemFactory,\n\tcreateHandle: (ref: BehaviorRef<RuntimeGoalZone2DOptions>) => ({\n\t\tonGoal: (callback: (event: RuntimeGoalZone2DEvent) => void) =>\n\t\t\taddListener(ref, GOAL_LISTENERS, callback),\n\t}),\n});\n\nexport function emitRuntimeRicochet(\n\tref: BehaviorRef<RuntimeRicochet2DOptions>,\n\tevent: RuntimeRicochet2DEvent,\n): void {\n\temit(ref, RICOCHET_LISTENERS, event);\n}\n\nexport function emitRuntimeTriggerRegionEnter(\n\tref: BehaviorRef<RuntimeTriggerRegion2DOptions>,\n\tevent: RuntimeTriggerRegion2DEvent,\n): void {\n\temit(ref, TRIGGER_REGION_LISTENERS, event);\n}\n\nexport function emitRuntimeGoal(\n\tref: BehaviorRef<RuntimeGoalZone2DOptions>,\n\tevent: RuntimeGoalZone2DEvent,\n): void {\n\temit(ref, GOAL_LISTENERS, event);\n}\n\nexport function bindRuntimeDynamicCircleBody2DHandle(\n\tref: BehaviorRef<RuntimeDynamicCircleBody2DOptions>,\n\tcontrols: {\n\t\tsetPosition: (x: number, y: number, z: number) => void;\n\t\tsetVelocity: (x: number, y: number) => void;\n\t\tgetPosition: () => { x: number; y: number; z: number } | null;\n\t},\n): void {\n\t(ref as any)[CIRCLE_BODY_SET_POSITION] = controls.setPosition;\n\t(ref as any)[CIRCLE_BODY_SET_VELOCITY] = controls.setVelocity;\n\t(ref as any)[CIRCLE_BODY_GET_POSITION] = controls.getPosition;\n}\n"],"mappings":"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","names":[]}
@@ -1,4 +1,4 @@
1
- import { a as BehaviorDescriptor, G as GameEntity } from './behavior-system-HEt67el5.js';
1
+ import { a as BehaviorDescriptor, G as GameEntity } from './behavior-system-DkFAwLb_.js';
2
2
  import '@zylem/runtime';
3
3
 
4
4
  interface ScreenVisibilitySnapshot {
@@ -1,10 +1,11 @@
1
1
  import {
2
2
  ScreenVisibilityBehavior,
3
3
  ScreenVisibilityFSM
4
- } from "./chunk-ERS6SNA5.js";
5
- import "./chunk-YDLO5M7S.js";
6
- import "./chunk-JSBRDJBE.js";
4
+ } from "./chunk-WOMHL23C.js";
5
+ import "./chunk-EZNCCO4L.js";
6
+ import "./chunk-5WRI5ZAA.js";
7
7
  export {
8
8
  ScreenVisibilityBehavior,
9
9
  ScreenVisibilityFSM
10
10
  };
11
+ //# sourceMappingURL=screen-visibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,4 +1,4 @@
1
- import { a as BehaviorDescriptor } from './behavior-system-HEt67el5.js';
1
+ import { a as BehaviorDescriptor } from './behavior-system-DkFAwLb_.js';
2
2
  import { S as SyncStateMachine } from './sync-state-machine-CZyspBpj.js';
3
3
  import '@zylem/runtime';
4
4
  import 'typescript-fsm';
@@ -3,14 +3,15 @@ import {
3
3
  ScreenWrapEvent,
4
4
  ScreenWrapFSM,
5
5
  ScreenWrapState
6
- } from "./chunk-CVRN7YAI.js";
7
- import "./chunk-TZQQYJYK.js";
8
- import "./chunk-OBF6BIA2.js";
9
- import "./chunk-YDLO5M7S.js";
10
- import "./chunk-JSBRDJBE.js";
6
+ } from "./chunk-MUBU2DIB.js";
7
+ import "./chunk-OPZ2LVS2.js";
8
+ import "./chunk-AS3HR7AS.js";
9
+ import "./chunk-EZNCCO4L.js";
10
+ import "./chunk-5WRI5ZAA.js";
11
11
  export {
12
12
  ScreenWrapBehavior,
13
13
  ScreenWrapEvent,
14
14
  ScreenWrapFSM,
15
15
  ScreenWrapState
16
16
  };
17
+ //# sourceMappingURL=screen-wrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,4 +1,4 @@
1
- import { a as BehaviorDescriptor } from './behavior-system-HEt67el5.js';
1
+ import { a as BehaviorDescriptor } from './behavior-system-DkFAwLb_.js';
2
2
  import { i as Vec3Input } from './vector-DjhLUrak.js';
3
3
  import '@zylem/runtime';
4
4
  import 'three';
@@ -1,12 +1,13 @@
1
1
  import {
2
2
  Shooter2DBehavior,
3
3
  createShooter2DStateComponent
4
- } from "./chunk-7TIIRJKF.js";
5
- import "./chunk-3X3CL24Z.js";
6
- import "./chunk-LWM346FW.js";
7
- import "./chunk-YDLO5M7S.js";
8
- import "./chunk-JSBRDJBE.js";
4
+ } from "./chunk-PLIXVF7B.js";
5
+ import "./chunk-SGHIGTVZ.js";
6
+ import "./chunk-M3QDKKDF.js";
7
+ import "./chunk-EZNCCO4L.js";
8
+ import "./chunk-5WRI5ZAA.js";
9
9
  export {
10
10
  Shooter2DBehavior,
11
11
  createShooter2DStateComponent
12
12
  };
13
+ //# sourceMappingURL=shooter-2d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,7 +1,7 @@
1
1
  import { T as ThrusterInputComponent, a as ThrusterMovementComponent } from './components-B29WHGQN.js';
2
2
  export { b as ThrusterStateComponent, c as createThrusterInputComponent, d as createThrusterMovementComponent, e as createThrusterStateComponent } from './components-B29WHGQN.js';
3
3
  import { S as SyncStateMachine } from './sync-state-machine-CZyspBpj.js';
4
- import { a as BehaviorDescriptor } from './behavior-system-HEt67el5.js';
4
+ import { a as BehaviorDescriptor } from './behavior-system-DkFAwLb_.js';
5
5
  import 'typescript-fsm';
6
6
  import '@zylem/runtime';
7
7
 
package/dist/thruster.js CHANGED
@@ -3,15 +3,15 @@ import {
3
3
  ThrusterEvent,
4
4
  ThrusterFSM,
5
5
  ThrusterState
6
- } from "./chunk-E2MOFIDH.js";
6
+ } from "./chunk-BAXJ7XHJ.js";
7
7
  import {
8
8
  createThrusterInputComponent,
9
9
  createThrusterMovementComponent,
10
10
  createThrusterStateComponent
11
- } from "./chunk-2HLZBWGD.js";
12
- import "./chunk-OBF6BIA2.js";
13
- import "./chunk-YDLO5M7S.js";
14
- import "./chunk-JSBRDJBE.js";
11
+ } from "./chunk-IZJFUAXB.js";
12
+ import "./chunk-AS3HR7AS.js";
13
+ import "./chunk-EZNCCO4L.js";
14
+ import "./chunk-5WRI5ZAA.js";
15
15
  export {
16
16
  ThrusterBehavior,
17
17
  ThrusterEvent,
@@ -21,3 +21,4 @@ export {
21
21
  createThrusterMovementComponent,
22
22
  createThrusterStateComponent
23
23
  };
24
+ //# sourceMappingURL=thruster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,6 +1,6 @@
1
1
  import { T as TopDownMovementComponent, a as TopDownMovementInputComponent, b as TopDownMovementStateComponent } from './components-XCpL6IYt.js';
2
2
  export { c as createTopDownMovementComponent, d as createTopDownMovementInputComponent, e as createTopDownMovementStateComponent } from './components-XCpL6IYt.js';
3
- import { a as BehaviorDescriptor } from './behavior-system-HEt67el5.js';
3
+ import { a as BehaviorDescriptor } from './behavior-system-DkFAwLb_.js';
4
4
  import '@zylem/runtime';
5
5
 
6
6
  /**
@@ -1,19 +1,20 @@
1
1
  import {
2
2
  TopDownMovementBehavior
3
- } from "./chunk-7LHXAEOZ.js";
3
+ } from "./chunk-3QUECYMT.js";
4
4
  import {
5
5
  createTopDownMovementComponent,
6
6
  createTopDownMovementInputComponent,
7
7
  createTopDownMovementStateComponent
8
- } from "./chunk-2HKY6WF7.js";
9
- import "./chunk-VJ3UA6OD.js";
10
- import "./chunk-3X3CL24Z.js";
11
- import "./chunk-GZ3DQIIZ.js";
12
- import "./chunk-YDLO5M7S.js";
13
- import "./chunk-JSBRDJBE.js";
8
+ } from "./chunk-EIWQM6U3.js";
9
+ import "./chunk-TBUKJKY6.js";
10
+ import "./chunk-SGHIGTVZ.js";
11
+ import "./chunk-4GW6DCYF.js";
12
+ import "./chunk-EZNCCO4L.js";
13
+ import "./chunk-5WRI5ZAA.js";
14
14
  export {
15
15
  TopDownMovementBehavior,
16
16
  createTopDownMovementComponent,
17
17
  createTopDownMovementInputComponent,
18
18
  createTopDownMovementStateComponent
19
19
  };
20
+ //# sourceMappingURL=top-down-movement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,4 +1,4 @@
1
- import { a as BehaviorDescriptor } from './behavior-system-HEt67el5.js';
1
+ import { a as BehaviorDescriptor } from './behavior-system-DkFAwLb_.js';
2
2
  import { S as SyncStateMachine } from './sync-state-machine-CZyspBpj.js';
3
3
  import '@zylem/runtime';
4
4
  import 'typescript-fsm';
@@ -5,12 +5,12 @@ import {
5
5
  WorldBoundary2DState,
6
6
  computeWorldBoundary2DHits,
7
7
  hasAnyWorldBoundary2DHit
8
- } from "./chunk-M25QJBDN.js";
9
- import "./chunk-TZQQYJYK.js";
10
- import "./chunk-OBF6BIA2.js";
11
- import "./chunk-GZ3DQIIZ.js";
12
- import "./chunk-YDLO5M7S.js";
13
- import "./chunk-JSBRDJBE.js";
8
+ } from "./chunk-JACX7ZMJ.js";
9
+ import "./chunk-OPZ2LVS2.js";
10
+ import "./chunk-AS3HR7AS.js";
11
+ import "./chunk-4GW6DCYF.js";
12
+ import "./chunk-EZNCCO4L.js";
13
+ import "./chunk-5WRI5ZAA.js";
14
14
  export {
15
15
  WorldBoundary2DBehavior,
16
16
  WorldBoundary2DEvent,
@@ -19,3 +19,4 @@ export {
19
19
  computeWorldBoundary2DHits,
20
20
  hasAnyWorldBoundary2DHit
21
21
  };
22
+ //# sourceMappingURL=world-boundary-2d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,4 +1,4 @@
1
- import { a as BehaviorDescriptor } from './behavior-system-HEt67el5.js';
1
+ import { a as BehaviorDescriptor } from './behavior-system-DkFAwLb_.js';
2
2
  import { S as SyncStateMachine } from './sync-state-machine-CZyspBpj.js';
3
3
  import '@zylem/runtime';
4
4
  import 'typescript-fsm';
@@ -5,12 +5,12 @@ import {
5
5
  WorldBoundary3DState,
6
6
  computeWorldBoundary3DHits,
7
7
  hasAnyWorldBoundary3DHit
8
- } from "./chunk-LLDLVVG4.js";
9
- import "./chunk-WHKPWIQO.js";
10
- import "./chunk-OBF6BIA2.js";
11
- import "./chunk-GZ3DQIIZ.js";
12
- import "./chunk-YDLO5M7S.js";
13
- import "./chunk-JSBRDJBE.js";
8
+ } from "./chunk-GL5JGXPR.js";
9
+ import "./chunk-OHCPV2NT.js";
10
+ import "./chunk-AS3HR7AS.js";
11
+ import "./chunk-4GW6DCYF.js";
12
+ import "./chunk-EZNCCO4L.js";
13
+ import "./chunk-5WRI5ZAA.js";
14
14
  export {
15
15
  WorldBoundary3DBehavior,
16
16
  WorldBoundary3DEvent,
@@ -19,3 +19,4 @@ export {
19
19
  computeWorldBoundary3DHits,
20
20
  hasAnyWorldBoundary3DHit
21
21
  };
22
+ //# sourceMappingURL=world-boundary-3d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/package.json CHANGED
@@ -1,160 +1,161 @@
1
1
  {
2
- "name": "@zylem/behaviors",
3
- "version": "0.5.7",
4
- "type": "module",
5
- "description": "Tree-shakable Zylem behavior descriptors, systems, coordinators, and runtime-agnostic behavior helpers.",
6
- "license": "MIT",
7
- "repository": {
8
- "type": "git",
9
- "url": "git+ssh://git@github.com/zylem-game-lib/behaviors.git"
10
- },
11
- "engines": {
12
- "node": ">=22.12.0",
13
- "pnpm": ">=10.32.1"
14
- },
15
- "sideEffects": false,
16
- "files": [
17
- "dist"
18
- ],
19
- "exports": {
20
- ".": {
21
- "types": "./dist/index.d.ts",
22
- "import": "./dist/index.js"
23
- },
24
- "./core": {
25
- "types": "./dist/core.d.ts",
26
- "import": "./dist/core.js"
27
- },
28
- "./destructible-prebake": {
29
- "types": "./dist/destructible-prebake.d.ts",
30
- "import": "./dist/destructible-prebake.js"
31
- },
32
- "./cooldown": {
33
- "types": "./dist/cooldown.d.ts",
34
- "import": "./dist/cooldown.js"
35
- },
36
- "./destructible-3d": {
37
- "types": "./dist/destructible-3d.d.ts",
38
- "import": "./dist/destructible-3d.js"
39
- },
40
- "./first-person": {
41
- "types": "./dist/first-person.d.ts",
42
- "import": "./dist/first-person.js"
43
- },
44
- "./jumper-2d": {
45
- "types": "./dist/jumper-2d.d.ts",
46
- "import": "./dist/jumper-2d.js"
47
- },
48
- "./jumper-3d": {
49
- "types": "./dist/jumper-3d.d.ts",
50
- "import": "./dist/jumper-3d.js"
51
- },
52
- "./particle-emitter": {
53
- "types": "./dist/particle-emitter.d.ts",
54
- "import": "./dist/particle-emitter.js"
55
- },
56
- "./particle-emitter/presets": {
57
- "types": "./dist/particle-emitter/presets.d.ts",
58
- "import": "./dist/particle-emitter/presets.js"
59
- },
60
- "./platformer-2d": {
61
- "types": "./dist/platformer-2d.d.ts",
62
- "import": "./dist/platformer-2d.js"
63
- },
64
- "./platformer-3d": {
65
- "types": "./dist/platformer-3d.d.ts",
66
- "import": "./dist/platformer-3d.js"
67
- },
68
- "./ricochet-2d": {
69
- "types": "./dist/ricochet-2d.d.ts",
70
- "import": "./dist/ricochet-2d.js"
71
- },
72
- "./ricochet-3d": {
73
- "types": "./dist/ricochet-3d.d.ts",
74
- "import": "./dist/ricochet-3d.js"
75
- },
76
- "./runtime-2d": {
77
- "types": "./dist/runtime-2d.d.ts",
78
- "import": "./dist/runtime-2d.js"
79
- },
80
- "./screen-visibility": {
81
- "types": "./dist/screen-visibility.d.ts",
82
- "import": "./dist/screen-visibility.js"
83
- },
84
- "./screen-wrap": {
85
- "types": "./dist/screen-wrap.d.ts",
86
- "import": "./dist/screen-wrap.js"
87
- },
88
- "./shooter-2d": {
89
- "types": "./dist/shooter-2d.d.ts",
90
- "import": "./dist/shooter-2d.js"
91
- },
92
- "./thruster": {
93
- "types": "./dist/thruster.d.ts",
94
- "import": "./dist/thruster.js"
95
- },
96
- "./top-down-movement": {
97
- "types": "./dist/top-down-movement.d.ts",
98
- "import": "./dist/top-down-movement.js"
99
- },
100
- "./world-boundary-2d": {
101
- "types": "./dist/world-boundary-2d.d.ts",
102
- "import": "./dist/world-boundary-2d.js"
103
- },
104
- "./world-boundary-3d": {
105
- "types": "./dist/world-boundary-3d.d.ts",
106
- "import": "./dist/world-boundary-3d.js"
107
- },
108
- "./coordinators/boundary-ricochet": {
109
- "types": "./dist/coordinators/boundary-ricochet.d.ts",
110
- "import": "./dist/coordinators/boundary-ricochet.js"
111
- },
112
- "./coordinators/boundary-ricochet-3d": {
113
- "types": "./dist/coordinators/boundary-ricochet-3d.d.ts",
114
- "import": "./dist/coordinators/boundary-ricochet-3d.js"
115
- },
116
- "./coordinators/first-person-shooter": {
117
- "types": "./dist/coordinators/first-person-shooter.d.ts",
118
- "import": "./dist/coordinators/first-person-shooter.js"
119
- },
120
- "./coordinators/multidirectional-space-shooter": {
121
- "types": "./dist/coordinators/multidirectional-space-shooter.d.ts",
122
- "import": "./dist/coordinators/multidirectional-space-shooter.js"
123
- },
124
- "./coordinators/top-down-shooter": {
125
- "types": "./dist/coordinators/top-down-shooter.d.ts",
126
- "import": "./dist/coordinators/top-down-shooter.js"
127
- },
128
- "./package.json": "./package.json"
129
- },
130
- "dependencies": {
131
- "@dgreenheck/three-pinata": "^2.0.1",
132
- "@zylem/runtime": "link:../runtime",
133
- "comlink": "^4.4.2",
134
- "typescript-fsm": "^1.6.0",
135
- "valtio": "^2.1.7"
136
- },
137
- "peerDependencies": {
138
- "three": "^0.185.0"
139
- },
140
- "devDependencies": {
141
- "@clack/prompts": "^1.6.0",
142
- "@types/node": "^20.19.13",
143
- "@types/three": "^0.185.0",
144
- "happy-dom": "^18.0.1",
145
- "tsup": "^8.5.1",
146
- "typescript": "5.8.2",
147
- "vitest": "^4.0.9"
148
- },
149
- "publishConfig": {
150
- "access": "public",
151
- "registry": "https://registry.npmjs.org/"
152
- },
153
- "scripts": {
154
- "zylem": "node --experimental-strip-types ./scripts/zylem-runner.ts",
155
- "build": "tsup",
156
- "dev": "tsup --watch",
157
- "typecheck": "tsc --noEmit",
158
- "test": "vitest --reporter=verbose"
159
- }
160
- }
2
+ "name": "@zylem/behaviors",
3
+ "version": "0.5.11",
4
+ "type": "module",
5
+ "description": "Tree-shakable Zylem behavior descriptors, systems, coordinators, and runtime-agnostic behavior helpers.",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+ssh://git@github.com/zylem-game-lib/behaviors.git"
10
+ },
11
+ "engines": {
12
+ "node": ">=22.12.0",
13
+ "pnpm": ">=10.32.1"
14
+ },
15
+ "sideEffects": false,
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "exports": {
20
+ ".": {
21
+ "types": "./dist/index.d.ts",
22
+ "import": "./dist/index.js"
23
+ },
24
+ "./core": {
25
+ "types": "./dist/core.d.ts",
26
+ "import": "./dist/core.js"
27
+ },
28
+ "./destructible-prebake": {
29
+ "types": "./dist/destructible-prebake.d.ts",
30
+ "import": "./dist/destructible-prebake.js"
31
+ },
32
+ "./cooldown": {
33
+ "types": "./dist/cooldown.d.ts",
34
+ "import": "./dist/cooldown.js"
35
+ },
36
+ "./destructible-3d": {
37
+ "types": "./dist/destructible-3d.d.ts",
38
+ "import": "./dist/destructible-3d.js"
39
+ },
40
+ "./first-person": {
41
+ "types": "./dist/first-person.d.ts",
42
+ "import": "./dist/first-person.js"
43
+ },
44
+ "./jumper-2d": {
45
+ "types": "./dist/jumper-2d.d.ts",
46
+ "import": "./dist/jumper-2d.js"
47
+ },
48
+ "./jumper-3d": {
49
+ "types": "./dist/jumper-3d.d.ts",
50
+ "import": "./dist/jumper-3d.js"
51
+ },
52
+ "./particle-emitter": {
53
+ "types": "./dist/particle-emitter.d.ts",
54
+ "import": "./dist/particle-emitter.js"
55
+ },
56
+ "./particle-emitter/presets": {
57
+ "types": "./dist/particle-emitter/presets.d.ts",
58
+ "import": "./dist/particle-emitter/presets.js"
59
+ },
60
+ "./platformer-2d": {
61
+ "types": "./dist/platformer-2d.d.ts",
62
+ "import": "./dist/platformer-2d.js"
63
+ },
64
+ "./platformer-3d": {
65
+ "types": "./dist/platformer-3d.d.ts",
66
+ "import": "./dist/platformer-3d.js"
67
+ },
68
+ "./ricochet-2d": {
69
+ "types": "./dist/ricochet-2d.d.ts",
70
+ "import": "./dist/ricochet-2d.js"
71
+ },
72
+ "./ricochet-3d": {
73
+ "types": "./dist/ricochet-3d.d.ts",
74
+ "import": "./dist/ricochet-3d.js"
75
+ },
76
+ "./runtime-2d": {
77
+ "types": "./dist/runtime-2d.d.ts",
78
+ "import": "./dist/runtime-2d.js"
79
+ },
80
+ "./screen-visibility": {
81
+ "types": "./dist/screen-visibility.d.ts",
82
+ "import": "./dist/screen-visibility.js"
83
+ },
84
+ "./screen-wrap": {
85
+ "types": "./dist/screen-wrap.d.ts",
86
+ "import": "./dist/screen-wrap.js"
87
+ },
88
+ "./shooter-2d": {
89
+ "types": "./dist/shooter-2d.d.ts",
90
+ "import": "./dist/shooter-2d.js"
91
+ },
92
+ "./thruster": {
93
+ "types": "./dist/thruster.d.ts",
94
+ "import": "./dist/thruster.js"
95
+ },
96
+ "./top-down-movement": {
97
+ "types": "./dist/top-down-movement.d.ts",
98
+ "import": "./dist/top-down-movement.js"
99
+ },
100
+ "./world-boundary-2d": {
101
+ "types": "./dist/world-boundary-2d.d.ts",
102
+ "import": "./dist/world-boundary-2d.js"
103
+ },
104
+ "./world-boundary-3d": {
105
+ "types": "./dist/world-boundary-3d.d.ts",
106
+ "import": "./dist/world-boundary-3d.js"
107
+ },
108
+ "./coordinators/boundary-ricochet": {
109
+ "types": "./dist/coordinators/boundary-ricochet.d.ts",
110
+ "import": "./dist/coordinators/boundary-ricochet.js"
111
+ },
112
+ "./coordinators/boundary-ricochet-3d": {
113
+ "types": "./dist/coordinators/boundary-ricochet-3d.d.ts",
114
+ "import": "./dist/coordinators/boundary-ricochet-3d.js"
115
+ },
116
+ "./coordinators/first-person-shooter": {
117
+ "types": "./dist/coordinators/first-person-shooter.d.ts",
118
+ "import": "./dist/coordinators/first-person-shooter.js"
119
+ },
120
+ "./coordinators/multidirectional-space-shooter": {
121
+ "types": "./dist/coordinators/multidirectional-space-shooter.d.ts",
122
+ "import": "./dist/coordinators/multidirectional-space-shooter.js"
123
+ },
124
+ "./coordinators/top-down-shooter": {
125
+ "types": "./dist/coordinators/top-down-shooter.d.ts",
126
+ "import": "./dist/coordinators/top-down-shooter.js"
127
+ },
128
+ "./package.json": "./package.json"
129
+ },
130
+ "scripts": {
131
+ "build": "tsup",
132
+ "dev": "tsup --watch",
133
+ "typecheck": "tsc --noEmit",
134
+ "test": "vitest --reporter=verbose",
135
+ "prepublishOnly": "pnpm run build && vitest run"
136
+ },
137
+ "dependencies": {
138
+ "@dgreenheck/three-pinata": "^2.0.1",
139
+ "@zylem/runtime": "link:../runtime",
140
+ "comlink": "^4.4.2",
141
+ "typescript-fsm": "^1.6.0",
142
+ "valtio": "^2.1.7"
143
+ },
144
+ "peerDependencies": {
145
+ "three": "^0.185.0"
146
+ },
147
+ "devDependencies": {
148
+ "@clack/prompts": "^1.6.0",
149
+ "@types/node": "^20.19.13",
150
+ "@types/three": "^0.185.0",
151
+ "happy-dom": "^18.0.1",
152
+ "tsup": "^8.5.1",
153
+ "typescript": "5.8.2",
154
+ "vitest": "^4.0.9"
155
+ },
156
+ "packageManager": "pnpm@10.33.0",
157
+ "publishConfig": {
158
+ "access": "public",
159
+ "registry": "https://registry.npmjs.org/"
160
+ }
161
+ }