dacha 0.18.0-alpha.2 → 0.18.0-alpha.3

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 (69) hide show
  1. package/build/contrib/components/animatable/index.d.ts +0 -1
  2. package/build/contrib/components/animatable/index.js +0 -6
  3. package/build/contrib/components/audio-source/index.d.ts +0 -1
  4. package/build/contrib/components/audio-source/index.js +0 -9
  5. package/build/contrib/components/behaviors/index.d.ts +0 -1
  6. package/build/contrib/components/behaviors/index.js +4 -9
  7. package/build/contrib/components/bitmap-text/index.d.ts +6 -4
  8. package/build/contrib/components/bitmap-text/index.js +4 -17
  9. package/build/contrib/components/camera/index.d.ts +0 -1
  10. package/build/contrib/components/camera/index.js +0 -6
  11. package/build/contrib/components/collider/index.d.ts +56 -24
  12. package/build/contrib/components/collider/index.js +35 -48
  13. package/build/contrib/components/index.d.ts +2 -2
  14. package/build/contrib/components/index.js +2 -2
  15. package/build/contrib/components/keyboard-control/index.d.ts +0 -1
  16. package/build/contrib/components/keyboard-control/index.js +0 -31
  17. package/build/contrib/components/mesh/index.d.ts +6 -4
  18. package/build/contrib/components/mesh/index.js +7 -23
  19. package/build/contrib/components/mouse-control/index.d.ts +0 -1
  20. package/build/contrib/components/mouse-control/index.js +0 -19
  21. package/build/contrib/components/pixi-view/index.d.ts +6 -4
  22. package/build/contrib/components/pixi-view/index.js +4 -10
  23. package/build/contrib/components/rigid-body/index.d.ts +0 -1
  24. package/build/contrib/components/rigid-body/index.js +0 -9
  25. package/build/contrib/components/shape/index.d.ts +44 -38
  26. package/build/contrib/components/shape/index.js +41 -59
  27. package/build/contrib/components/sprite/index.d.ts +6 -4
  28. package/build/contrib/components/sprite/index.js +4 -20
  29. package/build/contrib/components/transform/index.d.ts +0 -1
  30. package/build/contrib/components/transform/index.js +1 -10
  31. package/build/contrib/systems/audio-system/index.js +3 -3
  32. package/build/contrib/systems/audio-system/utils.d.ts +3 -2
  33. package/build/contrib/systems/audio-system/utils.js +12 -0
  34. package/build/contrib/systems/physics-system/subsystems/collision-detection/geometry-builders/build-box-geometry.js +7 -4
  35. package/build/contrib/systems/physics-system/subsystems/collision-detection/geometry-builders/build-capsule-geometry.js +13 -14
  36. package/build/contrib/systems/physics-system/subsystems/collision-detection/geometry-builders/build-circle-geometry.js +6 -3
  37. package/build/contrib/systems/physics-system/subsystems/collision-detection/geometry-builders/build-segment-geometry.js +12 -13
  38. package/build/contrib/systems/physics-system/subsystems/collision-detection/index.d.ts +0 -1
  39. package/build/contrib/systems/physics-system/subsystems/collision-detection/index.js +9 -33
  40. package/build/contrib/systems/physics-system/subsystems/collision-detection/intersection-checkers/tests/helpers.js +4 -4
  41. package/build/contrib/systems/physics-system/subsystems/collision-detection/query-utils.js +3 -3
  42. package/build/contrib/systems/physics-system/subsystems/collision-detection/reorientation-checkers/check-collider.js +19 -12
  43. package/build/contrib/systems/physics-system/subsystems/collision-detection/reorientation-checkers/get-orientation-data.d.ts +3 -0
  44. package/build/contrib/systems/physics-system/subsystems/collision-detection/reorientation-checkers/get-orientation-data.js +45 -0
  45. package/build/contrib/systems/physics-system/subsystems/collision-detection/reorientation-checkers/index.d.ts +1 -0
  46. package/build/contrib/systems/physics-system/subsystems/collision-detection/reorientation-checkers/index.js +1 -0
  47. package/build/contrib/systems/physics-system/subsystems/collision-detection/types.d.ts +6 -4
  48. package/build/contrib/systems/renderer/assets/index.js +4 -4
  49. package/build/contrib/systems/renderer/assets/utils.d.ts +5 -3
  50. package/build/contrib/systems/renderer/assets/utils.js +25 -0
  51. package/build/contrib/systems/renderer/builders/shape-builder/index.d.ts +2 -0
  52. package/build/contrib/systems/renderer/builders/shape-builder/index.js +69 -29
  53. package/build/contrib/systems/renderer/builders/shape-builder/utils.js +31 -21
  54. package/build/contrib/systems/renderer/sort/sort-by-x-axis.js +2 -2
  55. package/build/contrib/systems/renderer/sort/sort-by-y-axis.js +2 -2
  56. package/build/engine/actor/actor-creator.d.ts +1 -0
  57. package/build/engine/actor/actor-creator.js +6 -8
  58. package/build/engine/component/component.d.ts +0 -1
  59. package/build/engine/engine.js +1 -1
  60. package/build/engine/entity/utils.d.ts +6 -3
  61. package/build/engine/template/index.d.ts +0 -1
  62. package/build/engine/template/index.js +0 -1
  63. package/build/engine/template/template-collection.d.ts +4 -8
  64. package/build/engine/template/template-collection.js +22 -29
  65. package/build/engine/types/config.d.ts +4 -4
  66. package/build/types/global.d.ts +4 -1
  67. package/package.json +1 -1
  68. package/build/engine/template/template.d.ts +0 -18
  69. package/build/engine/template/template.js +0 -46
