dacha 0.17.0 → 0.17.2

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 (44) hide show
  1. package/build/contrib/components/index.d.ts +11 -20
  2. package/build/contrib/components/index.js +2 -1
  3. package/build/contrib/components/mesh/index.d.ts +107 -0
  4. package/build/contrib/components/mesh/index.js +115 -0
  5. package/build/contrib/systems/behavior-system/system.js +1 -1
  6. package/build/contrib/systems/index.d.ts +1 -1
  7. package/build/contrib/systems/index.js +1 -1
  8. package/build/contrib/systems/renderer/actor-render-tree.d.ts +5 -3
  9. package/build/contrib/systems/renderer/actor-render-tree.js +4 -2
  10. package/build/contrib/systems/renderer/assets/index.d.ts +3 -1
  11. package/build/contrib/systems/renderer/assets/index.js +21 -24
  12. package/build/contrib/systems/renderer/assets/utils.js +5 -0
  13. package/build/contrib/systems/renderer/builders/index.d.ts +1 -0
  14. package/build/contrib/systems/renderer/builders/index.js +1 -0
  15. package/build/contrib/systems/renderer/builders/mesh-builder/consts.d.ts +2 -0
  16. package/build/contrib/systems/renderer/builders/mesh-builder/consts.js +2 -0
  17. package/build/contrib/systems/renderer/builders/mesh-builder/index.d.ts +22 -0
  18. package/build/contrib/systems/renderer/builders/mesh-builder/index.js +114 -0
  19. package/build/contrib/systems/renderer/builders/sprite-builder/index.d.ts +1 -4
  20. package/build/contrib/systems/renderer/builders/sprite-builder/index.js +7 -56
  21. package/build/contrib/systems/renderer/builders/texture-array-store/index.d.ts +13 -0
  22. package/build/contrib/systems/renderer/builders/texture-array-store/index.js +61 -0
  23. package/build/contrib/systems/renderer/builders/{sprite-builder → texture-array-store}/utils.d.ts +3 -2
  24. package/build/contrib/systems/renderer/builders/{sprite-builder → texture-array-store}/utils.js +3 -3
  25. package/build/contrib/systems/renderer/consts.js +2 -0
  26. package/build/contrib/systems/renderer/filters/filter-effect.d.ts +14 -0
  27. package/build/contrib/systems/renderer/filters/filter-effect.js +3 -0
  28. package/build/contrib/systems/renderer/filters/index.d.ts +21 -0
  29. package/build/contrib/systems/renderer/filters/index.js +64 -0
  30. package/build/contrib/systems/renderer/index.d.ts +2 -0
  31. package/build/contrib/systems/renderer/index.js +2 -0
  32. package/build/contrib/systems/renderer/material/consts.d.ts +2 -0
  33. package/build/contrib/systems/renderer/material/consts.js +36 -0
  34. package/build/contrib/systems/renderer/material/index.d.ts +20 -0
  35. package/build/contrib/systems/renderer/material/index.js +94 -0
  36. package/build/contrib/systems/renderer/material/shader.d.ts +25 -0
  37. package/build/contrib/systems/renderer/material/shader.js +3 -0
  38. package/build/contrib/systems/renderer/renderer.d.ts +6 -2
  39. package/build/contrib/systems/renderer/renderer.js +27 -3
  40. package/build/contrib/systems/renderer/service/index.d.ts +38 -1
  41. package/build/contrib/systems/renderer/service/index.js +44 -1
  42. package/build/contrib/systems/renderer/types.d.ts +10 -0
  43. package/build/types/global.d.ts +12 -0
  44. package/package.json +3 -3
@@ -2,11 +2,17 @@ import { type ViewContainer, type Application, type Container } from 'pixi.js';
2
2
  import { type Actor } from '../../../../engine/actor';
3
3
  import { type SortFn } from '../sort';
4
4
  import { type Bounds } from '../types';
5
+ import type { FilterSystem } from '../filters';
6
+ import type { FilterEffectConfig } from '../filters/filter-effect';
7
+ import type { MaterialSystem } from '../material';
8
+ import type { ShaderConstructor } from '../material/shader';
5
9
  interface RendererServiceOptions {
6
10
  application: Application;
7
11
  worldContainer: Container;
8
12
  getViewEntries: () => Set<ViewContainer> | undefined;
9
13
  sortFn: SortFn;
14
+ filterSystem: FilterSystem;
15
+ materialSystem: MaterialSystem;
10
16
  }
11
17
  /**
12
18
  * Service that provides rendering utilities and view management
@@ -21,7 +27,9 @@ export declare class RendererService {
21
27
  private worldContainer;
22
28
  private getViewEntries;
23
29
  private sortFn;
24
- constructor({ application, worldContainer, getViewEntries, sortFn, }: RendererServiceOptions);
30
+ private filterSystem;
31
+ private materialSystem;
32
+ constructor({ application, worldContainer, getViewEntries, sortFn, filterSystem, materialSystem, }: RendererServiceOptions);
25
33
  /**
26
34
  * Returns the underlying PIXI.js application
27
35
  *
@@ -56,5 +64,34 @@ export declare class RendererService {
56
64
  * @returns Bounds of the actor
57
65
  */
58
66
  getBounds(actor: Actor): Bounds;
