dacha 0.15.2 → 0.16.0
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/build/contrib/components/animatable/comparator-condition-component-value.d.ts +1 -1
- package/build/contrib/components/animatable/group-state.d.ts +1 -1
- package/build/contrib/components/animatable/index.d.ts +1 -1
- package/build/contrib/components/animatable/one-dimensional-props.d.ts +1 -1
- package/build/contrib/components/animatable/one-dimensional-props.js +1 -3
- package/build/contrib/components/animatable/state.d.ts +1 -1
- package/build/contrib/components/animatable/timeline.d.ts +2 -2
- package/build/contrib/components/animatable/transition.d.ts +1 -1
- package/build/contrib/components/animatable/two-dimensional-props.d.ts +1 -1
- package/build/contrib/components/animatable/two-dimensional-props.js +1 -3
- package/build/contrib/components/animatable/types.d.ts +9 -9
- package/build/contrib/components/bitmap-text/index.d.ts +36 -0
- package/build/contrib/components/bitmap-text/index.js +42 -0
- package/build/contrib/components/index.d.ts +3 -2
- package/build/contrib/components/index.js +3 -1
- package/build/contrib/components/keyboard-control/index.d.ts +6 -8
- package/build/contrib/components/keyboard-control/index.js +8 -2
- package/build/contrib/components/mouse-control/index.d.ts +3 -7
- package/build/contrib/components/mouse-control/index.js +4 -1
- package/build/contrib/components/pixi-view/index.d.ts +20 -0
- package/build/contrib/components/pixi-view/index.js +24 -0
- package/build/contrib/components/shape/index.d.ts +64 -0
- package/build/contrib/components/shape/index.js +60 -0
- package/build/contrib/components/sprite/index.d.ts +17 -6
- package/build/contrib/components/sprite/index.js +10 -4
- package/build/contrib/systems/animator/index.d.ts +1 -1
- package/build/contrib/systems/animator/index.js +9 -9
- package/build/contrib/systems/animator/substate-pickers/index.d.ts +2 -3
- package/build/contrib/systems/animator/substate-pickers/one-dimensional-picker.d.ts +1 -1
- package/build/contrib/systems/animator/substate-pickers/picker.d.ts +1 -1
- package/build/contrib/systems/animator/substate-pickers/two-dimensional-picker.d.ts +1 -1
- package/build/contrib/systems/animator/utils.d.ts +2 -2
- package/build/contrib/systems/animator/utils.js +0 -1
- package/build/contrib/systems/audio-system/index.d.ts +1 -1
- package/build/contrib/systems/audio-system/index.js +20 -18
- package/build/contrib/systems/audio-system/types.d.ts +6 -6
- package/build/contrib/systems/behavior-system/system.d.ts +2 -0
- package/build/contrib/systems/behavior-system/system.js +18 -5
- package/build/contrib/systems/camera-system/system.d.ts +1 -1
- package/build/contrib/systems/camera-system/system.js +16 -10
- package/build/contrib/systems/game-stats-meter/index.d.ts +1 -1
- package/build/contrib/systems/game-stats-meter/index.js +6 -6
- package/build/contrib/systems/index.d.ts +2 -2
- package/build/contrib/systems/index.js +1 -1
- package/build/contrib/systems/keyboard-control-system/index.d.ts +1 -1
- package/build/contrib/systems/keyboard-control-system/index.js +5 -7
- package/build/contrib/systems/keyboard-input-system/input-listener.d.ts +1 -1
- package/build/contrib/systems/mouse-control-system/index.d.ts +1 -1
- package/build/contrib/systems/mouse-control-system/index.js +5 -7
- package/build/contrib/systems/mouse-input-system/subsystems/input-subsystem/mouse-input-listener.d.ts +1 -1
- package/build/contrib/systems/physics-system/subsystems/collision-detection/index.d.ts +1 -1
- package/build/contrib/systems/physics-system/subsystems/collision-detection/index.js +17 -16
- package/build/contrib/systems/physics-system/subsystems/collision-detection/types.d.ts +9 -9
- package/build/contrib/systems/physics-system/subsystems/collision-detection/types.js +3 -0
- package/build/contrib/systems/physics-system/subsystems/constraint-solver/index.d.ts +0 -1
- package/build/contrib/systems/physics-system/subsystems/constraint-solver/index.js +46 -59
- package/build/contrib/systems/physics-system/subsystems/physics/index.d.ts +1 -1
- package/build/contrib/systems/physics-system/subsystems/physics/index.js +10 -14
- package/build/contrib/systems/renderer/builders/bitmap-text-builder/index.d.ts +8 -0
- package/build/contrib/systems/renderer/builders/bitmap-text-builder/index.js +115 -0
- package/build/contrib/systems/renderer/builders/bitmap-text-builder/utils.d.ts +2 -0
- package/build/contrib/systems/renderer/builders/bitmap-text-builder/utils.js +7 -0
- package/build/contrib/systems/renderer/builders/builder.d.ts +7 -0
- package/build/contrib/systems/renderer/builders/index.d.ts +5 -0
- package/build/contrib/systems/renderer/builders/index.js +4 -0
- package/build/contrib/systems/renderer/builders/pixi-view-builder/index.d.ts +8 -0
- package/build/contrib/systems/renderer/builders/pixi-view-builder/index.js +31 -0
- package/build/contrib/systems/renderer/builders/shape-builder/index.d.ts +12 -0
- package/build/contrib/systems/renderer/builders/shape-builder/index.js +128 -0
- package/build/contrib/systems/renderer/builders/shape-builder/utils.d.ts +4 -0
- package/build/contrib/systems/renderer/builders/shape-builder/utils.js +85 -0
- package/build/contrib/systems/renderer/builders/sprite-builder/index.d.ts +19 -0
- package/build/contrib/systems/renderer/builders/sprite-builder/index.js +166 -0
- package/build/contrib/systems/renderer/builders/sprite-builder/utils.d.ts +4 -0
- package/build/contrib/systems/renderer/builders/sprite-builder/utils.js +16 -0
- package/build/contrib/systems/renderer/builders/utils.d.ts +1 -0
- package/build/contrib/systems/renderer/builders/utils.js +4 -0
- package/build/contrib/systems/renderer/consts.d.ts +5 -0
- package/build/contrib/systems/renderer/consts.js +12 -0
- package/build/contrib/systems/renderer/index.d.ts +2 -0
- package/build/contrib/systems/renderer/index.js +2 -0
- package/build/contrib/systems/renderer/renderer.d.ts +31 -0
- package/build/contrib/systems/renderer/renderer.js +249 -0
- package/build/contrib/systems/renderer/service/index.d.ts +20 -0
- package/build/contrib/systems/renderer/service/index.js +70 -0
- package/build/contrib/systems/{sprite-renderer → renderer}/sort/index.d.ts +1 -3
- package/build/contrib/systems/{sprite-renderer → renderer}/sort/index.js +2 -4
- package/build/contrib/systems/renderer/sort/sort-by-layer.d.ts +2 -0
- package/build/contrib/systems/renderer/sort/sort-by-layer.js +13 -0
- package/build/contrib/systems/renderer/sort/sort-by-x-axis.d.ts +2 -0
- package/build/contrib/systems/renderer/sort/sort-by-x-axis.js +9 -0
- package/build/contrib/systems/renderer/sort/sort-by-y-axis.d.ts +2 -0
- package/build/contrib/systems/renderer/sort/sort-by-y-axis.js +9 -0
- package/build/contrib/systems/renderer/sort/types.d.ts +2 -0
- package/build/contrib/systems/{sprite-renderer → renderer}/sort/utils.d.ts +1 -1
- package/build/contrib/systems/renderer/types.d.ts +26 -0
- package/build/contrib/systems/renderer/types.js +1 -0
- package/build/contrib/systems/renderer/utils.d.ts +5 -0
- package/build/contrib/systems/renderer/utils.js +42 -0
- package/build/contrib/types/input-events.d.ts +1 -1
- package/build/contrib/types/view.d.ts +1 -0
- package/build/contrib/types/view.js +1 -0
- package/build/engine/actor/actor-collection.d.ts +4 -1
- package/build/engine/actor/actor-collection.js +4 -1
- package/build/engine/actor/actor-creator.d.ts +3 -3
- package/build/engine/actor/actor-query.d.ts +29 -0
- package/build/engine/actor/actor-query.js +85 -0
- package/build/engine/actor/actor.d.ts +3 -4
- package/build/engine/actor/index.d.ts +2 -0
- package/build/engine/actor/index.js +1 -0
- package/build/engine/component/component.d.ts +2 -2
- package/build/engine/data-lib/cache-store.d.ts +2 -1
- package/build/engine/data-lib/cache-store.js +7 -1
- package/build/engine/engine.d.ts +28 -6
- package/build/engine/engine.js +35 -27
- package/build/engine/entity/entity.d.ts +1 -1
- package/build/engine/event-target/event-target.d.ts +1 -1
- package/build/engine/math-lib/vector/ops.d.ts +4 -4
- package/build/engine/math-lib/vector/ops.js +2 -3
- package/build/engine/resource-loader/loaders/image-loader.d.ts +1 -1
- package/build/engine/resource-loader/loaders/index.d.ts +2 -3
- package/build/engine/resource-loader/loaders/json-loader.d.ts +1 -1
- package/build/engine/resource-loader/loaders/loader.d.ts +1 -1
- package/build/engine/scene/scene-manager.js +7 -1
- package/build/engine/template/template-collection.d.ts +2 -2
- package/build/engine/template/template.d.ts +2 -2
- package/build/index.d.ts +2 -2
- package/build/index.js +1 -1
- package/build/types/global.d.ts +20 -0
- package/package.json +13 -10
- package/build/contrib/components/light/index.d.ts +0 -20
- package/build/contrib/components/light/index.js +0 -18
- package/build/contrib/components/renderable/index.d.ts +0 -44
- package/build/contrib/components/renderable/index.js +0 -65
- package/build/contrib/components/renderable/material.d.ts +0 -16
- package/build/contrib/components/renderable/material.js +0 -8
- package/build/contrib/components/sprite/material.d.ts +0 -16
- package/build/contrib/components/sprite/material.js +0 -8
- package/build/contrib/systems/sprite-renderer/index.d.ts +0 -2
- package/build/contrib/systems/sprite-renderer/index.js +0 -2
- package/build/contrib/systems/sprite-renderer/light-subsystem/index.d.ts +0 -13
- package/build/contrib/systems/sprite-renderer/light-subsystem/index.js +0 -62
- package/build/contrib/systems/sprite-renderer/light-subsystem/light-factory.d.ts +0 -4
- package/build/contrib/systems/sprite-renderer/light-subsystem/light-factory.js +0 -27
- package/build/contrib/systems/sprite-renderer/material-factory/index.d.ts +0 -4
- package/build/contrib/systems/sprite-renderer/material-factory/index.js +0 -32
- package/build/contrib/systems/sprite-renderer/renderer.d.ts +0 -36
- package/build/contrib/systems/sprite-renderer/renderer.js +0 -249
- package/build/contrib/systems/sprite-renderer/service/index.d.ts +0 -24
- package/build/contrib/systems/sprite-renderer/service/index.js +0 -52
- package/build/contrib/systems/sprite-renderer/sort/sort-by-fit.d.ts +0 -2
- package/build/contrib/systems/sprite-renderer/sort/sort-by-fit.js +0 -12
- package/build/contrib/systems/sprite-renderer/sort/sort-by-layer.d.ts +0 -2
- package/build/contrib/systems/sprite-renderer/sort/sort-by-layer.js +0 -14
- package/build/contrib/systems/sprite-renderer/sort/sort-by-x-axis.d.ts +0 -2
- package/build/contrib/systems/sprite-renderer/sort/sort-by-x-axis.js +0 -15
- package/build/contrib/systems/sprite-renderer/sort/sort-by-y-axis.d.ts +0 -2
- package/build/contrib/systems/sprite-renderer/sort/sort-by-y-axis.js +0 -15
- package/build/contrib/systems/sprite-renderer/sort/sort-by-z-axis.d.ts +0 -2
- package/build/contrib/systems/sprite-renderer/sort/sort-by-z-axis.js +0 -6
- package/build/contrib/systems/sprite-renderer/sort/types.d.ts +0 -2
- package/build/contrib/systems/sprite-renderer/sprite-cropper.d.ts +0 -8
- package/build/contrib/systems/sprite-renderer/sprite-cropper.js +0 -30
- package/build/contrib/systems/sprite-renderer/types.d.ts +0 -7
- package/build/contrib/systems/sprite-renderer/utils.d.ts +0 -9
- package/build/contrib/systems/sprite-renderer/utils.js +0 -47
- /package/build/contrib/systems/{sprite-renderer/sort/types.js → renderer/builders/builder.js} +0 -0
- /package/build/contrib/systems/{sprite-renderer → renderer/sort}/types.js +0 -0
- /package/build/contrib/systems/{sprite-renderer → renderer}/sort/utils.js +0 -0
|
@@ -4,10 +4,10 @@ import { Template } from './template';
|
|
|
4
4
|
export declare class TemplateCollection {
|
|
5
5
|
private components;
|
|
6
6
|
private storage;
|
|
7
|
-
constructor(components:
|
|
7
|
+
constructor(components: ComponentConstructor[]);
|
|
8
8
|
private buildTemplate;
|
|
9
9
|
register(options: TemplateConfig): void;
|
|
10
10
|
get(id: string): Template;
|
|
11
|
-
getAll():
|
|
11
|
+
getAll(): Template[];
|
|
12
12
|
delete(id: string): void;
|
|
13
13
|
}
|
|
@@ -3,7 +3,7 @@ import { Entity } from '../entity';
|
|
|
3
3
|
import type { EntityOptions } from '../entity';
|
|
4
4
|
export declare class Template extends Entity {
|
|
5
5
|
private components;
|
|
6
|
-
readonly children:
|
|
6
|
+
readonly children: Template[];
|
|
7
7
|
parent: Template | null;
|
|
8
8
|
constructor(options: EntityOptions);
|
|
9
9
|
appendChild(child: Template): void;
|
|
@@ -13,6 +13,6 @@ export declare class Template extends Entity {
|
|
|
13
13
|
findChildByName(name: string, recursive?: boolean): Template | undefined;
|
|
14
14
|
setComponent(component: Component): void;
|
|
15
15
|
getComponent<T extends Component>(componentClass: ComponentConstructor<T>): T;
|
|
16
|
-
getComponents():
|
|
16
|
+
getComponents(): Component[];
|
|
17
17
|
clone(): Template;
|
|
18
18
|
}
|
package/build/index.d.ts
CHANGED
|
@@ -5,12 +5,12 @@ export * from './engine/consts';
|
|
|
5
5
|
export * from './engine/types';
|
|
6
6
|
export { WorldSystem, SceneSystem } from './engine/system';
|
|
7
7
|
export type { System, WorldSystemOptions, SceneSystemOptions, UpdateOptions, } from './engine/system';
|
|
8
|
-
export type { ActorCollectionFilter, ActorSpawner, } from './engine/actor';
|
|
8
|
+
export type { ActorCollectionFilter, ActorSpawner, ActorQueryFilter, } from './engine/actor';
|
|
9
9
|
export type { EventTarget, Event, EventType, EventPayload, ListenerFn, } from './engine/event-target';
|
|
10
10
|
export type { Scene } from './engine/scene';
|
|
11
11
|
export type { World } from './engine/world';
|
|
12
12
|
export * as Animation from './contrib/components/animatable/types';
|
|
13
|
-
export { Actor, ActorCollection, ActorCreator } from './engine/actor';
|
|
13
|
+
export { Actor, ActorCollection, ActorCreator, ActorQuery, } from './engine/actor';
|
|
14
14
|
export { TemplateCollection } from './engine/template';
|
|
15
15
|
export * from './types/events';
|
|
16
16
|
export * from './contrib/systems';
|
package/build/index.js
CHANGED
|
@@ -5,7 +5,7 @@ export * from './engine/consts';
|
|
|
5
5
|
export * from './engine/types';
|
|
6
6
|
export { WorldSystem, SceneSystem } from './engine/system';
|
|
7
7
|
export * as Animation from './contrib/components/animatable/types';
|
|
8
|
-
export { Actor, ActorCollection, ActorCreator } from './engine/actor';
|
|
8
|
+
export { Actor, ActorCollection, ActorCreator, ActorQuery, } from './engine/actor';
|
|
9
9
|
export { TemplateCollection } from './engine/template';
|
|
10
10
|
export * from './types/events';
|
|
11
11
|
export * from './contrib/systems';
|
package/build/types/global.d.ts
CHANGED
|
@@ -1,2 +1,22 @@
|
|
|
1
|
+
import { type Bounds } from 'pixi.js';
|
|
1
2
|
import '../engine/events';
|
|
2
3
|
import '../contrib/events';
|
|
4
|
+
import { type Actor } from '../engine/actor';
|
|
5
|
+
declare module 'pixi.js' {
|
|
6
|
+
interface ViewContainer {
|
|
7
|
+
/**
|
|
8
|
+
* Custom property to store engine specific data and link pixi.js view with Actor
|
|
9
|
+
*/
|
|
10
|
+
__dacha: {
|
|
11
|
+
actor: Actor;
|
|
12
|
+
builderKey: string;
|
|
13
|
+
viewComponent: {
|
|
14
|
+
sortingLayer: string;
|
|
15
|
+
sortCenter: [number, number];
|
|
16
|
+
};
|
|
17
|
+
bounds: Bounds;
|
|
18
|
+
meta: Record<string, unknown>;
|
|
19
|
+
didChange: boolean;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dacha",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"main": "./build/index.js",
|
|
5
5
|
"types": "./build/index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -13,25 +13,28 @@
|
|
|
13
13
|
"require": "./build/events/index.js",
|
|
14
14
|
"import": "./build/events/index.js",
|
|
15
15
|
"types": "./build/events/index.d.ts"
|
|
16
|
+
},
|
|
17
|
+
"./renderer": {
|
|
18
|
+
"types": "./build/contrib/systems/renderer/types.d.ts"
|
|
16
19
|
}
|
|
17
20
|
},
|
|
18
21
|
"dependencies": {
|
|
19
|
-
"
|
|
22
|
+
"pixi.js": "8.13.2",
|
|
20
23
|
"uuid-random": "1.0.9"
|
|
21
24
|
},
|
|
22
25
|
"devDependencies": {
|
|
26
|
+
"@eslint/js": "9.31.0",
|
|
23
27
|
"@types/jest": "29.5.11",
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"eslint-config-airbnb-typescript": "17.1.0",
|
|
29
|
-
"eslint-import-resolver-typescript": "3.6.1",
|
|
30
|
-
"eslint-plugin-import": "2.27.5",
|
|
28
|
+
"eslint": "9.31.0",
|
|
29
|
+
"eslint-config-prettier": "10.1.5",
|
|
30
|
+
"eslint-plugin-import": "2.32.0",
|
|
31
|
+
"globals": "^16.3.0",
|
|
31
32
|
"husky": "7.0.4",
|
|
32
33
|
"jest": "29.7.0",
|
|
34
|
+
"prettier": "3.6.2",
|
|
33
35
|
"ts-jest": "29.1.1",
|
|
34
|
-
"typescript": "5.3.3"
|
|
36
|
+
"typescript": "5.3.3",
|
|
37
|
+
"typescript-eslint": "8.37.0"
|
|
35
38
|
},
|
|
36
39
|
"sideEffects": false,
|
|
37
40
|
"files": [
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Component } from '../../../engine/component';
|
|
2
|
-
export interface BaseLightOptions {
|
|
3
|
-
color: string;
|
|
4
|
-
intensity: number;
|
|
5
|
-
}
|
|
6
|
-
export interface PointLightOptions extends BaseLightOptions {
|
|
7
|
-
distance: number;
|
|
8
|
-
}
|
|
9
|
-
export type LightType = 'ambient' | 'point';
|
|
10
|
-
export type LightOptions = BaseLightOptions | PointLightOptions;
|
|
11
|
-
export interface LightConfig {
|
|
12
|
-
type: LightType;
|
|
13
|
-
options: BaseLightOptions | PointLightOptions;
|
|
14
|
-
}
|
|
15
|
-
export declare class Light extends Component {
|
|
16
|
-
type: LightType;
|
|
17
|
-
options: BaseLightOptions | PointLightOptions;
|
|
18
|
-
constructor(config: LightConfig);
|
|
19
|
-
clone(): Light;
|
|
20
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Component } from '../../../engine/component';
|
|
2
|
-
export class Light extends Component {
|
|
3
|
-
type;
|
|
4
|
-
options;
|
|
5
|
-
constructor(config) {
|
|
6
|
-
super();
|
|
7
|
-
const lightConfig = config;
|
|
8
|
-
this.type = lightConfig.type;
|
|
9
|
-
this.options = { ...lightConfig.options };
|
|
10
|
-
}
|
|
11
|
-
clone() {
|
|
12
|
-
return new Light({
|
|
13
|
-
type: this.type,
|
|
14
|
-
options: this.options,
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
Light.componentName = 'Light';
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { Component } from '../../../engine/component';
|
|
2
|
-
import { Material, MaterialConfig } from './material';
|
|
3
|
-
type RenderableType = 'sprite' | 'static';
|
|
4
|
-
type FitType = 'stretch' | 'repeat';
|
|
5
|
-
export type { MaterialType, BasicMaterialOptions, BlendingMode } from './material';
|
|
6
|
-
export interface RenderableConfig {
|
|
7
|
-
src: string;
|
|
8
|
-
width: number;
|
|
9
|
-
height: number;
|
|
10
|
-
type: RenderableType;
|
|
11
|
-
slice?: number;
|
|
12
|
-
spacing: number;
|
|
13
|
-
extruding: number;
|
|
14
|
-
rotation: number;
|
|
15
|
-
flipX: boolean;
|
|
16
|
-
flipY: boolean;
|
|
17
|
-
disabled: boolean;
|
|
18
|
-
sortingLayer: string;
|
|
19
|
-
sortCenter: [number, number];
|
|
20
|
-
fit: FitType;
|
|
21
|
-
material: MaterialConfig;
|
|
22
|
-
}
|
|
23
|
-
export declare class Renderable extends Component {
|
|
24
|
-
private _slice?;
|
|
25
|
-
src: string;
|
|
26
|
-
width: number;
|
|
27
|
-
height: number;
|
|
28
|
-
type: RenderableType;
|
|
29
|
-
spacing: number;
|
|
30
|
-
extruding: number;
|
|
31
|
-
rotation: number;
|
|
32
|
-
flipX: boolean;
|
|
33
|
-
flipY: boolean;
|
|
34
|
-
disabled: boolean;
|
|
35
|
-
sortingLayer: string;
|
|
36
|
-
sortCenter: [number, number];
|
|
37
|
-
currentFrame?: number;
|
|
38
|
-
fit: FitType;
|
|
39
|
-
material: Material;
|
|
40
|
-
constructor(config: RenderableConfig);
|
|
41
|
-
get slice(): number;
|
|
42
|
-
set slice(value: number);
|
|
43
|
-
clone(): Renderable;
|
|
44
|
-
}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { Component } from '../../../engine/component';
|
|
2
|
-
import { Material } from './material';
|
|
3
|
-
export class Renderable extends Component {
|
|
4
|
-
_slice;
|
|
5
|
-
src;
|
|
6
|
-
width;
|
|
7
|
-
height;
|
|
8
|
-
type;
|
|
9
|
-
spacing;
|
|
10
|
-
extruding;
|
|
11
|
-
rotation;
|
|
12
|
-
flipX;
|
|
13
|
-
flipY;
|
|
14
|
-
disabled;
|
|
15
|
-
sortingLayer;
|
|
16
|
-
sortCenter;
|
|
17
|
-
currentFrame;
|
|
18
|
-
fit;
|
|
19
|
-
material;
|
|
20
|
-
constructor(config) {
|
|
21
|
-
super();
|
|
22
|
-
this.src = config.src;
|
|
23
|
-
this.width = config.width;
|
|
24
|
-
this.height = config.height;
|
|
25
|
-
this.type = config.type;
|
|
26
|
-
this._slice = config.slice;
|
|
27
|
-
this.spacing = config.spacing || 0;
|
|
28
|
-
this.extruding = config.extruding || 0;
|
|
29
|
-
this.currentFrame = config.type === 'sprite' ? 0 : void 0;
|
|
30
|
-
this.rotation = config.rotation;
|
|
31
|
-
this.flipX = config.flipX;
|
|
32
|
-
this.flipY = config.flipY;
|
|
33
|
-
this.disabled = config.disabled;
|
|
34
|
-
this.sortingLayer = config.sortingLayer;
|
|
35
|
-
this.sortCenter = config.sortCenter;
|
|
36
|
-
this.fit = config.fit;
|
|
37
|
-
this.material = new Material(config.material);
|
|
38
|
-
}
|
|
39
|
-
get slice() {
|
|
40
|
-
return this.type === 'sprite' ? (this._slice || 0) : 1;
|
|
41
|
-
}
|
|
42
|
-
set slice(value) {
|
|
43
|
-
this._slice = value;
|
|
44
|
-
}
|
|
45
|
-
clone() {
|
|
46
|
-
return new Renderable({
|
|
47
|
-
src: this.src,
|
|
48
|
-
width: this.width,
|
|
49
|
-
height: this.height,
|
|
50
|
-
type: this.type,
|
|
51
|
-
slice: this.slice,
|
|
52
|
-
spacing: this.spacing,
|
|
53
|
-
extruding: this.extruding,
|
|
54
|
-
rotation: this.rotation,
|
|
55
|
-
flipX: this.flipX,
|
|
56
|
-
flipY: this.flipY,
|
|
57
|
-
disabled: this.disabled,
|
|
58
|
-
sortingLayer: this.sortingLayer,
|
|
59
|
-
sortCenter: this.sortCenter.slice(0),
|
|
60
|
-
fit: this.fit,
|
|
61
|
-
material: this.material,
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
Renderable.componentName = 'Renderable';
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export type BlendingMode = 'normal' | 'addition' | 'substract' | 'multiply';
|
|
2
|
-
export interface BasicMaterialOptions {
|
|
3
|
-
color?: string;
|
|
4
|
-
blending?: BlendingMode;
|
|
5
|
-
opacity?: number;
|
|
6
|
-
}
|
|
7
|
-
export type MaterialType = 'lightsensitive' | 'basic';
|
|
8
|
-
export interface MaterialConfig {
|
|
9
|
-
type: MaterialType;
|
|
10
|
-
options?: BasicMaterialOptions;
|
|
11
|
-
}
|
|
12
|
-
export declare class Material {
|
|
13
|
-
type: MaterialType;
|
|
14
|
-
options: BasicMaterialOptions;
|
|
15
|
-
constructor(config: MaterialConfig);
|
|
16
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export type BlendingMode = 'normal' | 'addition' | 'substract' | 'multiply';
|
|
2
|
-
export interface BasicMaterialOptions {
|
|
3
|
-
color?: string;
|
|
4
|
-
blending?: BlendingMode;
|
|
5
|
-
opacity?: number;
|
|
6
|
-
}
|
|
7
|
-
export type MaterialType = 'lightsensitive' | 'basic';
|
|
8
|
-
export interface MaterialConfig {
|
|
9
|
-
type: MaterialType;
|
|
10
|
-
options?: BasicMaterialOptions;
|
|
11
|
-
}
|
|
12
|
-
export declare class Material {
|
|
13
|
-
type: MaterialType;
|
|
14
|
-
options: BasicMaterialOptions;
|
|
15
|
-
constructor(config: MaterialConfig);
|
|
16
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { Scene as ThreeJSScene } from 'three/src/Three';
|
|
2
|
-
import type { Scene } from '../../../../engine/scene';
|
|
3
|
-
export declare class LightSubsystem {
|
|
4
|
-
private renderScene;
|
|
5
|
-
private actorCollection?;
|
|
6
|
-
private lightsMap;
|
|
7
|
-
constructor(renderScene: ThreeJSScene);
|
|
8
|
-
onSceneEnter(scene: Scene): void;
|
|
9
|
-
onSceneExit(): void;
|
|
10
|
-
private handleActorRemove;
|
|
11
|
-
private setUpActor;
|
|
12
|
-
update(): void;
|
|
13
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { Light } from '../../../components/light';
|
|
2
|
-
import { Transform } from '../../../components/transform';
|
|
3
|
-
import { ActorCollection } from '../../../../engine/actor';
|
|
4
|
-
import { RemoveActor } from '../../../../engine/events';
|
|
5
|
-
import { createLight, updateLight } from './light-factory';
|
|
6
|
-
export class LightSubsystem {
|
|
7
|
-
renderScene;
|
|
8
|
-
actorCollection;
|
|
9
|
-
lightsMap;
|
|
10
|
-
constructor(renderScene) {
|
|
11
|
-
this.renderScene = renderScene;
|
|
12
|
-
this.lightsMap = new Map();
|
|
13
|
-
}
|
|
14
|
-
onSceneEnter(scene) {
|
|
15
|
-
this.actorCollection = new ActorCollection(scene, {
|
|
16
|
-
components: [
|
|
17
|
-
Light,
|
|
18
|
-
Transform,
|
|
19
|
-
],
|
|
20
|
-
});
|
|
21
|
-
this.actorCollection.addEventListener(RemoveActor, this.handleActorRemove);
|
|
22
|
-
}
|
|
23
|
-
onSceneExit() {
|
|
24
|
-
this.actorCollection?.removeEventListener(RemoveActor, this.handleActorRemove);
|
|
25
|
-
this.actorCollection = undefined;
|
|
26
|
-
this.lightsMap.clear();
|
|
27
|
-
}
|
|
28
|
-
handleActorRemove = (event) => {
|
|
29
|
-
const { actor } = event;
|
|
30
|
-
const objectId = this.lightsMap.get(actor.id);
|
|
31
|
-
if (objectId) {
|
|
32
|
-
const object = this.renderScene.getObjectById(objectId);
|
|
33
|
-
if (object) {
|
|
34
|
-
this.renderScene.remove(object);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
this.lightsMap.delete(actor.id);
|
|
38
|
-
};
|
|
39
|
-
setUpActor(actor) {
|
|
40
|
-
const { type } = actor.getComponent(Light);
|
|
41
|
-
const light = createLight(type);
|
|
42
|
-
light.userData.actor = actor;
|
|
43
|
-
this.lightsMap.set(actor.id, light.id);
|
|
44
|
-
this.renderScene.add(light);
|
|
45
|
-
}
|
|
46
|
-
update() {
|
|
47
|
-
this.actorCollection?.forEach((actor) => {
|
|
48
|
-
const transform = actor.getComponent(Transform);
|
|
49
|
-
const { type, options } = actor.getComponent(Light);
|
|
50
|
-
if (!this.lightsMap.has(actor.id)) {
|
|
51
|
-
this.setUpActor(actor);
|
|
52
|
-
}
|
|
53
|
-
const light = this.renderScene.getObjectById(this.lightsMap.get(actor.id));
|
|
54
|
-
if (!light) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
light.position.setX(transform.offsetX);
|
|
58
|
-
light.position.setY(transform.offsetY);
|
|
59
|
-
updateLight(type, light, options);
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { Light as ThreeJSLight } from 'three/src/Three';
|
|
2
|
-
import type { LightType, LightOptions } from '../../../components/light';
|
|
3
|
-
export declare const createLight: (type: LightType) => ThreeJSLight;
|
|
4
|
-
export declare const updateLight: (type: LightType, light: ThreeJSLight, options: LightOptions) => void;
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { AmbientLight, PointLight, Color, } from 'three/src/Three';
|
|
2
|
-
const updateAmbientLight = (light, options) => {
|
|
3
|
-
const { color, intensity } = options;
|
|
4
|
-
light.position.setZ(1);
|
|
5
|
-
light.color = new Color(color);
|
|
6
|
-
light.intensity = intensity;
|
|
7
|
-
};
|
|
8
|
-
const DISTANCE_FACTOR = 0.875;
|
|
9
|
-
const updatePointLight = (light, options) => {
|
|
10
|
-
const { color, intensity, distance } = options;
|
|
11
|
-
light.position.setZ(distance / 2);
|
|
12
|
-
light.color = new Color(color);
|
|
13
|
-
light.intensity = intensity;
|
|
14
|
-
light.distance = distance / DISTANCE_FACTOR;
|
|
15
|
-
};
|
|
16
|
-
const lightUpdateStrategyMap = {
|
|
17
|
-
ambient: updateAmbientLight,
|
|
18
|
-
point: updatePointLight,
|
|
19
|
-
};
|
|
20
|
-
const lightMap = {
|
|
21
|
-
ambient: AmbientLight,
|
|
22
|
-
point: PointLight,
|
|
23
|
-
};
|
|
24
|
-
export const createLight = (type) => new lightMap[type]();
|
|
25
|
-
export const updateLight = (type, light, options) => {
|
|
26
|
-
lightUpdateStrategyMap[type](light, options);
|
|
27
|
-
};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { Material, Texture } from 'three/src/Three';
|
|
2
|
-
import type { MaterialType, BasicMaterialOptions } from '../../../components/sprite';
|
|
3
|
-
export declare const createMaterial: (type: MaterialType) => Material;
|
|
4
|
-
export declare const updateMaterial: (type: MaterialType, material: Material, options: BasicMaterialOptions, texture?: Texture) => void;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { MeshBasicMaterial, MeshStandardMaterial, Color, NormalBlending, AdditiveBlending, SubtractiveBlending, MultiplyBlending, DataTexture, } from 'three/src/Three';
|
|
2
|
-
const DEFAULT_COLOR = '#ffffff';
|
|
3
|
-
const DEFAULT_BLENDING = 'normal';
|
|
4
|
-
const DEFAULT_OPACITY = 1;
|
|
5
|
-
const DEFAULT_TEXTURE = new DataTexture(new Uint8Array([255, 255, 255, 255]), 1, 1);
|
|
6
|
-
DEFAULT_TEXTURE.needsUpdate = true;
|
|
7
|
-
const blendingMap = {
|
|
8
|
-
normal: NormalBlending,
|
|
9
|
-
addition: AdditiveBlending,
|
|
10
|
-
substract: SubtractiveBlending,
|
|
11
|
-
multiply: MultiplyBlending,
|
|
12
|
-
};
|
|
13
|
-
const updateBasicMaterial = (material, componentOptions, texture = DEFAULT_TEXTURE) => {
|
|
14
|
-
const { color = DEFAULT_COLOR, blending = DEFAULT_BLENDING, opacity = DEFAULT_OPACITY, } = componentOptions;
|
|
15
|
-
const basicMaterial = material;
|
|
16
|
-
basicMaterial.transparent = true;
|
|
17
|
-
basicMaterial.map = texture;
|
|
18
|
-
basicMaterial.blending = blendingMap[blending];
|
|
19
|
-
basicMaterial.opacity = opacity;
|
|
20
|
-
const currentColor = `#${basicMaterial.color.getHexString()}`;
|
|
21
|
-
if (color !== currentColor) {
|
|
22
|
-
basicMaterial.color = new Color(color);
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
const materialMap = {
|
|
26
|
-
lightsensitive: MeshStandardMaterial,
|
|
27
|
-
basic: MeshBasicMaterial,
|
|
28
|
-
};
|
|
29
|
-
export const createMaterial = (type) => new materialMap[type]();
|
|
30
|
-
export const updateMaterial = (type, material, options, texture) => {
|
|
31
|
-
updateBasicMaterial(material, options, texture);
|
|
32
|
-
};
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { WorldSystem } from '../../../engine/system';
|
|
2
|
-
import type { WorldSystemOptions } from '../../../engine/system';
|
|
3
|
-
import type { Scene } from '../../../engine/scene';
|
|
4
|
-
export declare class SpriteRenderer extends WorldSystem {
|
|
5
|
-
private actorCollection?;
|
|
6
|
-
private window;
|
|
7
|
-
private renderScene;
|
|
8
|
-
private currentCamera;
|
|
9
|
-
private renderer;
|
|
10
|
-
private imageStore;
|
|
11
|
-
private spriteCache;
|
|
12
|
-
private textureMap;
|
|
13
|
-
private actorsMap;
|
|
14
|
-
private sortFn;
|
|
15
|
-
private lightSubsystem;
|
|
16
|
-
private viewWidth;
|
|
17
|
-
private viewHeight;
|
|
18
|
-
private templateCollection;
|
|
19
|
-
private cameraService;
|
|
20
|
-
constructor(options: WorldSystemOptions);
|
|
21
|
-
onSceneLoad(scene: Scene): Promise<void>;
|
|
22
|
-
onSceneEnter(scene: Scene): void;
|
|
23
|
-
onSceneExit(): void;
|
|
24
|
-
onSceneDestroy(scene: Scene): void;
|
|
25
|
-
onWorldDestroy(): void;
|
|
26
|
-
private handleActorAdd;
|
|
27
|
-
private handleActorRemove;
|
|
28
|
-
private handleWindowResize;
|
|
29
|
-
private loadImage;
|
|
30
|
-
private getTextureArray;
|
|
31
|
-
private setUpActor;
|
|
32
|
-
private normalizeOffset;
|
|
33
|
-
private updateCamera;
|
|
34
|
-
private updateActors;
|
|
35
|
-
update(): void;
|
|
36
|
-
}
|