@@ -36,5 +36,4 @@ export declare class Animatable extends Component {
36
36
  duration: number;
37
37
  constructor(config: AnimatableConfig);
38
38
  setCurrentState(currentState: string): void;
39
- clone(): Animatable;
40
39
  }
@@ -56,11 +56,5 @@ export class Animatable extends Component {
56
56
  }
57
57
  this.currentState = newState;
58
58
  }
59
- clone() {
60
- return new Animatable({
61
- states: this.states,
62
- initialState: this.initialState,
63
- });
64
- }
65
59
  }
66
60
  Animatable.componentName = 'Animatable';
@@ -49,5 +49,4 @@ export declare class AudioSource extends Component {
49
49
  /** Whether the audio is playing now */
50
50
  playing: boolean;
51
51
  constructor(config: AudioSourceConfig);
52
- clone(): AudioSource;
53
52
  }
@@ -50,14 +50,5 @@ export class AudioSource extends Component {
50
50
  this.autoplay = config.autoplay;
51
51
  this.playing = false;
52
52
  }
53
- clone() {
54
- return new AudioSource({
55
- src: this.src,
56
- group: this.group,
57
- looped: this.looped,
58
- volume: this.volume,
59
- autoplay: this.autoplay,
60
- });
61
- }
62
53
  }
63
54
  AudioSource.componentName = 'AudioSource';
@@ -28,6 +28,5 @@ export interface BehaviorsConfig {
28
28
  export declare class Behaviors extends Component {
29
29
  list: BehaviorConfig[];
30
30
  constructor(config: BehaviorsConfig);
31
- clone(): Behaviors;
32
31
  }
33
32
  export {};
@@ -23,15 +23,10 @@ export class Behaviors extends Component {
23
23
  constructor(config) {
24
24
  super();
25
25
  const { list } = config;
26
- this.list = list;
27
- }
28
- clone() {
29
- return new Behaviors({
30
- list: this.list.map(({ name, options }) => ({
31
- name,
32
- options: { ...options },
33
- })),
34
- });
26
+ this.list = list.map(({ name, options }) => ({
27
+ name,
28
+ options: { ...options },
29
+ }));
35
30
  }
36
31
  }
37
32
  Behaviors.componentName = 'Behaviors';
@@ -1,5 +1,6 @@
1
1
  import type { BitmapText as PixiBitmapText } from 'pixi.js';
2
2
  import { Component } from '../../../engine/component';
3
+ import type { Point } from '../../../engine/math-lib';
3
4
  import { type BlendingMode } from '../../types/view';
4
5
  interface RenderData {
5
6
  view: PixiBitmapText;
@@ -16,7 +17,8 @@ export interface BitmapTextConfig {
16
17
  blending: BlendingMode;
17
18
  disabled: boolean;
18
19
  sortingLayer: string;
19
- sortCenter: [number, number];
20
+ sortOffsetX: number;
21
+ sortOffsetY: number;
20
22
  }
21
23
  /**
22
24
  * BitmapText component for rendering text using a bitmap font.
@@ -37,7 +39,8 @@ export interface BitmapTextConfig {
37
39
  * blending: 'normal',
38
40
  * disabled: false,
39
41
  * sortingLayer: 'text',
40
- * sortCenter: [0, 0],
42
+ * sortOffsetX: 0,
43
+ * sortOffsetY: 0
41
44
  * });
42
45
  *
43
46
  * // Add to actor
@@ -73,10 +76,9 @@ export declare class BitmapText extends Component {
73
76
  /** Sorting layer of the text */
74
77
  sortingLayer: string;
75
78
  /** Center point of the text */
76
- sortCenter: [number, number];
79
+ sortOffset: Point;
77
80
  /** Internal rendering data */
78
81
  renderData?: RenderData;
79
82
  constructor(config: BitmapTextConfig);
80
- clone(): BitmapText;
81
83
  }
82
84
  export {};
@@ -18,7 +18,8 @@ import { Component } from '../../../engine/component';
18
18
  * blending: 'normal',
19
19
  * disabled: false,
20
20
  * sortingLayer: 'text',
21
- * sortCenter: [0, 0],
21
+ * sortOffsetX: 0,
22
+ * sortOffsetY: 0
22
23
  * });