67
+ /**
68
+ * Adds a post-processing effect that applies to the entire scene.
69
+ * Effects are applied in the order they are added.
70
+ *
71
+ * @param config - Filter effect config with name and options
72
+ */
73
+ addFilterEffect(config: FilterEffectConfig): void;
74
+ /**
75
+ * Removes a filter effect by config object reference.
76
+ *
77
+ * @param config - Same config object passed to addFilterEffect
78
+ */
79
+ removeFilterEffect(config: FilterEffectConfig): void;
80
+ /**
81
+ * Clears all active filter effects.
82
+ */
83
+ clearFilterEffects(): void;
84
+ /**
85
+ * Returns the current filter effect configs in the order they were added.
86
+ *
87
+ * @returns Effect config objects
88
+ */
89
+ getFilterEffects(): FilterEffectConfig[];
90
+ /**
91
+ * Reloads shader classes registered in the renderer.
92
+ *
93
+ * @param classDenfinitions - Shader constructors to register
94
+ */
95
+ reloadShaders(classDenfinitions: ShaderConstructor[]): void;
59
96
  }
60
97
  export {};
@@ -14,11 +14,15 @@ export class RendererService {
14
14
  worldContainer;
15
15
  getViewEntries;
16
16
  sortFn;
17
- constructor({ application, worldContainer, getViewEntries, sortFn, }) {
17
+ filterSystem;
18
+ materialSystem;
19
+ constructor({ application, worldContainer, getViewEntries, sortFn, filterSystem, materialSystem, }) {
18
20
  this.application = application;
19
21
  this.worldContainer = worldContainer;
20
22
  this.getViewEntries = getViewEntries;
21
23
  this.sortFn = sortFn;
24
+ this.filterSystem = filterSystem;
25
+ this.materialSystem = materialSystem;
22
26
  }
23
27
  /**
24
28
  * Returns the underlying PIXI.js application
@@ -116,4 +120,43 @@ export class RendererService {
116
120
  height: maxY - minY,
117
121
  };
118
122
  }
123
+ /**
124
+ * Adds a post-processing effect that applies to the entire scene.
125
+ * Effects are applied in the order they are added.
126
+ *
127
+ * @param config - Filter effect config with name and options
128
+ */
129
+ addFilterEffect(config) {
130
+ this.filterSystem.addEffect(config);
131
+ }
132
+ /**
133
+ * Removes a filter effect by config object reference.
134
+ *
135
+ * @param config - Same config object passed to addFilterEffect
136
+ */
137
+ removeFilterEffect(config) {
138
+ this.filterSystem.removeEffect(config);
139
+ }
140
+ /**
141
+ * Clears all active filter effects.
142
+ */
143
+ clearFilterEffects() {
144
+ this.filterSystem.clear();
145
+ }
146
+ /**
147
+ * Returns the current filter effect configs in the order they were added.
148
+ *
149
+ * @returns Effect config objects
150
+ */
151
+ getFilterEffects() {
152
+ return this.filterSystem.getEffects();
153
+ }
154
+ /**
155
+ * Reloads shader classes registered in the renderer.
156
+ *
157
+ * @param classDenfinitions - Shader constructors to register
158
+ */
159
+ reloadShaders(classDenfinitions) {
160
+ this.materialSystem.reloadShaders(classDenfinitions);
161
+ }
119
162
  }
@@ -1,5 +1,7 @@
1
1
  import { type ViewContainer } from 'pixi.js';
2
2
  import type { Component } from '../../../engine/component';
3
+ import type { FilterEffectConstructor, FilterEffectConfig } from './filters/filter-effect';
4
+ import type { ShaderConstructor, ShaderUniformDefinitions, ShaderUniforms } from './material/shader';
3
5
  export interface SortingLayer {
4
6
  id: string;
5
7
  name: string;
@@ -22,3 +24,11 @@ export interface ViewComponent extends Component {
22
24
  view: ViewContainer;
23
25
  };
24
26
  }
27
+ export type { FilterEffectConstructor, FilterEffectConfig, ShaderConstructor, ShaderUniformDefinitions, ShaderUniforms, };
28
+ export interface RendererResources {
29
+ filterEffects?: FilterEffectConstructor[];
30
+ shaders?: ShaderConstructor[];
31
+ }
32
+ export interface Time {
33
+ elapsed: number;
34
+ }
@@ -25,4 +25,16 @@ declare module 'pixi.js' {
25
25
  meta: Record<string, unknown>;
26
26
  };
27
27
  }
28
+ interface Filter {
29
+ __dacha: {
30
+ version?: number;
31
+ meta: Record<string, unknown>;
32
+ };
33
+ }
34
+ interface Shader {
35
+ __dacha: {
36
+ version?: number;
37
+ meta: Record<string, unknown>;
38
+ };
39
+ }
28
40
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dacha",
3
- "version": "0.17.0",
3
+ "version": "0.17.2",
4
4
  "main": "./build/index.js",
5
5
  "types": "./build/index.d.ts",
6
6
  "exports": {
@@ -19,8 +19,8 @@
19
19
  }
20
20
  },
21
21
  "dependencies": {
22
- "pixi.js": "8.13.2",
23
- "uuid-random": "1.0.9"
22
+ "pixi.js": "8.15.0",
23
+ "uuid-random": "1.3.2"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@eslint/js": "9.31.0",