canvasengine 1.0.8 → 2.0.0-beta.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.
Files changed (80) hide show
  1. package/.cursorrules +0 -0
  2. package/README.md +71 -0
  3. package/dist/compiler/vite.js +119 -0
  4. package/dist/compiler/vite.js.map +1 -0
  5. package/dist/index.d.ts +846 -0
  6. package/dist/index.js +3340 -0
  7. package/dist/index.js.map +1 -0
  8. package/logo.png +0 -0
  9. package/package.json +88 -15
  10. package/src/compiler/grammar.pegjs +180 -0
  11. package/src/compiler/vite.ts +166 -0
  12. package/src/components/Canvas.ts +134 -0
  13. package/src/components/Container.ts +46 -0
  14. package/src/components/DisplayObject.ts +458 -0
  15. package/src/components/DrawMap/index.ts +65 -0
  16. package/src/components/Graphic.ts +147 -0
  17. package/src/components/NineSliceSprite.ts +46 -0
  18. package/src/components/ParticleEmitter.ts +39 -0
  19. package/src/components/Scene.ts +6 -0
  20. package/src/components/Sprite.ts +493 -0
  21. package/src/components/Text.ts +145 -0
  22. package/src/components/Tilemap/Tile.ts +79 -0
  23. package/src/components/Tilemap/TileGroup.ts +207 -0
  24. package/src/components/Tilemap/TileLayer.ts +163 -0
  25. package/src/components/Tilemap/TileSet.ts +41 -0
  26. package/src/components/Tilemap/index.ts +80 -0
  27. package/src/components/TilingSprite.ts +39 -0
  28. package/src/components/Viewport.ts +159 -0
  29. package/src/components/index.ts +12 -0
  30. package/src/components/types/DisplayObject.ts +68 -0
  31. package/src/components/types/MouseEvent.ts +3 -0
  32. package/src/components/types/Spritesheet.ts +389 -0
  33. package/src/components/types/index.ts +4 -0
  34. package/src/directives/Drag.ts +84 -0
  35. package/src/directives/KeyboardControls.ts +922 -0
  36. package/src/directives/Scheduler.ts +112 -0
  37. package/src/directives/Sound.ts +91 -0
  38. package/src/directives/Transition.ts +45 -0
  39. package/src/directives/ViewportCull.ts +40 -0
  40. package/src/directives/ViewportFollow.ts +26 -0
  41. package/src/directives/index.ts +7 -0
  42. package/src/engine/animation.ts +113 -0
  43. package/src/engine/bootstrap.ts +19 -0
  44. package/src/engine/directive.ts +23 -0
  45. package/src/engine/reactive.ts +379 -0
  46. package/src/engine/signal.ts +138 -0
  47. package/src/engine/trigger.ts +40 -0
  48. package/src/engine/utils.ts +135 -0
  49. package/src/hooks/addContext.ts +6 -0
  50. package/src/hooks/useProps.ts +155 -0
  51. package/src/hooks/useRef.ts +21 -0
  52. package/src/index.ts +14 -0
  53. package/src/presets/Bar.ts +89 -0
  54. package/src/presets/Button.ts +0 -0
  55. package/src/presets/Joystick.ts +286 -0
  56. package/src/presets/NightAmbiant.ts +122 -0
  57. package/src/presets/Particle.ts +53 -0
  58. package/src/utils/Ease.ts +33 -0
  59. package/src/utils/RadialGradient.ts +86 -0
  60. package/starter/assets/logo.png +0 -0
  61. package/starter/components/app.ce +18 -0
  62. package/starter/components/hello.ce +34 -0
  63. package/starter/index.html +21 -0
  64. package/starter/main.ts +4 -0
  65. package/starter/package.json +16 -0
  66. package/starter/vite.config.ts +12 -0
  67. package/tsconfig.json +32 -0
  68. package/tsconfig.node.json +10 -0
  69. package/tsup.config.ts +28 -0
  70. package/vitest.config.ts +12 -0
  71. package/core/ModelServer.js +0 -251
  72. package/core/engine-common.js +0 -534
  73. package/examples/server/client.html +0 -31
  74. package/examples/server/server.js +0 -11
  75. package/extends/Gleed2d.js +0 -248
  76. package/extends/Marshal.js +0 -662
  77. package/extends/Tiled.js +0 -293
  78. package/index.js +0 -15
  79. package/license.txt +0 -19
  80. package/readme.md +0 -69
@@ -0,0 +1,84 @@
1
+ import { effect, isSignal } from '@signe/reactive';
2
+ import { Container, Rectangle } from 'pixi.js';
3
+ import { Directive, registerDirective } from '../engine/directive';
4
+ import { Element } from '../engine/reactive';
5
+ import { snap } from 'popmotion';
6
+ import { addContext } from '../hooks/addContext';
7
+
8
+ export class Drop extends Directive {
9
+ onInit(element: Element<Container>) {}
10
+
11
+ onMount(element: Element<Container>) {
12
+ addContext(element, 'drop', element)
13
+ }
14
+
15
+ onUpdate() {}
16
+
17
+ onDestroy() {}
18
+ }
19
+
20
+ export class Drag extends Directive {
21
+ onInit(element: Element<Container>) {}
22
+
23
+ onMount(element: Element<Container>) {
24
+ const { rootElement, canvasSize } = element.props.context
25
+ const { propObservables } = element
26
+ const { drag } = element.props
27
+ const instance = element.componentInstance
28
+ const stage = rootElement.componentInstance
29
+ instance.eventMode = 'static'
30
+ stage.eventMode = 'static'
31
+
32
+ const snapTo = snap(drag?.snap ?? 0);
33
+
34
+ effect(() => {
35
+ stage.hitArea = new Rectangle(0, 0, canvasSize().width, canvasSize().height)
36
+ })
37
+
38
+ let x = 0
39
+ let y = 0
40
+
41
+ const onDragMove = (event) => {
42
+ drag.move?.(event)
43
+ x += event.movementX
44
+ y += event.movementY
45
+ if (drag?.snap) {
46
+ instance.position.x = snapTo(x)
47
+ instance.position.y = snapTo(y)
48
+ } else {
49
+ instance.position.x = x
50
+ instance.position.y = y
51
+ }
52
+ const { x: xProp, y: yProp } = propObservables as any
53
+ if (xProp !== undefined && isSignal(xProp)) {
54
+ xProp.set(instance.position.x)
55
+ }
56
+ if (yProp !== undefined && isSignal(yProp)) {
57
+ yProp.set(instance.position.y)
58
+ }
59
+ }
60
+
61
+ const onDragEnd = () => {
62
+ drag.end?.()
63
+ stage.off('pointermove', onDragMove)
64
+ console.log(rootElement.allElements)
65
+ }
66
+
67
+ instance.on('pointerdown', () => {
68
+ drag.start?.()
69
+ stage.on('pointermove', onDragMove)
70
+ });
71
+
72
+ stage.on('pointerup', onDragEnd)
73
+ stage.on('pointerupoutside', onDragEnd)
74
+ }
75
+
76
+ onUpdate() {}
77
+
78
+ onDestroy() {
79
+
80
+ }
81
+ }
82
+
83
+ // registerDirective('drag', Drag)
84
+ // registerDirective('drop', Drop)