23
24
  *
24
25
  * // Add to actor
@@ -54,7 +55,7 @@ export class BitmapText extends Component {
54
55
  /** Sorting layer of the text */
55
56
  sortingLayer;
56
57
  /** Center point of the text */
57
- sortCenter;
58
+ sortOffset;
58
59
  /** Internal rendering data */
59
60
  renderData;
60
61
  constructor(config) {
@@ -68,21 +69,7 @@ export class BitmapText extends Component {
68
69
  this.blending = config.blending;
69
70
  this.disabled = config.disabled;
70
71
  this.sortingLayer = config.sortingLayer;
71
- this.sortCenter = config.sortCenter;
72
- }
73
- clone() {
74
- return new BitmapText({
75
- text: this.text,
76
- font: this.font,
77
- fontSize: this.fontSize,
78
- align: this.align,
79
- color: this.color,
80
- opacity: this.opacity,
81
- blending: this.blending,
82
- disabled: this.disabled,
83
- sortingLayer: this.sortingLayer,
84
- sortCenter: this.sortCenter.slice(0),
85
- });
72
+ this.sortOffset = { x: config.sortOffsetX, y: config.sortOffsetY };
86
73
  }
87
74
  }
88
75
  BitmapText.componentName = 'BitmapText';
@@ -32,5 +32,4 @@ export declare class Camera extends Component {
32
32
  /** Size of the game window in the y axis in pixels */
33
33
  windowSizeY: number;
34
34
  constructor(config: CameraConfig);
35
- clone(): Camera;
36
35
  }
@@ -34,11 +34,5 @@ export class Camera extends Component {
34
34
  this.windowSizeX = 0;
35
35
  this.windowSizeY = 0;
36
36
  }
37
- clone() {
38
- return new Camera({
39
- zoom: this.zoom,
40
- current: this.current,
41
- });
42
- }
43
37
  }
44
38
  Camera.componentName = 'Camera';
@@ -1,19 +1,58 @@
1
1
  import { Component } from '../../../engine/component';
2
2
  import type { Point } from '../../../engine/math-lib';
