fraxel 0.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animation/easing.d.ts +29 -0
- package/dist/animation/easing.d.ts.map +1 -0
- package/dist/animation/easing.js +50 -0
- package/dist/animation/easing.js.map +1 -0
- package/dist/animation/index.d.ts +7 -0
- package/dist/animation/index.d.ts.map +1 -0
- package/dist/animation/index.js +7 -0
- package/dist/animation/index.js.map +1 -0
- package/dist/animation/multiple.d.ts +26 -0
- package/dist/animation/multiple.d.ts.map +1 -0
- package/dist/animation/multiple.js +27 -0
- package/dist/animation/multiple.js.map +1 -0
- package/dist/animation/properties.d.ts +30 -0
- package/dist/animation/properties.d.ts.map +1 -0
- package/dist/animation/properties.js +32 -0
- package/dist/animation/properties.js.map +1 -0
- package/dist/animation/sequences.d.ts +30 -0
- package/dist/animation/sequences.d.ts.map +1 -0
- package/dist/animation/sequences.js +50 -0
- package/dist/animation/sequences.js.map +1 -0
- package/dist/animation/sprite-sheet.d.ts +81 -0
- package/dist/animation/sprite-sheet.d.ts.map +1 -0
- package/dist/animation/sprite-sheet.js +103 -0
- package/dist/animation/sprite-sheet.js.map +1 -0
- package/dist/animation/tween.d.ts +78 -0
- package/dist/animation/tween.d.ts.map +1 -0
- package/dist/animation/tween.js +103 -0
- package/dist/animation/tween.js.map +1 -0
- package/dist/assets/index.d.ts +6 -0
- package/dist/assets/index.d.ts.map +1 -0
- package/dist/assets/index.js +5 -0
- package/dist/assets/index.js.map +1 -0
- package/dist/assets/load-sound.d.ts +17 -0
- package/dist/assets/load-sound.d.ts.map +1 -0
- package/dist/assets/load-sound.js +35 -0
- package/dist/assets/load-sound.js.map +1 -0
- package/dist/assets/load-texture.d.ts +12 -0
- package/dist/assets/load-texture.d.ts.map +1 -0
- package/dist/assets/load-texture.js +40 -0
- package/dist/assets/load-texture.js.map +1 -0
- package/dist/assets/loader.d.ts +59 -0
- package/dist/assets/loader.d.ts.map +1 -0
- package/dist/assets/loader.js +65 -0
- package/dist/assets/loader.js.map +1 -0
- package/dist/assets/texture.d.ts +36 -0
- package/dist/assets/texture.d.ts.map +1 -0
- package/dist/assets/texture.js +49 -0
- package/dist/assets/texture.js.map +1 -0
- package/dist/audio/audio-context.d.ts +14 -0
- package/dist/audio/audio-context.d.ts.map +1 -0
- package/dist/audio/audio-context.js +20 -0
- package/dist/audio/audio-context.js.map +1 -0
- package/dist/audio/index.d.ts +2 -0
- package/dist/audio/index.d.ts.map +1 -0
- package/dist/audio/index.js +2 -0
- package/dist/audio/index.js.map +1 -0
- package/dist/collision/broadphase/spatial-hash.d.ts +32 -0
- package/dist/collision/broadphase/spatial-hash.d.ts.map +1 -0
- package/dist/collision/broadphase/spatial-hash.js +87 -0
- package/dist/collision/broadphase/spatial-hash.js.map +1 -0
- package/dist/collision/collision-system.d.ts +52 -0
- package/dist/collision/collision-system.d.ts.map +1 -0
- package/dist/collision/collision-system.js +278 -0
- package/dist/collision/collision-system.js.map +1 -0
- package/dist/collision/events/collision-emitter.d.ts +38 -0
- package/dist/collision/events/collision-emitter.d.ts.map +1 -0
- package/dist/collision/events/collision-emitter.js +47 -0
- package/dist/collision/events/collision-emitter.js.map +1 -0
- package/dist/collision/index.d.ts +13 -0
- package/dist/collision/index.d.ts.map +1 -0
- package/dist/collision/index.js +11 -0
- package/dist/collision/index.js.map +1 -0
- package/dist/collision/narrowphase/detector.d.ts +26 -0
- package/dist/collision/narrowphase/detector.d.ts.map +1 -0
- package/dist/collision/narrowphase/detector.js +70 -0
- package/dist/collision/narrowphase/detector.js.map +1 -0
- package/dist/collision/narrowphase/shapes.d.ts +91 -0
- package/dist/collision/narrowphase/shapes.d.ts.map +1 -0
- package/dist/collision/narrowphase/shapes.js +52 -0
- package/dist/collision/narrowphase/shapes.js.map +1 -0
- package/dist/collision/physics/physics-body.d.ts +38 -0
- package/dist/collision/physics/physics-body.d.ts.map +1 -0
- package/dist/collision/physics/physics-body.js +53 -0
- package/dist/collision/physics/physics-body.js.map +1 -0
- package/dist/collision/physics/physics-system.d.ts +23 -0
- package/dist/collision/physics/physics-system.d.ts.map +1 -0
- package/dist/collision/physics/physics-system.js +86 -0
- package/dist/collision/physics/physics-system.js.map +1 -0
- package/dist/collision/physics/resolver.d.ts +16 -0
- package/dist/collision/physics/resolver.d.ts.map +1 -0
- package/dist/collision/physics/resolver.js +91 -0
- package/dist/collision/physics/resolver.js.map +1 -0
- package/dist/collision/types.d.ts +22 -0
- package/dist/collision/types.d.ts.map +1 -0
- package/dist/collision/types.js +2 -0
- package/dist/collision/types.js.map +1 -0
- package/dist/core/game-config.d.ts +34 -0
- package/dist/core/game-config.d.ts.map +1 -0
- package/dist/core/game-config.js +31 -0
- package/dist/core/game-config.js.map +1 -0
- package/dist/core/game.d.ts +86 -0
- package/dist/core/game.d.ts.map +1 -0
- package/dist/core/game.js +166 -0
- package/dist/core/game.js.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/scene-manager.d.ts +28 -0
- package/dist/core/scene-manager.d.ts.map +1 -0
- package/dist/core/scene-manager.js +65 -0
- package/dist/core/scene-manager.js.map +1 -0
- package/dist/core/scene.d.ts +43 -0
- package/dist/core/scene.d.ts.map +1 -0
- package/dist/core/scene.js +48 -0
- package/dist/core/scene.js.map +1 -0
- package/dist/core/theme.d.ts +63 -0
- package/dist/core/theme.d.ts.map +1 -0
- package/dist/core/theme.js +59 -0
- package/dist/core/theme.js.map +1 -0
- package/dist/errors/animation.d.ts +24 -0
- package/dist/errors/animation.d.ts.map +1 -0
- package/dist/errors/animation.js +29 -0
- package/dist/errors/animation.js.map +1 -0
- package/dist/errors/assets.d.ts +34 -0
- package/dist/errors/assets.d.ts.map +1 -0
- package/dist/errors/assets.js +41 -0
- package/dist/errors/assets.js.map +1 -0
- package/dist/errors/base.d.ts +12 -0
- package/dist/errors/base.d.ts.map +1 -0
- package/dist/errors/base.js +15 -0
- package/dist/errors/base.js.map +1 -0
- package/dist/errors/env.d.ts +24 -0
- package/dist/errors/env.d.ts.map +1 -0
- package/dist/errors/env.js +29 -0
- package/dist/errors/env.js.map +1 -0
- package/dist/errors/hook.d.ts +46 -0
- package/dist/errors/hook.d.ts.map +1 -0
- package/dist/errors/hook.js +55 -0
- package/dist/errors/hook.js.map +1 -0
- package/dist/errors/index.d.ts +11 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +11 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/jsx.d.ts +26 -0
- package/dist/errors/jsx.d.ts.map +1 -0
- package/dist/errors/jsx.js +45 -0
- package/dist/errors/jsx.js.map +1 -0
- package/dist/errors/lifecycle.d.ts +35 -0
- package/dist/errors/lifecycle.d.ts.map +1 -0
- package/dist/errors/lifecycle.js +42 -0
- package/dist/errors/lifecycle.js.map +1 -0
- package/dist/errors/math.d.ts +24 -0
- package/dist/errors/math.d.ts.map +1 -0
- package/dist/errors/math.js +34 -0
- package/dist/errors/math.js.map +1 -0
- package/dist/errors/node.d.ts +68 -0
- package/dist/errors/node.d.ts.map +1 -0
- package/dist/errors/node.js +87 -0
- package/dist/errors/node.js.map +1 -0
- package/dist/errors/scene.d.ts +35 -0
- package/dist/errors/scene.d.ts.map +1 -0
- package/dist/errors/scene.js +42 -0
- package/dist/errors/scene.js.map +1 -0
- package/dist/events/event.d.ts +106 -0
- package/dist/events/event.d.ts.map +1 -0
- package/dist/events/event.js +125 -0
- package/dist/events/event.js.map +1 -0
- package/dist/events/index.d.ts +2 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +2 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/types.d.ts +20 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +2 -0
- package/dist/events/types.js.map +1 -0
- package/dist/hooks/context.d.ts +15 -0
- package/dist/hooks/context.d.ts.map +1 -0
- package/dist/hooks/context.js +26 -0
- package/dist/hooks/context.js.map +1 -0
- package/dist/hooks/deriveds/by-nodes/index.d.ts +7 -0
- package/dist/hooks/deriveds/by-nodes/index.d.ts.map +1 -0
- package/dist/hooks/deriveds/by-nodes/index.js +7 -0
- package/dist/hooks/deriveds/by-nodes/index.js.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-animation.d.ts +44 -0
- package/dist/hooks/deriveds/by-nodes/use-animation.d.ts.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-animation.js +61 -0
- package/dist/hooks/deriveds/by-nodes/use-animation.js.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-audio.d.ts +33 -0
- package/dist/hooks/deriveds/by-nodes/use-audio.d.ts.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-audio.js +43 -0
- package/dist/hooks/deriveds/by-nodes/use-audio.js.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-clickable.d.ts +32 -0
- package/dist/hooks/deriveds/by-nodes/use-clickable.d.ts.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-clickable.js +43 -0
- package/dist/hooks/deriveds/by-nodes/use-clickable.js.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-collider.d.ts +35 -0
- package/dist/hooks/deriveds/by-nodes/use-collider.d.ts.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-collider.js +55 -0
- package/dist/hooks/deriveds/by-nodes/use-collider.js.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-ray-cast.d.ts +35 -0
- package/dist/hooks/deriveds/by-nodes/use-ray-cast.d.ts.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-ray-cast.js +47 -0
- package/dist/hooks/deriveds/by-nodes/use-ray-cast.js.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-timer.d.ts +34 -0
- package/dist/hooks/deriveds/by-nodes/use-timer.d.ts.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-timer.js +48 -0
- package/dist/hooks/deriveds/by-nodes/use-timer.js.map +1 -0
- package/dist/hooks/deriveds/index.d.ts +5 -0
- package/dist/hooks/deriveds/index.d.ts.map +1 -0
- package/dist/hooks/deriveds/index.js +5 -0
- package/dist/hooks/deriveds/index.js.map +1 -0
- package/dist/hooks/deriveds/use-condition.d.ts +37 -0
- package/dist/hooks/deriveds/use-condition.d.ts.map +1 -0
- package/dist/hooks/deriveds/use-condition.js +47 -0
- package/dist/hooks/deriveds/use-condition.js.map +1 -0
- package/dist/hooks/deriveds/use-match.d.ts +26 -0
- package/dist/hooks/deriveds/use-match.d.ts.map +1 -0
- package/dist/hooks/deriveds/use-match.js +38 -0
- package/dist/hooks/deriveds/use-match.js.map +1 -0
- package/dist/hooks/deriveds/use-partial-node.d.ts +22 -0
- package/dist/hooks/deriveds/use-partial-node.d.ts.map +1 -0
- package/dist/hooks/deriveds/use-partial-node.js +25 -0
- package/dist/hooks/deriveds/use-partial-node.js.map +1 -0
- package/dist/hooks/deriveds/use-when.d.ts +28 -0
- package/dist/hooks/deriveds/use-when.d.ts.map +1 -0
- package/dist/hooks/deriveds/use-when.js +35 -0
- package/dist/hooks/deriveds/use-when.js.map +1 -0
- package/dist/hooks/index.d.ts +16 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +16 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/use-child.d.ts +24 -0
- package/dist/hooks/use-child.d.ts.map +1 -0
- package/dist/hooks/use-child.js +37 -0
- package/dist/hooks/use-child.js.map +1 -0
- package/dist/hooks/use-computed.d.ts +28 -0
- package/dist/hooks/use-computed.d.ts.map +1 -0
- package/dist/hooks/use-computed.js +41 -0
- package/dist/hooks/use-computed.js.map +1 -0
- package/dist/hooks/use-context.d.ts +58 -0
- package/dist/hooks/use-context.d.ts.map +1 -0
- package/dist/hooks/use-context.js +77 -0
- package/dist/hooks/use-context.js.map +1 -0
- package/dist/hooks/use-effect.d.ts +24 -0
- package/dist/hooks/use-effect.d.ts.map +1 -0
- package/dist/hooks/use-effect.js +63 -0
- package/dist/hooks/use-effect.js.map +1 -0
- package/dist/hooks/use-event.d.ts +29 -0
- package/dist/hooks/use-event.d.ts.map +1 -0
- package/dist/hooks/use-event.js +30 -0
- package/dist/hooks/use-event.js.map +1 -0
- package/dist/hooks/use-game.d.ts +17 -0
- package/dist/hooks/use-game.d.ts.map +1 -0
- package/dist/hooks/use-game.js +35 -0
- package/dist/hooks/use-game.js.map +1 -0
- package/dist/hooks/use-mount.d.ts +21 -0
- package/dist/hooks/use-mount.d.ts.map +1 -0
- package/dist/hooks/use-mount.js +33 -0
- package/dist/hooks/use-mount.js.map +1 -0
- package/dist/hooks/use-node.d.ts +42 -0
- package/dist/hooks/use-node.d.ts.map +1 -0
- package/dist/hooks/use-node.js +63 -0
- package/dist/hooks/use-node.js.map +1 -0
- package/dist/hooks/use-ref.d.ts +27 -0
- package/dist/hooks/use-ref.d.ts.map +1 -0
- package/dist/hooks/use-ref.js +33 -0
- package/dist/hooks/use-ref.js.map +1 -0
- package/dist/hooks/use-script.d.ts +33 -0
- package/dist/hooks/use-script.d.ts.map +1 -0
- package/dist/hooks/use-script.js +40 -0
- package/dist/hooks/use-script.js.map +1 -0
- package/dist/hooks/use-signal.d.ts +25 -0
- package/dist/hooks/use-signal.d.ts.map +1 -0
- package/dist/hooks/use-signal.js +36 -0
- package/dist/hooks/use-signal.js.map +1 -0
- package/dist/hooks/use-spawn.d.ts +27 -0
- package/dist/hooks/use-spawn.d.ts.map +1 -0
- package/dist/hooks/use-spawn.js +39 -0
- package/dist/hooks/use-spawn.js.map +1 -0
- package/dist/hooks/use-trigger.d.ts +51 -0
- package/dist/hooks/use-trigger.d.ts.map +1 -0
- package/dist/hooks/use-trigger.js +68 -0
- package/dist/hooks/use-trigger.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/input/input.d.ts +46 -0
- package/dist/input/input.d.ts.map +1 -0
- package/dist/input/input.js +159 -0
- package/dist/input/input.js.map +1 -0
- package/dist/jsx/components/fragment.d.ts +3 -0
- package/dist/jsx/components/fragment.d.ts.map +1 -0
- package/dist/jsx/components/fragment.js +7 -0
- package/dist/jsx/components/fragment.js.map +1 -0
- package/dist/jsx/components/game.d.ts +21 -0
- package/dist/jsx/components/game.d.ts.map +1 -0
- package/dist/jsx/components/game.js +17 -0
- package/dist/jsx/components/game.js.map +1 -0
- package/dist/jsx/components/index.d.ts +5 -0
- package/dist/jsx/components/index.d.ts.map +1 -0
- package/dist/jsx/components/index.js +5 -0
- package/dist/jsx/components/index.js.map +1 -0
- package/dist/jsx/components/list.d.ts +88 -0
- package/dist/jsx/components/list.d.ts.map +1 -0
- package/dist/jsx/components/list.js +93 -0
- package/dist/jsx/components/list.js.map +1 -0
- package/dist/jsx/components/scene.d.ts +40 -0
- package/dist/jsx/components/scene.d.ts.map +1 -0
- package/dist/jsx/components/scene.js +20 -0
- package/dist/jsx/components/scene.js.map +1 -0
- package/dist/jsx/index.d.ts +5 -0
- package/dist/jsx/index.d.ts.map +1 -0
- package/dist/jsx/index.js +5 -0
- package/dist/jsx/index.js.map +1 -0
- package/dist/jsx/jsx.d.ts +3 -0
- package/dist/jsx/jsx.d.ts.map +1 -0
- package/dist/jsx/jsx.js +4 -0
- package/dist/jsx/jsx.js.map +1 -0
- package/dist/jsx/render/game.d.ts +41 -0
- package/dist/jsx/render/game.d.ts.map +1 -0
- package/dist/jsx/render/game.js +86 -0
- package/dist/jsx/render/game.js.map +1 -0
- package/dist/jsx/render/index.d.ts +3 -0
- package/dist/jsx/render/index.d.ts.map +1 -0
- package/dist/jsx/render/index.js +3 -0
- package/dist/jsx/render/index.js.map +1 -0
- package/dist/jsx/render/to-nodes.d.ts +10 -0
- package/dist/jsx/render/to-nodes.d.ts.map +1 -0
- package/dist/jsx/render/to-nodes.js +52 -0
- package/dist/jsx/render/to-nodes.js.map +1 -0
- package/dist/jsx/render/types/class-component.d.ts +4 -0
- package/dist/jsx/render/types/class-component.d.ts.map +1 -0
- package/dist/jsx/render/types/class-component.js +8 -0
- package/dist/jsx/render/types/class-component.js.map +1 -0
- package/dist/jsx/render/types/func-components.d.ts +4 -0
- package/dist/jsx/render/types/func-components.d.ts.map +1 -0
- package/dist/jsx/render/types/func-components.js +8 -0
- package/dist/jsx/render/types/func-components.js.map +1 -0
- package/dist/jsx/render/types/instrinsic-elements.d.ts +6 -0
- package/dist/jsx/render/types/instrinsic-elements.d.ts.map +1 -0
- package/dist/jsx/render/types/instrinsic-elements.js +41 -0
- package/dist/jsx/render/types/instrinsic-elements.js.map +1 -0
- package/dist/jsx/types.d.ts +41 -0
- package/dist/jsx/types.d.ts.map +1 -0
- package/dist/jsx/types.js +2 -0
- package/dist/jsx/types.js.map +1 -0
- package/dist/jsx/utils.d.ts +4 -0
- package/dist/jsx/utils.d.ts.map +1 -0
- package/dist/jsx/utils.js +15 -0
- package/dist/jsx/utils.js.map +1 -0
- package/dist/jsx-runtime.d.ts +6 -0
- package/dist/jsx-runtime.d.ts.map +1 -0
- package/dist/jsx-runtime.js +6 -0
- package/dist/jsx-runtime.js.map +1 -0
- package/dist/math/index.d.ts +3 -0
- package/dist/math/index.d.ts.map +1 -0
- package/dist/math/index.js +2 -0
- package/dist/math/index.js.map +1 -0
- package/dist/math/types.d.ts +13 -0
- package/dist/math/types.d.ts.map +1 -0
- package/dist/math/types.js +2 -0
- package/dist/math/types.js.map +1 -0
- package/dist/math/vector2.d.ts +145 -0
- package/dist/math/vector2.d.ts.map +1 -0
- package/dist/math/vector2.js +164 -0
- package/dist/math/vector2.js.map +1 -0
- package/dist/nodes/_node.d.ts +283 -0
- package/dist/nodes/_node.d.ts.map +1 -0
- package/dist/nodes/_node.js +371 -0
- package/dist/nodes/_node.js.map +1 -0
- package/dist/nodes/animation-player.d.ts +208 -0
- package/dist/nodes/animation-player.d.ts.map +1 -0
- package/dist/nodes/animation-player.js +249 -0
- package/dist/nodes/animation-player.js.map +1 -0
- package/dist/nodes/audio-player.d.ts +128 -0
- package/dist/nodes/audio-player.d.ts.map +1 -0
- package/dist/nodes/audio-player.js +173 -0
- package/dist/nodes/audio-player.js.map +1 -0
- package/dist/nodes/group.d.ts +55 -0
- package/dist/nodes/group.d.ts.map +1 -0
- package/dist/nodes/group.js +54 -0
- package/dist/nodes/group.js.map +1 -0
- package/dist/nodes/index.d.ts +8 -0
- package/dist/nodes/index.d.ts.map +1 -0
- package/dist/nodes/index.js +7 -0
- package/dist/nodes/index.js.map +1 -0
- package/dist/nodes/lib/enum.d.ts +42 -0
- package/dist/nodes/lib/enum.d.ts.map +1 -0
- package/dist/nodes/lib/enum.js +43 -0
- package/dist/nodes/lib/enum.js.map +1 -0
- package/dist/nodes/lib/index.d.ts +5 -0
- package/dist/nodes/lib/index.d.ts.map +1 -0
- package/dist/nodes/lib/index.js +5 -0
- package/dist/nodes/lib/index.js.map +1 -0
- package/dist/nodes/lib/registry.d.ts +43 -0
- package/dist/nodes/lib/registry.d.ts.map +1 -0
- package/dist/nodes/lib/registry.js +46 -0
- package/dist/nodes/lib/registry.js.map +1 -0
- package/dist/nodes/lib/types.d.ts +89 -0
- package/dist/nodes/lib/types.d.ts.map +1 -0
- package/dist/nodes/lib/types.js +2 -0
- package/dist/nodes/lib/types.js.map +1 -0
- package/dist/nodes/lib/utils.d.ts +35 -0
- package/dist/nodes/lib/utils.d.ts.map +1 -0
- package/dist/nodes/lib/utils.js +58 -0
- package/dist/nodes/lib/utils.js.map +1 -0
- package/dist/nodes/node2d/_node2d.d.ts +59 -0
- package/dist/nodes/node2d/_node2d.d.ts.map +1 -0
- package/dist/nodes/node2d/_node2d.js +57 -0
- package/dist/nodes/node2d/_node2d.js.map +1 -0
- package/dist/nodes/node2d/camera.d.ts +64 -0
- package/dist/nodes/node2d/camera.d.ts.map +1 -0
- package/dist/nodes/node2d/camera.js +72 -0
- package/dist/nodes/node2d/camera.js.map +1 -0
- package/dist/nodes/node2d/clickable.d.ts +96 -0
- package/dist/nodes/node2d/clickable.d.ts.map +1 -0
- package/dist/nodes/node2d/clickable.js +117 -0
- package/dist/nodes/node2d/clickable.js.map +1 -0
- package/dist/nodes/node2d/collider.d.ts +96 -0
- package/dist/nodes/node2d/collider.d.ts.map +1 -0
- package/dist/nodes/node2d/collider.js +116 -0
- package/dist/nodes/node2d/collider.js.map +1 -0
- package/dist/nodes/node2d/index.d.ts +12 -0
- package/dist/nodes/node2d/index.d.ts.map +1 -0
- package/dist/nodes/node2d/index.js +11 -0
- package/dist/nodes/node2d/index.js.map +1 -0
- package/dist/nodes/node2d/lib/index.d.ts +2 -0
- package/dist/nodes/node2d/lib/index.d.ts.map +1 -0
- package/dist/nodes/node2d/lib/index.js +2 -0
- package/dist/nodes/node2d/lib/index.js.map +1 -0
- package/dist/nodes/node2d/lib/utils.d.ts +4 -0
- package/dist/nodes/node2d/lib/utils.d.ts.map +1 -0
- package/dist/nodes/node2d/lib/utils.js +14 -0
- package/dist/nodes/node2d/lib/utils.js.map +1 -0
- package/dist/nodes/node2d/ray-cast.d.ts +115 -0
- package/dist/nodes/node2d/ray-cast.d.ts.map +1 -0
- package/dist/nodes/node2d/ray-cast.js +129 -0
- package/dist/nodes/node2d/ray-cast.js.map +1 -0
- package/dist/nodes/node2d/rectangle.d.ts +87 -0
- package/dist/nodes/node2d/rectangle.d.ts.map +1 -0
- package/dist/nodes/node2d/rectangle.js +60 -0
- package/dist/nodes/node2d/rectangle.js.map +1 -0
- package/dist/nodes/node2d/rigid-body.d.ts +65 -0
- package/dist/nodes/node2d/rigid-body.d.ts.map +1 -0
- package/dist/nodes/node2d/rigid-body.js +56 -0
- package/dist/nodes/node2d/rigid-body.js.map +1 -0
- package/dist/nodes/node2d/sprite.d.ts +285 -0
- package/dist/nodes/node2d/sprite.d.ts.map +1 -0
- package/dist/nodes/node2d/sprite.js +226 -0
- package/dist/nodes/node2d/sprite.js.map +1 -0
- package/dist/nodes/node2d/text.d.ts +62 -0
- package/dist/nodes/node2d/text.d.ts.map +1 -0
- package/dist/nodes/node2d/text.js +52 -0
- package/dist/nodes/node2d/text.js.map +1 -0
- package/dist/nodes/node2d/transform.d.ts +32 -0
- package/dist/nodes/node2d/transform.d.ts.map +1 -0
- package/dist/nodes/node2d/transform.js +30 -0
- package/dist/nodes/node2d/transform.js.map +1 -0
- package/dist/nodes/timer.d.ts +107 -0
- package/dist/nodes/timer.d.ts.map +1 -0
- package/dist/nodes/timer.js +108 -0
- package/dist/nodes/timer.js.map +1 -0
- package/dist/reactivity/index.d.ts +5 -0
- package/dist/reactivity/index.d.ts.map +1 -0
- package/dist/reactivity/index.js +5 -0
- package/dist/reactivity/index.js.map +1 -0
- package/dist/reactivity/reactive.d.ts +4 -0
- package/dist/reactivity/reactive.d.ts.map +1 -0
- package/dist/reactivity/reactive.js +50 -0
- package/dist/reactivity/reactive.js.map +1 -0
- package/dist/reactivity/register.d.ts +7 -0
- package/dist/reactivity/register.d.ts.map +1 -0
- package/dist/reactivity/register.js +18 -0
- package/dist/reactivity/register.js.map +1 -0
- package/dist/reactivity/signal.d.ts +126 -0
- package/dist/reactivity/signal.d.ts.map +1 -0
- package/dist/reactivity/signal.js +152 -0
- package/dist/reactivity/signal.js.map +1 -0
- package/dist/reactivity/types.d.ts +31 -0
- package/dist/reactivity/types.d.ts.map +1 -0
- package/dist/reactivity/types.js +2 -0
- package/dist/reactivity/types.js.map +1 -0
- package/dist/scripts/index.d.ts +2 -0
- package/dist/scripts/index.d.ts.map +1 -0
- package/dist/scripts/index.js +2 -0
- package/dist/scripts/index.js.map +1 -0
- package/dist/scripts/script.d.ts +80 -0
- package/dist/scripts/script.d.ts.map +1 -0
- package/dist/scripts/script.js +75 -0
- package/dist/scripts/script.js.map +1 -0
- package/dist/utils/dpr.d.ts +2 -0
- package/dist/utils/dpr.d.ts.map +1 -0
- package/dist/utils/dpr.js +14 -0
- package/dist/utils/dpr.js.map +1 -0
- package/dist/utils/ternaries.d.ts +6 -0
- package/dist/utils/ternaries.d.ts.map +1 -0
- package/dist/utils/ternaries.js +17 -0
- package/dist/utils/ternaries.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { GameConfig } from '../../core/game-config.js';
|
|
2
|
+
import { propSignal } from '../../utils/ternaries.js';
|
|
3
|
+
import { PrimaryNode } from '../lib/enum.js';
|
|
4
|
+
import { Nodes } from '../lib/registry.js';
|
|
5
|
+
import { Node2D } from './_node2d.js';
|
|
6
|
+
/**
|
|
7
|
+
* The **`Camera`** node controls the viewport by applying a transform
|
|
8
|
+
* to all its children. It supports position, zoom, and target following.
|
|
9
|
+
*
|
|
10
|
+
* Place the Camera at the root of your scene to control what is visible.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```tsx
|
|
14
|
+
* import { useNode, useEffect } from 'dinix/hooks'
|
|
15
|
+
* import { PrimaryNode } from 'dinix/nodes/enum'
|
|
16
|
+
*
|
|
17
|
+
* function GameScene() {
|
|
18
|
+
* const camera = useNode(PrimaryNode.Camera)
|
|
19
|
+
* const player = useNode(PrimaryNode.Sprite)
|
|
20
|
+
*
|
|
21
|
+
* useEffect(() => {
|
|
22
|
+
* camera.follow(player)
|
|
23
|
+
* })
|
|
24
|
+
*
|
|
25
|
+
* return (
|
|
26
|
+
* <camera ref={camera} zoom={2}>
|
|
27
|
+
* <sprite ref={player} textureId={PLAYER} />
|
|
28
|
+
* <sprite textureId={BG} />
|
|
29
|
+
* </camera>
|
|
30
|
+
* )
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export class Camera extends Node2D {
|
|
35
|
+
#zoom;
|
|
36
|
+
#target = null;
|
|
37
|
+
constructor(options) {
|
|
38
|
+
super(PrimaryNode.Camera, options);
|
|
39
|
+
this.#zoom = propSignal(this, 'zoom', options.zoom) ?? 1;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Makes the camera follow a target node's position.
|
|
43
|
+
* Pass `undefined` to stop following.
|
|
44
|
+
*/
|
|
45
|
+
follow(target) {
|
|
46
|
+
this.#target = target ?? null;
|
|
47
|
+
}
|
|
48
|
+
/** Gets the current zoom level. */
|
|
49
|
+
get zoom() {
|
|
50
|
+
return this.#zoom;
|
|
51
|
+
}
|
|
52
|
+
/** Sets the zoom level. */
|
|
53
|
+
set zoom(value) {
|
|
54
|
+
this.#zoom = value;
|
|
55
|
+
}
|
|
56
|
+
/** @internal Applies viewport transform and draws children. */
|
|
57
|
+
draw(delta) {
|
|
58
|
+
const ctx = GameConfig.ctx;
|
|
59
|
+
const halfW = GameConfig.width / 2;
|
|
60
|
+
const halfH = GameConfig.height / 2;
|
|
61
|
+
const offsetX = this.#target != null ? this.#target.globalPosition.x : this.position.x;
|
|
62
|
+
const offsetY = this.#target != null ? this.#target.globalPosition.y : this.position.y;
|
|
63
|
+
ctx.save();
|
|
64
|
+
ctx.translate(halfW, halfH);
|
|
65
|
+
ctx.scale(this.#zoom, this.#zoom);
|
|
66
|
+
ctx.translate(-offsetX, -offsetY);
|
|
67
|
+
super.draw(delta);
|
|
68
|
+
ctx.restore();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
Nodes['camera'] = Camera;
|
|
72
|
+
//# sourceMappingURL=camera.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"camera.js","sourceRoot":"","sources":["../../../src/nodes/node2d/camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAsB,MAAM,cAAc,CAAA;AAqBzD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,MAAO,SAAQ,MAA0B;IACpD,KAAK,CAAQ;IACb,OAAO,GAAkB,IAAI,CAAA;IAE7B,YAAY,OAAsB;QAChC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAClC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1D,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,MAA0B;QAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,IAAI,CAAA;IAC/B,CAAC;IAED,mCAAmC;IACnC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,2BAA2B;IAC3B,IAAI,IAAI,CAAC,KAAa;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,+DAA+D;IAC/D,IAAI,CAAC,KAAa;QAChB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAA;QAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,CAAA;QAClC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;QAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;QACtF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;QAEtF,GAAG,CAAC,IAAI,EAAE,CAAA;QACV,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC3B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QACjC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAA;QAEjC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEjB,GAAG,CAAC,OAAO,EAAE,CAAA;IACf,CAAC;CACF;AAED,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAA"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { Event } from '../../events/event.js';
|
|
2
|
+
import { type Vector2, type VectorLike } from '../../math/vector2.js';
|
|
3
|
+
import { PrimaryNode } from '../lib/enum.js';
|
|
4
|
+
import { Node2D, type Node2DOptions } from './_node2d.js';
|
|
5
|
+
import type { Reactive } from '../../reactivity/types.js';
|
|
6
|
+
/**
|
|
7
|
+
* The **`ClickableOptions`** interface defines the options for a `Clickable` node.
|
|
8
|
+
*/
|
|
9
|
+
export interface ClickableOptions extends Node2DOptions<PrimaryNode.Clickable> {
|
|
10
|
+
/**
|
|
11
|
+
* The **`size`** property defines the clickable area dimensions.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```tsx
|
|
15
|
+
* // As a [x, y] tuple
|
|
16
|
+
* <clickable size={[64, 32]} />
|
|
17
|
+
*
|
|
18
|
+
* // As an {x, y} object
|
|
19
|
+
* <clickable size={{ x: 64, y: 32 }} />
|
|
20
|
+
*
|
|
21
|
+
* // As a single number (square area)
|
|
22
|
+
* <clickable size={64} />
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
size: Reactive<VectorLike>;
|
|
26
|
+
/**
|
|
27
|
+
* The **`disabled`** property disable the clickable area.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```tsx
|
|
31
|
+
* const handleClick = () => {
|
|
32
|
+
* console.log("Never")
|
|
33
|
+
* }
|
|
34
|
+
*
|
|
35
|
+
* <clickable size={12} disabled onClick={handleClick} />
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
disabled?: Reactive<boolean>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The **`Clickable`** node detects pointer interactions (click/tap) within its rectangular area.
|
|
42
|
+
* It emits events when the pointer enters, exits, or completes a click inside the area.
|
|
43
|
+
*
|
|
44
|
+
* The `clicked` event includes the local position relative to the node's top-left corner.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```tsx
|
|
48
|
+
* import { useNode } from 'dinix/hooks'
|
|
49
|
+
* import { PrimaryNode } from 'dinix/nodes/enum'
|
|
50
|
+
*
|
|
51
|
+
* function Button() {
|
|
52
|
+
* const btn = useNode(PrimaryNode.Clickable)
|
|
53
|
+
*
|
|
54
|
+
* const handleClick = (pos: Vector2) => {
|
|
55
|
+
* console.log('Clicked at', pos.x, pos.y)
|
|
56
|
+
* }
|
|
57
|
+
*
|
|
58
|
+
* return (
|
|
59
|
+
* <clickable ref={btn} size={[64, 32]} onClick={handleClick}>
|
|
60
|
+
* <sprite textureId={BUTTON} />
|
|
61
|
+
* </clickable>
|
|
62
|
+
* )
|
|
63
|
+
* }
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export declare class Clickable extends Node2D<PrimaryNode.Clickable> {
|
|
67
|
+
#private;
|
|
68
|
+
size: Vector2;
|
|
69
|
+
disabled: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* The **`clicked`** event fires when the pointer is released inside the clickable area.
|
|
72
|
+
* The callback receives the local position relative to the node's top-left corner.
|
|
73
|
+
*/
|
|
74
|
+
clicked: Event<[_position: Vector2], "click">;
|
|
75
|
+
/**
|
|
76
|
+
* The **`mouseEntered`** event fires when the pointer enters the clickable area.
|
|
77
|
+
*/
|
|
78
|
+
mouseEntered: Event<[], "mouseEnter">;
|
|
79
|
+
/**
|
|
80
|
+
* The **`mouseExited`** event fires when the pointer leaves the clickable area.
|
|
81
|
+
*/
|
|
82
|
+
mouseExited: Event<[], "mouseExit">;
|
|
83
|
+
/**
|
|
84
|
+
* The **`mouseOver`** event fires every frame while the pointer is inside the clickable area.
|
|
85
|
+
* The callback receives the local position relative to the node's top-left corner.
|
|
86
|
+
*/
|
|
87
|
+
mouseOver: Event<[_position: Vector2], "mouseOver">;
|
|
88
|
+
constructor(options: ClickableOptions);
|
|
89
|
+
/** @internal Handles hit-testing for pointer interactions. */
|
|
90
|
+
update(delta: number): void;
|
|
91
|
+
/** @internal Draws the clickable area for debugging when showClickables is enabled. */
|
|
92
|
+
draw(delta: number): void;
|
|
93
|
+
/** @internal Cleans up all event listeners. */
|
|
94
|
+
cleanEvents(): void;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=clickable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clickable.d.ts","sourceRoot":"","sources":["../../../src/nodes/node2d/clickable.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAa,KAAK,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAGzD;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC;IAC5E;;;;;;;;;;;;;;OAcG;IACH,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;IAC1B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,SAAU,SAAQ,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC;;IAC1D,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,OAAO,CAAQ;IAIzB;;;OAGG;IACH,OAAO,uCAAiD;IAExD;;OAEG;IACH,YAAY,0BAAoC;IAEhD;;OAEG;IACH,WAAW,yBAAmC;IAE9C;;;OAGG;IACH,SAAS,2CAAqD;gBAElD,OAAO,EAAE,gBAAgB;IAiBrC,8DAA8D;IAC9D,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IA4B3B,uFAAuF;IACvF,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAazB,+CAA+C;IAC/C,WAAW,IAAI,IAAI;CAOpB"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { Game } from '../../core/game.js';
|
|
2
|
+
import { GameConfig } from '../../core/game-config.js';
|
|
3
|
+
import { Event } from '../../events/event.js';
|
|
4
|
+
import { vectorize } from '../../math/vector2.js';
|
|
5
|
+
import { PrimaryNode } from '../lib/enum.js';
|
|
6
|
+
import { Node2D } from './_node2d.js';
|
|
7
|
+
import { Nodes } from '../lib/registry.js';
|
|
8
|
+
import { applySignal, propSignal } from '../../utils/ternaries.js';
|
|
9
|
+
/**
|
|
10
|
+
* The **`Clickable`** node detects pointer interactions (click/tap) within its rectangular area.
|
|
11
|
+
* It emits events when the pointer enters, exits, or completes a click inside the area.
|
|
12
|
+
*
|
|
13
|
+
* The `clicked` event includes the local position relative to the node's top-left corner.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```tsx
|
|
17
|
+
* import { useNode } from 'dinix/hooks'
|
|
18
|
+
* import { PrimaryNode } from 'dinix/nodes/enum'
|
|
19
|
+
*
|
|
20
|
+
* function Button() {
|
|
21
|
+
* const btn = useNode(PrimaryNode.Clickable)
|
|
22
|
+
*
|
|
23
|
+
* const handleClick = (pos: Vector2) => {
|
|
24
|
+
* console.log('Clicked at', pos.x, pos.y)
|
|
25
|
+
* }
|
|
26
|
+
*
|
|
27
|
+
* return (
|
|
28
|
+
* <clickable ref={btn} size={[64, 32]} onClick={handleClick}>
|
|
29
|
+
* <sprite textureId={BUTTON} />
|
|
30
|
+
* </clickable>
|
|
31
|
+
* )
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export class Clickable extends Node2D {
|
|
36
|
+
size;
|
|
37
|
+
disabled = false;
|
|
38
|
+
#isHovered = false;
|
|
39
|
+
#wasPressed = false;
|
|
40
|
+
/**
|
|
41
|
+
* The **`clicked`** event fires when the pointer is released inside the clickable area.
|
|
42
|
+
* The callback receives the local position relative to the node's top-left corner.
|
|
43
|
+
*/
|
|
44
|
+
clicked = new Event('click', (_position) => { });
|
|
45
|
+
/**
|
|
46
|
+
* The **`mouseEntered`** event fires when the pointer enters the clickable area.
|
|
47
|
+
*/
|
|
48
|
+
mouseEntered = new Event('mouseEnter', () => { });
|
|
49
|
+
/**
|
|
50
|
+
* The **`mouseExited`** event fires when the pointer leaves the clickable area.
|
|
51
|
+
*/
|
|
52
|
+
mouseExited = new Event('mouseExit', () => { });
|
|
53
|
+
/**
|
|
54
|
+
* The **`mouseOver`** event fires every frame while the pointer is inside the clickable area.
|
|
55
|
+
* The callback receives the local position relative to the node's top-left corner.
|
|
56
|
+
*/
|
|
57
|
+
mouseOver = new Event('mouseOver', (_position) => { });
|
|
58
|
+
constructor(options) {
|
|
59
|
+
super(PrimaryNode.Clickable, options);
|
|
60
|
+
this.size = propSignal(this, 'size', applySignal(options.size, vectorize));
|
|
61
|
+
this.disabled = propSignal(this, 'disabled', options.disabled);
|
|
62
|
+
}
|
|
63
|
+
#isPointerInside() {
|
|
64
|
+
const pointer = Game.input.pointerPosition;
|
|
65
|
+
const pos = this.globalPosition;
|
|
66
|
+
return (pointer.x >= pos.x &&
|
|
67
|
+
pointer.x <= pos.x + this.size.x &&
|
|
68
|
+
pointer.y >= pos.y &&
|
|
69
|
+
pointer.y <= pos.y + this.size.y);
|
|
70
|
+
}
|
|
71
|
+
/** @internal Handles hit-testing for pointer interactions. */
|
|
72
|
+
update(delta) {
|
|
73
|
+
const isInside = this.#isPointerInside();
|
|
74
|
+
if (!this.disabled) {
|
|
75
|
+
if (isInside && !this.#isHovered) {
|
|
76
|
+
this.#isHovered = true;
|
|
77
|
+
this.mouseEntered.emit();
|
|
78
|
+
}
|
|
79
|
+
else if (!isInside && this.#isHovered) {
|
|
80
|
+
this.#isHovered = false;
|
|
81
|
+
this.mouseExited.emit();
|
|
82
|
+
}
|
|
83
|
+
const isPressed = Game.input.isPointerPressed;
|
|
84
|
+
if (this.#wasPressed && !isPressed && isInside) {
|
|
85
|
+
const local = Game.input.pointerPosition.toSubtracted(this.globalPosition);
|
|
86
|
+
this.clicked.emit(local);
|
|
87
|
+
}
|
|
88
|
+
this.#wasPressed = isPressed;
|
|
89
|
+
if (isInside) {
|
|
90
|
+
const local = Game.input.pointerPosition.toSubtracted(this.globalPosition);
|
|
91
|
+
this.mouseOver.emit(local);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
super.update(delta);
|
|
95
|
+
}
|
|
96
|
+
/** @internal Draws the clickable area for debugging when showClickables is enabled. */
|
|
97
|
+
draw(delta) {
|
|
98
|
+
if (GameConfig.testOptions.showClickables) {
|
|
99
|
+
GameConfig.ctx.fillStyle = this.disabled ? '#cbc2ac5c' : '#e2c8855c';
|
|
100
|
+
GameConfig.ctx.strokeStyle = this.disabled ? '#9ca082b4' : '#abb37ab4';
|
|
101
|
+
GameConfig.ctx.lineWidth = 1;
|
|
102
|
+
GameConfig.ctx.fillRect(this.position.x, this.position.y, this.size.x, this.size.y);
|
|
103
|
+
GameConfig.ctx.strokeRect(this.position.x, this.position.y, this.size.x, this.size.y);
|
|
104
|
+
}
|
|
105
|
+
super.draw(delta);
|
|
106
|
+
}
|
|
107
|
+
/** @internal Cleans up all event listeners. */
|
|
108
|
+
cleanEvents() {
|
|
109
|
+
this.clicked.clean();
|
|
110
|
+
this.mouseEntered.clean();
|
|
111
|
+
this.mouseExited.clean();
|
|
112
|
+
this.mouseOver.clean();
|
|
113
|
+
super.cleanEvents();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
Nodes.clickable = Clickable;
|
|
117
|
+
//# sourceMappingURL=clickable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clickable.js","sourceRoot":"","sources":["../../../src/nodes/node2d/clickable.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { Event } from '../../events/event.js';
|
|
2
|
+
import type { Vector2 } from '../../math/vector2.js';
|
|
3
|
+
import { PrimaryNode } from '../lib/enum.js';
|
|
4
|
+
import { Node2D, type Node2DOptions } from './_node2d.js';
|
|
5
|
+
import type { Shape } from '../../collision/narrowphase/shapes.js';
|
|
6
|
+
export interface ColliderOptions extends Node2DOptions<PrimaryNode.Collider> {
|
|
7
|
+
/**
|
|
8
|
+
* The **`shape`** property defines the collision shape of the collider.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* // Rectangle
|
|
13
|
+
* <collider shape={shapes.rectangle(32, 32)} ... />
|
|
14
|
+
*
|
|
15
|
+
* // Circle
|
|
16
|
+
* <collider shape={shapes.circle(16)} ... />
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
shape: Shape;
|
|
20
|
+
/**
|
|
21
|
+
* The **`group`** property defines the collision groups this collider belongs to.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```tsx
|
|
25
|
+
* <collider shape={...} group={['player', 'character']} ... />
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
group: string[];
|
|
29
|
+
/**
|
|
30
|
+
* The **`collidesWith`** property defines which groups this collider can interact with.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```tsx
|
|
34
|
+
* <collider shape={...} group={...} collidesWith={['enemy', 'obstacle']} ... />
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
collidesWith: string[];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The **`Collider`** node detects collisions with other colliders based on shape, group, and collidesWith configuration.
|
|
41
|
+
* It supports rectangle and circle shapes and emits events when collisions begin, continue, or end.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```tsx
|
|
45
|
+
* import { shapes } from 'dinix'
|
|
46
|
+
*
|
|
47
|
+
* // Rectangle collider
|
|
48
|
+
* <collider shape={shapes.rectangle(32, 32)} group={['player']} collidesWith={['enemy']} />
|
|
49
|
+
*
|
|
50
|
+
* // Circle collider
|
|
51
|
+
* <collider shape={shapes.circle(16)} group={['projectile']} collidesWith={['zombie']} />
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare class Collider extends Node2D<PrimaryNode.Collider> {
|
|
55
|
+
#private;
|
|
56
|
+
_activeCollisions: Set<Collider>;
|
|
57
|
+
/**
|
|
58
|
+
* The read-only **`shape`** property returns the collision shape of this collider.
|
|
59
|
+
*/
|
|
60
|
+
get shape(): Shape;
|
|
61
|
+
/**
|
|
62
|
+
* The read-only **`group`** property returns the set of groups this collider belongs to.
|
|
63
|
+
*/
|
|
64
|
+
get group(): Set<string>;
|
|
65
|
+
/**
|
|
66
|
+
* The read-only **`collidesWith`** property returns the set of groups this collider can collide with.
|
|
67
|
+
*/
|
|
68
|
+
get collidesWith(): Set<string>;
|
|
69
|
+
/**
|
|
70
|
+
* The read-only **`size`** property returns the bounding dimensions of the shape.
|
|
71
|
+
* For rectangles, returns the width and height. For circles, returns diameter x diameter.
|
|
72
|
+
*/
|
|
73
|
+
get size(): Vector2;
|
|
74
|
+
constructor(options: ColliderOptions);
|
|
75
|
+
/**
|
|
76
|
+
* The **`colliderEntered`** event fires when this collider first overlaps with another collider.
|
|
77
|
+
*/
|
|
78
|
+
colliderEntered: Event<[_collider: Collider], "colliderEnter">;
|
|
79
|
+
/**
|
|
80
|
+
* The **`collided`** event fires every frame while this collider overlaps with another collider.
|
|
81
|
+
*/
|
|
82
|
+
collided: Event<[_collider: Collider], "collide">;
|
|
83
|
+
/**
|
|
84
|
+
* The **`colliderExited`** event fires when this collider stops overlapping with another collider.
|
|
85
|
+
*/
|
|
86
|
+
colliderExited: Event<[_collider: Collider], "colliderExit">;
|
|
87
|
+
/** @internal Registers this collider with the collision system. */
|
|
88
|
+
start(): void;
|
|
89
|
+
/** @internal Draws the collision shape for debugging. */
|
|
90
|
+
draw(delta: number): void;
|
|
91
|
+
/** @internal Checks position changes and marks collision system dirty. */
|
|
92
|
+
update(delta: number): void;
|
|
93
|
+
/** @internal Unregisters this collider from the collision system. */
|
|
94
|
+
destroy(): void;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=collider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collider.d.ts","sourceRoot":"","sources":["../../../src/nodes/node2d/collider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAGzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAA;AAElE,MAAM,WAAW,eAAgB,SAAQ,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC;IAC1E;;;;;;;;;;;OAWG;IACH,KAAK,EAAE,KAAK,CAAA;IACZ;;;;;;;OAOG;IACH,KAAK,EAAE,MAAM,EAAE,CAAA;IACf;;;;;;;OAOG;IACH,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,QAAS,SAAQ,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;;IAKxD,iBAAiB,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAY;IAI5C;;OAEG;IACH,IAAI,KAAK,UAER;IAED;;OAEG;IACH,IAAI,KAAK,gBAER;IAED;;OAEG;IACH,IAAI,YAAY,gBAEf;IAED;;;OAGG;IACH,IAAI,IAAI,IAAI,OAAO,CAMlB;gBAEW,OAAO,EAAE,eAAe;IASpC;;OAEG;IACH,eAAe,gDAA0D;IAEzE;;OAEG;IACH,QAAQ,0CAAoD;IAE5D;;OAEG;IACH,cAAc,+CAAyD;IAEvE,mEAAmE;IACnE,KAAK,IAAI,IAAI;IAKb,yDAAyD;IACzD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IA8BzB,0EAA0E;IAC1E,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAU3B,qEAAqE;IACrE,OAAO,IAAI,IAAI;CAIhB"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { GameConfig } from '../../core/game-config.js';
|
|
2
|
+
import { Event } from '../../events/event.js';
|
|
3
|
+
import { PrimaryNode } from '../lib/enum.js';
|
|
4
|
+
import { Node2D } from './_node2d.js';
|
|
5
|
+
import { Nodes } from '../lib/registry.js';
|
|
6
|
+
import { CollisionSystem } from '../../collision/collision-system.js';
|
|
7
|
+
/**
|
|
8
|
+
* The **`Collider`** node detects collisions with other colliders based on shape, group, and collidesWith configuration.
|
|
9
|
+
* It supports rectangle and circle shapes and emits events when collisions begin, continue, or end.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* import { shapes } from 'dinix'
|
|
14
|
+
*
|
|
15
|
+
* // Rectangle collider
|
|
16
|
+
* <collider shape={shapes.rectangle(32, 32)} group={['player']} collidesWith={['enemy']} />
|
|
17
|
+
*
|
|
18
|
+
* // Circle collider
|
|
19
|
+
* <collider shape={shapes.circle(16)} group={['projectile']} collidesWith={['zombie']} />
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export class Collider extends Node2D {
|
|
23
|
+
#shape;
|
|
24
|
+
#group = new Set();
|
|
25
|
+
#collidesWith = new Set();
|
|
26
|
+
_activeCollisions = new Set();
|
|
27
|
+
#lastGlobalPosition;
|
|
28
|
+
/**
|
|
29
|
+
* The read-only **`shape`** property returns the collision shape of this collider.
|
|
30
|
+
*/
|
|
31
|
+
get shape() {
|
|
32
|
+
return this.#shape;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The read-only **`group`** property returns the set of groups this collider belongs to.
|
|
36
|
+
*/
|
|
37
|
+
get group() {
|
|
38
|
+
return this.#group;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The read-only **`collidesWith`** property returns the set of groups this collider can collide with.
|
|
42
|
+
*/
|
|
43
|
+
get collidesWith() {
|
|
44
|
+
return this.#collidesWith;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The read-only **`size`** property returns the bounding dimensions of the shape.
|
|
48
|
+
* For rectangles, returns the width and height. For circles, returns diameter x diameter.
|
|
49
|
+
*/
|
|
50
|
+
get size() {
|
|
51
|
+
if (this.#shape.type === 'rectangle') {
|
|
52
|
+
return this.#shape.size;
|
|
53
|
+
}
|
|
54
|
+
const d = this.#shape.radius * 2;
|
|
55
|
+
return { x: d, y: d };
|
|
56
|
+
}
|
|
57
|
+
constructor(options) {
|
|
58
|
+
super(PrimaryNode.Collider, options);
|
|
59
|
+
this.#shape = options.shape;
|
|
60
|
+
this.#group = new Set(options.group);
|
|
61
|
+
this.#collidesWith = new Set(options.collidesWith);
|
|
62
|
+
this.#lastGlobalPosition = this.globalPosition.clone();
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The **`colliderEntered`** event fires when this collider first overlaps with another collider.
|
|
66
|
+
*/
|
|
67
|
+
colliderEntered = new Event('colliderEnter', (_collider) => { });
|
|
68
|
+
/**
|
|
69
|
+
* The **`collided`** event fires every frame while this collider overlaps with another collider.
|
|
70
|
+
*/
|
|
71
|
+
collided = new Event('collide', (_collider) => { });
|
|
72
|
+
/**
|
|
73
|
+
* The **`colliderExited`** event fires when this collider stops overlapping with another collider.
|
|
74
|
+
*/
|
|
75
|
+
colliderExited = new Event('colliderExit', (_collider) => { });
|
|
76
|
+
/** @internal Registers this collider with the collision system. */
|
|
77
|
+
start() {
|
|
78
|
+
CollisionSystem.register(this);
|
|
79
|
+
super.start();
|
|
80
|
+
}
|
|
81
|
+
/** @internal Draws the collision shape for debugging. */
|
|
82
|
+
draw(delta) {
|
|
83
|
+
if (GameConfig.testOptions.showColliders) {
|
|
84
|
+
GameConfig.ctx.fillStyle = '#85b2e25c';
|
|
85
|
+
GameConfig.ctx.strokeStyle = '#3f73abb4';
|
|
86
|
+
GameConfig.ctx.lineWidth = 1;
|
|
87
|
+
if (this.#shape.type === 'circle') {
|
|
88
|
+
GameConfig.ctx.beginPath();
|
|
89
|
+
GameConfig.ctx.arc(this.position.x, this.position.y, this.#shape.radius, 0, Math.PI * 2);
|
|
90
|
+
GameConfig.ctx.fill();
|
|
91
|
+
GameConfig.ctx.stroke();
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
GameConfig.ctx.fillRect(this.position.x, this.position.y, this.#shape.size.x, this.#shape.size.y);
|
|
95
|
+
GameConfig.ctx.strokeRect(this.position.x, this.position.y, this.#shape.size.x, this.#shape.size.y);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
super.draw(delta);
|
|
99
|
+
}
|
|
100
|
+
/** @internal Checks position changes and marks collision system dirty. */
|
|
101
|
+
update(delta) {
|
|
102
|
+
const currentGlobalPos = this.globalPosition;
|
|
103
|
+
if (!currentGlobalPos.equals(this.#lastGlobalPosition)) {
|
|
104
|
+
this.#lastGlobalPosition = currentGlobalPos.clone();
|
|
105
|
+
CollisionSystem.setDirty();
|
|
106
|
+
}
|
|
107
|
+
super.update(delta);
|
|
108
|
+
}
|
|
109
|
+
/** @internal Unregisters this collider from the collision system. */
|
|
110
|
+
destroy() {
|
|
111
|
+
CollisionSystem.unregister(this);
|
|
112
|
+
super.destroy();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
Nodes.collider = Collider;
|
|
116
|
+
//# sourceMappingURL=collider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collider.js","sourceRoot":"","sources":["../../../src/nodes/node2d/collider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type * from './_node2d.js';
|
|
2
|
+
export * from './clickable.js';
|
|
3
|
+
export * from './collider.js';
|
|
4
|
+
export * from './ray-cast.js';
|
|
5
|
+
export * from './sprite.js';
|
|
6
|
+
export * from './transform.js';
|
|
7
|
+
export * from './rectangle.js';
|
|
8
|
+
export * from './text.js';
|
|
9
|
+
export * from './camera.js';
|
|
10
|
+
export * from './rigid-body.js';
|
|
11
|
+
export * from './lib/index.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nodes/node2d/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,cAAc,CAAA;AAEjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAE/B,cAAc,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './clickable.js';
|
|
2
|
+
export * from './collider.js';
|
|
3
|
+
export * from './ray-cast.js';
|
|
4
|
+
export * from './sprite.js';
|
|
5
|
+
export * from './transform.js';
|
|
6
|
+
export * from './rectangle.js';
|
|
7
|
+
export * from './text.js';
|
|
8
|
+
export * from './camera.js';
|
|
9
|
+
export * from './rigid-body.js';
|
|
10
|
+
export * from './lib/index.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nodes/node2d/index.ts"],"names":[],"mappings":"AAEA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAE/B,cAAc,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/nodes/node2d/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/nodes/node2d/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/nodes/node2d/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAG1C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CASjE"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Vector2 } from '../../../math/vector2.js';
|
|
2
|
+
import { Node2D } from '../_node2d.js';
|
|
3
|
+
export function getGlobalPosition(node) {
|
|
4
|
+
const pos = node instanceof Node2D ? node.position.clone() : Vector2.ZERO;
|
|
5
|
+
let parent = node?.parent;
|
|
6
|
+
while (parent != null) {
|
|
7
|
+
if (!(parent instanceof Node2D))
|
|
8
|
+
continue;
|
|
9
|
+
pos.add(parent.position);
|
|
10
|
+
parent = parent.parent;
|
|
11
|
+
}
|
|
12
|
+
return pos;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/nodes/node2d/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC,MAAM,UAAU,iBAAiB,CAAC,IAAsB;IACtD,MAAM,GAAG,GAAG,IAAI,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAA;IACzE,IAAI,MAAM,GAAG,IAAI,EAAE,MAAM,CAAA;IACzB,OAAO,MAAM,IAAI,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,MAAM,YAAY,MAAM,CAAC;YAAE,SAAQ;QACzC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACxB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;IACxB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
|