3
- export interface ColliderConfig {
4
- type: 'box' | 'circle' | 'segment' | 'capsule';
5
- centerX: number;
6
- centerY: number;
7
- sizeX?: number;
8
- sizeY?: number;
9
- point1X?: number;
10
- point1Y?: number;
11
- point2X?: number;
12
- point2Y?: number;
13
- radius?: number;
3
+ export type ColliderType = 'box' | 'circle' | 'segment' | 'capsule';
4
+ export interface BaseColliderConfig {
5
+ type: ColliderType;
6
+ offsetX: number;
7
+ offsetY: number;
14
8
  layer: string;
15
9
  debugColor?: string;
16
10
  }
11
+ export interface BoxColliderConfig extends BaseColliderConfig {
12
+ type: 'box';
13
+ sizeX: number;
14
+ sizeY: number;
15
+ }
16
+ export interface CircleColliderConfig extends BaseColliderConfig {
17
+ type: 'circle';
18
+ radius: number;
19
+ }
20
+ export interface SegmentColliderConfig extends BaseColliderConfig {
21
+ type: 'segment';
22
+ point1X: number;
23
+ point1Y: number;
24
+ point2X: number;
25
+ point2Y: number;
26
+ }
27
+ export interface CapsuleColliderConfig extends BaseColliderConfig {
28
+ type: 'capsule';
29
+ point1X: number;
30
+ point1Y: number;
31
+ point2X: number;
32
+ point2Y: number;
33
+ radius: number;
34
+ }
35
+ export type ColliderConfig = BoxColliderConfig | CircleColliderConfig | SegmentColliderConfig | CapsuleColliderConfig;
36
+ export interface BoxColliderShape {
37
+ type: 'box';
38
+ size: Point;
39
+ }
40
+ export interface CircleColliderShape {
41
+ type: 'circle';
42
+ radius: number;
43
+ }
44
+ export interface SegmentColliderShape {
45
+ type: 'segment';
46
+ point1: Point;
47
+ point2: Point;
48
+ }
49
+ export interface CapsuleColliderShape {
50
+ type: 'capsule';
51
+ point1: Point;
52
+ point2: Point;
53
+ radius: number;
54
+ }
55
+ export type ColliderShape = BoxColliderShape | CircleColliderShape | SegmentColliderShape | CapsuleColliderShape;
17
56
  /**
18
57
  * Collider component for defining collision boundaries.
19
58
  *
@@ -25,8 +64,8 @@ export interface ColliderConfig {
25
64
  * // Create a box collider
26
65
  * const boxCollider = new Collider({
27
66
  * type: 'box',
28
- * centerX: 0,
29
- * centerY: 0,
67
+ * offsetX: 0,
68
+ * offsetY: 0,
30
69
  * sizeX: 64,
31
70
  * sizeY: 64,
32
71
  * layer: 'default',
@@ -35,8 +74,8 @@ export interface ColliderConfig {
35
74
  * // Create a circle collider
36
75
  * const circleCollider = new Collider({
37
76
  * type: 'circle',
38
- * centerX: 0,
39
- * centerY: 0,
77
+ * offsetX: 0,
78
+ * offsetY: 0,
40
79
  * radius: 32,
41
80
  * layer: 'default',
42
81
  * });
@@ -48,16 +87,9 @@ export interface ColliderConfig {
48
87
  * @category Components
49
88
  */
50
89
  export declare class Collider extends Component {
51
- type: 'box' | 'circle' | 'segment' | 'capsule';
52
- centerX: number;
53
- centerY: number;
54
- sizeX?: number;
55
- sizeY?: number;
56
- radius?: number;
57
- point1?: Point;
58
- point2?: Point;
90
+ offset: Point;
59
91
  layer: string;
60
92
  debugColor?: string;
93
+ shape: ColliderShape;
61
94
  constructor(config: ColliderConfig);
62
- clone(): Collider;
63
95
  }
@@ -10,8 +10,8 @@ import { Component } from '../../../engine/component';
10
10
  * // Create a box collider
11
11
  * const boxCollider = new Collider({
12
12
  * type: 'box',
13
- * centerX: 0,
14
- * centerY: 0,
13
+ * offsetX: 0,
14
+ * offsetY: 0,
15
15
  * sizeX: 64,
16
16
  * sizeY: 64,
17
17
  * layer: 'default',
@@ -20,8 +20,8 @@ import { Component } from '../../../engine/component';
20
20
  * // Create a circle collider
21
21
  * const circleCollider = new Collider({
22
22
  * type: 'circle',
23
- * centerX: 0,
24
- * centerY: 0,
23
+ * offsetX: 0,
24
+ * offsetY: 0,
25
25
  * radius: 32,
26
26
  * layer: 'default',
27
27
  * });
@@ -33,56 +33,43 @@ import { Component } from '../../../engine/component';
33
33
  * @category Components
34
34
  */
35
35
  export class Collider extends Component {
36
- type;
37
- centerX;
38
- centerY;
39
- sizeX;
40
- sizeY;
41
- radius;
42
- point1;
43
- point2;
36
+ offset;
44
37
  layer;
45
38
  debugColor;
39
+ shape;
46
40
  constructor(config) {
47
41
  super();
48
- this.type = config.type;
49
- this.centerX = config.centerX;
50
- this.centerY = config.centerY;
51
- this.sizeX = config.sizeX;
52
- this.sizeY = config.sizeY;
53
- this.radius = config.radius;
54
- this.point1 =
55
- config.point1X !== undefined || config.point1Y !== undefined
56
- ? {
57
- x: config.point1X ?? 0,
58
- y: config.point1Y ?? 0,
59
- }
60
- : undefined;
61
- this.point2 =
62
- config.point2X !== undefined || config.point2Y !== undefined
63
- ? {
64
- x: config.point2X ?? 0,
65
- y: config.point2Y ?? 0,
66
- }
67
- : undefined;
42
+ this.offset = { x: config.offsetX, y: config.offsetY };
68
43
  this.layer = config.layer;
69
44
  this.debugColor = config.debugColor;
70
- }
71
- clone() {
72
- return new Collider({
73
- type: this.type,
74
- centerX: this.centerX,
75
- centerY: this.centerY,
76
- sizeX: this.sizeX,
77
- sizeY: this.sizeY,
78
- radius: this.radius,
79
- point1X: this.point1?.x,
80
- point1Y: this.point1?.y,
81
- point2X: this.point2?.x,
82
- point2Y: this.point2?.y,
83
- layer: this.layer,
84
- debugColor: this.debugColor,
85
- });
45
+ switch (config.type) {
46
+ case 'box':
47
+ this.shape = {
48
+ type: config.type,
49
+ size: { x: config.sizeX, y: config.sizeY },
50
+ };
51
+ break;
52
+ case 'circle':
53
+ this.shape = {
54
+ type: config.type,
55
+ radius: config.radius,
56
+ };
57
+ break;
58
+ case 'segment':
59
+ this.shape = {
60
+ type: config.type,
61
+ point1: { x: config.point1X, y: config.point1Y },
62
+ point2: { x: config.point2X, y: config.point2Y },
63
+ };
64
+ break;
65
+ case 'capsule':
66
+ this.shape = {
67
+ type: config.type,
68
+ point1: { x: config.point1X, y: config.point1Y },
69
+ point2: { x: config.point2X, y: config.point2Y },
70
+ radius: config.radius,
71
+ };
72
+ }
86
73
  }
87
74
  }
88
75
  Collider.componentName = 'Collider';
@@ -1,6 +1,6 @@
1
1
  export { Camera, type CameraConfig } from './camera';
2
2
  export { KeyboardControl, type KeyboardControlConfig, } from './keyboard-control';
3
- export { Collider, type ColliderConfig } from './collider';
3
+ export { Collider, type ColliderConfig, type ColliderShape, type ColliderType, type BoxColliderShape, type CircleColliderShape, type SegmentColliderShape, type CapsuleColliderShape, } from './collider';
4
4
  export { RigidBody, type RigidBodyConfig } from './rigid-body';
5
5
  export { Animatable, type AnimatableConfig } from './animatable';
6
6
  export { Sprite, type SpriteConfig } from './sprite';
@@ -8,7 +8,7 @@ export { Transform, type TransformConfig } from './transform';
8
8
  export { MouseControl, type MouseControlConfig } from './mouse-control';
9
9
  export { Behaviors, type BehaviorsConfig } from './behaviors';
10
10
  export { AudioSource, type AudioSourceConfig } from './audio-source';
11
- export { Shape, type ShapeConfig } from './shape';
11
+ export { Shape, type ShapeConfig, type ShapeGeometry, type RectangleShapeGeometry, type RoundRectangleShapeGeometry, type CircleShapeGeometry, type EllipseShapeGeometry, type LineShapeGeometry, } from './shape';
12
12
  export { PixiView } from './pixi-view';
13
13
  export { BitmapText, type BitmapTextConfig } from './bitmap-text';
14
14
  export { Mesh, type MeshConfig } from './mesh';
@@ -1,6 +1,6 @@
1
1
  export { Camera } from './camera';
2
2
  export { KeyboardControl, } from './keyboard-control';
3
- export { Collider } from './collider';
3
+ export { Collider, } from './collider';
4
4
  export { RigidBody } from './rigid-body';
5
5
  export { Animatable } from './animatable';
6
6
  export { Sprite } from './sprite';
@@ -8,7 +8,7 @@ export { Transform } from './transform';
8
8
  export { MouseControl } from './mouse-control';
9
9
  export { Behaviors } from './behaviors';
10
10
  export { AudioSource } from './audio-source';
11
- export { Shape } from './shape';
11
+ export { Shape, } from './shape';
12
12
  export { PixiView } from './pixi-view';
13
13
  export { BitmapText } from './bitmap-text';
14
14
  export { Mesh } from './mesh';
@@ -61,5 +61,4 @@ export declare class KeyboardControl extends Component {
61
61
  * @param config - Configuration for the keyboard control
62
62
  */
63
63
  constructor(config: KeyboardControlConfig);
64
- clone(): KeyboardControl;
65
64
  }
@@ -56,36 +56,5 @@ export class KeyboardControl extends Component {
56
56
  return acc;
57
57
  }, {});
58
58
  }
59
- clone() {
60
- return new KeyboardControl({
61
- inputEventBindings: Object.keys(this.inputEventBindings).reduce((acc, inputEvent) => {
62
- const { pressed, released } = this.inputEventBindings[inputEvent];
63
- if (pressed !== undefined) {
64
- acc.push({
65
- key: inputEvent,
66
- eventType: pressed.eventType,
67
- pressed: true,
68
- keepEmit: pressed.keepEmit,
69
- attrs: Object.keys(pressed.attrs).map((name) => ({
70
- name,
71
- value: pressed.attrs[name],
72
- })),
73
- });
74
- }
75
- if (released !== undefined) {
76
- acc.push({
77
- key: inputEvent,
78
- eventType: released.eventType,
79
- pressed: false,
80
- attrs: Object.keys(released.attrs).map((name) => ({
81
- name,
82
- value: released.attrs[name],
83
- })),
84
- });
85
- }
86
- return acc;
87
- }, []),
88
- });
89
- }
90
59
  }
91
60
  KeyboardControl.componentName = 'KeyboardControl';
@@ -1,5 +1,6 @@
1
1
  import type { Mesh as PixiMesh } from 'pixi.js';
2
2
  import { Component } from '../../../engine/component';
3
+ import type { Point } from '../../../engine/math-lib';
3
4
  import { type BlendingMode } from '../../types/view';
4
5
  interface RenderData {
5
6
  view: PixiMesh;
@@ -19,7 +20,8 @@ export interface MeshConfig {
19
20
  flipX: boolean;
20
21
  flipY: boolean;
21
22
  sortingLayer: string;
22
- sortCenter: [number, number];
23
+ sortOffsetX: number;
24
+ sortOffsetY: number;
23
25
  color: string;
24
26
  blending: BlendingMode;
25
27
  opacity: number;
@@ -46,7 +48,8 @@ export interface MeshConfig {
46
48
  * flipX: false,
47
49
  * flipY: false,
48
50
  * sortingLayer: 'units',
49
- * sortCenter: [0, 0],
51
+ * sortOffsetX: 0,
52
+ * sortOffsetY: 0,
50
53
  * color: '#ffffff',
51
54
  * blending: 'normal',
52
55
  * opacity: 1,
@@ -84,7 +87,7 @@ export declare class Mesh extends Component {
84
87
  /** Sorting layer name for rendering order */
85
88
  sortingLayer: string;
86
89
  /** Center point for sorting calculations */
87
- sortCenter: [number, number];
90
+ sortOffset: Point;
88
91
  /** Current frame to render */
89
92
  currentFrame: number;
90
93
  /** Color tint applied to the mesh */
@@ -103,5 +106,4 @@ export declare class Mesh extends Component {
103
106
  * @param config - Configuration for the sprite
104
107
  */
105
108
  constructor(config: MeshConfig);
106
- clone(): Mesh;
107
109
  }
@@ -19,7 +19,8 @@ import { Component } from '../../../engine/component';
19
19
  * flipX: false,
20
20
  * flipY: false,
21
21
  * sortingLayer: 'units',
22
- * sortCenter: [0, 0],
22
+ * sortOffsetX: 0,
23
+ * sortOffsetY: 0,
23
24
  * color: '#ffffff',
24
25
  * blending: 'normal',
25
26
  * opacity: 1,
@@ -57,7 +58,7 @@ export class Mesh extends Component {
57
58
  /** Sorting layer name for rendering order */
58
59
  sortingLayer;
59
60
  /** Center point for sorting calculations */
60
- sortCenter;
61
+ sortOffset;
61
62
  /** Current frame to render */
62
63
  currentFrame;
63
64
  /** Color tint applied to the mesh */
@@ -86,30 +87,13 @@ export class Mesh extends Component {
86
87
  this.flipY = config.flipY;
87
88
  this.disabled = config.disabled;
88
89
  this.sortingLayer = config.sortingLayer;
89
- this.sortCenter = config.sortCenter;
90
+ this.sortOffset = { x: config.sortOffsetX, y: config.sortOffsetY };
90
91
  this.color = config.color ?? '#ffffff';
91
92
  this.blending = config.blending ?? 'normal';
92
93
  this.opacity = config.opacity ?? 1;
93
- this.material = config.material;
94
- }
95
- clone() {
96
- return new Mesh({
97
- src: this.src,
98
- width: this.width,
99
- height: this.height,
100
- slice: this.slice,
101
- flipX: this.flipX,
102
- flipY: this.flipY,
103
- disabled: this.disabled,
104
- sortingLayer: this.sortingLayer,
105
- sortCenter: this.sortCenter.slice(0),
106
- color: this.color,
107
- blending: this.blending,
108
- opacity: this.opacity,
109
- material: this.material
110
- ? { name: this.material.name, options: { ...this.material.options } }
111
- : undefined,
112
- });
94
+ this.material = config.material
95
+ ? { name: config.material.name, options: { ...config.material.options } }
96
+ : undefined;
113
97
  }
114
98
  }
115
99
  Mesh.componentName = 'Mesh';
@@ -67,5 +67,4 @@ export declare class MouseControl extends Component {
67
67
  * @param config - Configuration for the mouse control
68
68
  */
69
69
  constructor(config: MouseControlConfig);
70
- clone(): MouseControl;
71
70
  }
@@ -76,24 +76,5 @@ export class MouseControl extends Component {
76
76
  return acc;
77
77
  }, {});
78
78
  }
79
- clone() {
80
- return new MouseControl({
81
- inputEventBindings: Object.keys(this.inputEventBindings).reduce((acc, inputEvent) => {
82
- const buttonBinds = this.inputEventBindings[inputEvent];
83
- Object.keys(buttonBinds).forEach((button) => {
84
- acc.push({
85
- event: inputEvent,
86
- button: Number(button),
87
- eventType: buttonBinds[button].eventType,
88
- attrs: Object.keys(buttonBinds[button].attrs).map((name) => ({
89
- name,
90
- value: buttonBinds[button].attrs[name],
91
- })),
92
- });
93
- });
94
- return acc;
95
- }, []),
96
- });
97
- }
98
79
  }
99
80
  MouseControl.componentName = 'MouseControl';
@@ -1,12 +1,14 @@
1
1
  import type { ViewContainer } from 'pixi.js';
2
2
  import { Component } from '../../../engine/component';
3
+ import type { Point } from '../../../engine/math-lib';
3
4
  interface RenderData {
4
5
  view: ViewContainer;
5
6
  }
6
7
  export interface PixiViewConfig {
7
8
  createView: () => ViewContainer;
8
9
  sortingLayer: string;
9
- sortCenter: [number, number];
10
+ sortOffsetX: number;
11
+ sortOffsetY: number;
10
12
  }
11
13
  /**
12
14
  * PixiView component for rendering a view.
@@ -27,7 +29,8 @@ export interface PixiViewConfig {
27
29
  * return graphics;
28
30
  * },
29
31
  * sortingLayer: 'units',
30
- * sortCenter: [0, 0],
32
+ * sortOffsetX: 0,
33
+ * sortOffsetY: 0,
31
34
  * });
32
35
  *
33
36
  * // Add to actor
@@ -42,7 +45,7 @@ export declare class PixiView extends Component {
42
45
  /** Sorting layer of the pixi view */
43
46
  sortingLayer: string;
44
47
  /** Center point of the pixi view */
45
- sortCenter: [number, number];
48
+ sortOffset: Point;
46
49
  /** Internal rendering data */
47
50
  renderData?: RenderData;
48
51
  /**
@@ -53,6 +56,5 @@ export declare class PixiView extends Component {
53
56
  constructor(config: PixiViewConfig);
54
57
  /** Get the pixi.js view. It's only available after the actor with this component is added to a scene */
55
58
  get view(): ViewContainer | undefined;
56
- clone(): PixiView;
57
59
  }
58
60
  export {};