diamon-engine 0.1.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/README.md +119 -0
- package/dist/package/OrbitCameraController-COklTntj.js +400 -0
- package/dist/package/Spin3D-BW0UYD9X.js +193 -0
- package/dist/package/engine3d.js +14 -0
- package/dist/package/index.js +14 -0
- package/dist/package/types/engine3d/components/Light3D.d.ts +16 -0
- package/dist/package/types/engine3d/components/MeshPrimitive3D.d.ts +43 -0
- package/dist/package/types/engine3d/components/Object3DComponent.d.ts +14 -0
- package/dist/package/types/engine3d/components/OrbitCameraController.d.ts +20 -0
- package/dist/package/types/engine3d/components/Spin3D.d.ts +8 -0
- package/dist/package/types/engine3d/core/Component3D.d.ts +17 -0
- package/dist/package/types/engine3d/core/Engine3D.d.ts +65 -0
- package/dist/package/types/engine3d/core/Entity3D.d.ts +27 -0
- package/dist/package/types/engine3d/core/Scene3D.d.ts +27 -0
- package/dist/package/types/engine3d/index.d.ts +10 -0
- package/dist/package/types/engine3d/systems/Input3D.d.ts +29 -0
- package/dist/package/types/index.d.ts +1 -0
- package/dist/package/types/workbench/createEngineWorkbench.d.ts +56 -0
- package/dist/package/types/workbench/index.d.ts +1 -0
- package/dist/package/workbench.js +713 -0
- package/package.json +52 -0
- package/src/styles.css +460 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { C as t, E as n, L as s, M as o, O as r, a as D, S as i } from "./OrbitCameraController-COklTntj.js";
|
|
2
|
+
import { E as p, I as C, S as E } from "./Spin3D-BW0UYD9X.js";
|
|
3
|
+
export {
|
|
4
|
+
t as Component3D,
|
|
5
|
+
p as Engine3D,
|
|
6
|
+
n as Entity3D,
|
|
7
|
+
C as Input3D,
|
|
8
|
+
s as Light3D,
|
|
9
|
+
o as MeshPrimitive3D,
|
|
10
|
+
r as Object3DComponent,
|
|
11
|
+
D as OrbitCameraController,
|
|
12
|
+
i as Scene3D,
|
|
13
|
+
E as Spin3D
|
|
14
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { C as t, E as n, L as s, M as o, O as r, a as D, S as i } from "./OrbitCameraController-COklTntj.js";
|
|
2
|
+
import { E as p, I as C, S as E } from "./Spin3D-BW0UYD9X.js";
|
|
3
|
+
export {
|
|
4
|
+
t as Component3D,
|
|
5
|
+
p as Engine3D,
|
|
6
|
+
n as Entity3D,
|
|
7
|
+
C as Input3D,
|
|
8
|
+
s as Light3D,
|
|
9
|
+
o as MeshPrimitive3D,
|
|
10
|
+
r as Object3DComponent,
|
|
11
|
+
D as OrbitCameraController,
|
|
12
|
+
i as Scene3D,
|
|
13
|
+
E as Spin3D
|
|
14
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Component3D } from "../core/Component3D";
|
|
2
|
+
export type Light3DKind = "ambient" | "directional" | "point";
|
|
3
|
+
export interface Light3DOptions {
|
|
4
|
+
kind: Light3DKind;
|
|
5
|
+
color?: string;
|
|
6
|
+
intensity?: number;
|
|
7
|
+
castShadow?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare class Light3D extends Component3D {
|
|
10
|
+
private readonly options;
|
|
11
|
+
updatesEveryFrame: boolean;
|
|
12
|
+
private light?;
|
|
13
|
+
constructor(options: Light3DOptions);
|
|
14
|
+
onStart(): void;
|
|
15
|
+
onDestroy(): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import { Component3D } from "../core/Component3D";
|
|
3
|
+
export type MeshPrimitiveKind = "box" | "sphere" | "cylinder" | "cone" | "torus" | "plane";
|
|
4
|
+
export interface MeshPrimitive3DOptions {
|
|
5
|
+
kind: MeshPrimitiveKind;
|
|
6
|
+
color?: string;
|
|
7
|
+
width?: number;
|
|
8
|
+
height?: number;
|
|
9
|
+
depth?: number;
|
|
10
|
+
radius?: number;
|
|
11
|
+
radiusTop?: number;
|
|
12
|
+
radiusBottom?: number;
|
|
13
|
+
tube?: number;
|
|
14
|
+
segments?: number;
|
|
15
|
+
metalness?: number;
|
|
16
|
+
roughness?: number;
|
|
17
|
+
receiveShadow?: boolean;
|
|
18
|
+
castShadow?: boolean;
|
|
19
|
+
sharedResources?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare class MeshPrimitive3D extends Component3D {
|
|
22
|
+
readonly options: MeshPrimitive3DOptions;
|
|
23
|
+
updatesEveryFrame: boolean;
|
|
24
|
+
mesh?: THREE.Mesh;
|
|
25
|
+
private geometry?;
|
|
26
|
+
private material?;
|
|
27
|
+
private geometryCacheKey;
|
|
28
|
+
private materialCacheKey;
|
|
29
|
+
constructor(options: MeshPrimitive3DOptions);
|
|
30
|
+
onStart(): void;
|
|
31
|
+
onDestroy(): void;
|
|
32
|
+
setColor(color: string): void;
|
|
33
|
+
getColor(): string;
|
|
34
|
+
private createGeometry;
|
|
35
|
+
private acquireGeometry;
|
|
36
|
+
private acquireMaterial;
|
|
37
|
+
private releaseGeometry;
|
|
38
|
+
private releaseMaterial;
|
|
39
|
+
private createMaterial;
|
|
40
|
+
private getGeometryKey;
|
|
41
|
+
private getMaterialKey;
|
|
42
|
+
private usesSharedResources;
|
|
43
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import { Component3D } from "../core/Component3D";
|
|
3
|
+
export interface Object3DComponentOptions {
|
|
4
|
+
disposeOnDestroy?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare class Object3DComponent extends Component3D {
|
|
7
|
+
object: THREE.Object3D;
|
|
8
|
+
private readonly options;
|
|
9
|
+
updatesEveryFrame: boolean;
|
|
10
|
+
constructor(object: THREE.Object3D, options?: Object3DComponentOptions);
|
|
11
|
+
onStart(): void;
|
|
12
|
+
onDestroy(): void;
|
|
13
|
+
replaceObject(object: THREE.Object3D): void;
|
|
14
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import { Component3D } from "../core/Component3D";
|
|
3
|
+
export interface OrbitCameraControllerOptions {
|
|
4
|
+
target?: THREE.Vector3;
|
|
5
|
+
distance?: number;
|
|
6
|
+
minDistance?: number;
|
|
7
|
+
maxDistance?: number;
|
|
8
|
+
azimuth?: number;
|
|
9
|
+
polar?: number;
|
|
10
|
+
}
|
|
11
|
+
export declare class OrbitCameraController extends Component3D {
|
|
12
|
+
target: THREE.Vector3;
|
|
13
|
+
distance: number;
|
|
14
|
+
minDistance: number;
|
|
15
|
+
maxDistance: number;
|
|
16
|
+
azimuth: number;
|
|
17
|
+
polar: number;
|
|
18
|
+
constructor(options?: OrbitCameraControllerOptions);
|
|
19
|
+
onUpdate(): void;
|
|
20
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Engine3D } from "./Engine3D";
|
|
2
|
+
import type { Entity3D } from "./Entity3D";
|
|
3
|
+
import type { Scene3D } from "./Scene3D";
|
|
4
|
+
export declare abstract class Component3D {
|
|
5
|
+
entity: Entity3D;
|
|
6
|
+
enabled: boolean;
|
|
7
|
+
updatesEveryFrame: boolean;
|
|
8
|
+
private started;
|
|
9
|
+
get scene(): Scene3D | undefined;
|
|
10
|
+
get engine(): Engine3D | undefined;
|
|
11
|
+
startInternal(): void;
|
|
12
|
+
updateInternal(deltaTime: number): void;
|
|
13
|
+
destroyInternal(): void;
|
|
14
|
+
onStart(): void;
|
|
15
|
+
onUpdate(_deltaTime: number): void;
|
|
16
|
+
onDestroy(): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { Scene3D } from "./Scene3D";
|
|
3
|
+
import { Input3D } from "../systems/Input3D";
|
|
4
|
+
export interface Engine3DStats {
|
|
5
|
+
fps: number;
|
|
6
|
+
frameTimeMs: number;
|
|
7
|
+
frameTimeAverageMs: number;
|
|
8
|
+
width: number;
|
|
9
|
+
height: number;
|
|
10
|
+
entities: number;
|
|
11
|
+
updatableEntities: number;
|
|
12
|
+
drawCalls: number;
|
|
13
|
+
triangles: number;
|
|
14
|
+
geometries: number;
|
|
15
|
+
textures: number;
|
|
16
|
+
pixelRatio: number;
|
|
17
|
+
qualityScale: number;
|
|
18
|
+
}
|
|
19
|
+
export type Engine3DShadowQuality = "off" | "low" | "medium" | "high";
|
|
20
|
+
export interface Engine3DOptions {
|
|
21
|
+
canvas: HTMLCanvasElement;
|
|
22
|
+
background?: string;
|
|
23
|
+
maxPixelRatio?: number;
|
|
24
|
+
minPixelRatio?: number;
|
|
25
|
+
preserveDrawingBuffer?: boolean;
|
|
26
|
+
shadowQuality?: Engine3DShadowQuality;
|
|
27
|
+
targetFps?: number;
|
|
28
|
+
}
|
|
29
|
+
export declare class Engine3D {
|
|
30
|
+
private readonly options;
|
|
31
|
+
readonly renderer: THREE.WebGLRenderer;
|
|
32
|
+
readonly input: Input3D;
|
|
33
|
+
readonly stats: Engine3DStats;
|
|
34
|
+
activeScene?: Scene3D;
|
|
35
|
+
private running;
|
|
36
|
+
private animationFrame;
|
|
37
|
+
private lastTimestamp;
|
|
38
|
+
private fpsElapsed;
|
|
39
|
+
private fpsFrames;
|
|
40
|
+
private qualityScale;
|
|
41
|
+
private frameTimeAverageMs;
|
|
42
|
+
private lastResizeWidth;
|
|
43
|
+
private lastResizeHeight;
|
|
44
|
+
private lastPixelRatio;
|
|
45
|
+
private resizeDirty;
|
|
46
|
+
private slowQualitySamples;
|
|
47
|
+
private fastQualitySamples;
|
|
48
|
+
constructor(options: Engine3DOptions);
|
|
49
|
+
setScene(scene: Scene3D): void;
|
|
50
|
+
start(): void;
|
|
51
|
+
stop(): void;
|
|
52
|
+
renderOnce(): void;
|
|
53
|
+
sampleFrame(): {
|
|
54
|
+
width: number;
|
|
55
|
+
height: number;
|
|
56
|
+
coloredRatio: number;
|
|
57
|
+
};
|
|
58
|
+
private readonly tick;
|
|
59
|
+
private resize;
|
|
60
|
+
private updateFrameTimeAverage;
|
|
61
|
+
private updateFps;
|
|
62
|
+
private updateRenderStats;
|
|
63
|
+
private adjustQualityScale;
|
|
64
|
+
private configureShadows;
|
|
65
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import { Component3D } from "./Component3D";
|
|
3
|
+
import type { Scene3D } from "./Scene3D";
|
|
4
|
+
type ComponentConstructor<T extends Component3D> = new (...args: never[]) => T;
|
|
5
|
+
export declare class Entity3D {
|
|
6
|
+
name: string;
|
|
7
|
+
readonly id: number;
|
|
8
|
+
readonly object: THREE.Group<THREE.Object3DEventMap>;
|
|
9
|
+
readonly components: Component3D[];
|
|
10
|
+
private readonly frameUpdateComponents;
|
|
11
|
+
scene?: Scene3D;
|
|
12
|
+
tag: string;
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
destroyed: boolean;
|
|
15
|
+
constructor(name?: string);
|
|
16
|
+
get position(): THREE.Vector3;
|
|
17
|
+
get rotation(): THREE.Euler;
|
|
18
|
+
get scale(): THREE.Vector3;
|
|
19
|
+
addComponent<T extends Component3D>(component: T): T;
|
|
20
|
+
getComponent<T extends Component3D>(componentType: ComponentConstructor<T>): T | undefined;
|
|
21
|
+
destroy(): void;
|
|
22
|
+
get needsFrameUpdate(): boolean;
|
|
23
|
+
startInternal(): void;
|
|
24
|
+
updateInternal(deltaTime: number): void;
|
|
25
|
+
destroyInternal(): void;
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import { Entity3D } from "./Entity3D";
|
|
3
|
+
import type { Engine3D } from "./Engine3D";
|
|
4
|
+
export declare class Scene3D {
|
|
5
|
+
name: string;
|
|
6
|
+
readonly threeScene: THREE.Scene<THREE.Object3DEventMap>;
|
|
7
|
+
readonly camera: THREE.PerspectiveCamera;
|
|
8
|
+
readonly entities: Entity3D[];
|
|
9
|
+
private readonly frameUpdateEntities;
|
|
10
|
+
private destroyedEntityCount;
|
|
11
|
+
engine?: Engine3D;
|
|
12
|
+
isStarted: boolean;
|
|
13
|
+
constructor(name?: string);
|
|
14
|
+
add(entity: Entity3D): Entity3D;
|
|
15
|
+
remove(entity: Entity3D): void;
|
|
16
|
+
findByTag(tag: string): Entity3D[];
|
|
17
|
+
get updatableEntityCount(): number;
|
|
18
|
+
refreshEntityScheduling(entity: Entity3D): void;
|
|
19
|
+
markEntityDestroyed(entity: Entity3D): void;
|
|
20
|
+
startInternal(engine: Engine3D): void;
|
|
21
|
+
updateInternal(deltaTime: number): void;
|
|
22
|
+
stopInternal(): void;
|
|
23
|
+
onStart(): void;
|
|
24
|
+
onUpdate(_deltaTime: number): void;
|
|
25
|
+
onStop(): void;
|
|
26
|
+
private removeDestroyedEntities;
|
|
27
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { Component3D } from "./core/Component3D";
|
|
2
|
+
export { Engine3D, type Engine3DStats } from "./core/Engine3D";
|
|
3
|
+
export { Entity3D } from "./core/Entity3D";
|
|
4
|
+
export { Scene3D } from "./core/Scene3D";
|
|
5
|
+
export { Input3D } from "./systems/Input3D";
|
|
6
|
+
export { Light3D } from "./components/Light3D";
|
|
7
|
+
export { MeshPrimitive3D, type MeshPrimitive3DOptions } from "./components/MeshPrimitive3D";
|
|
8
|
+
export { Object3DComponent } from "./components/Object3DComponent";
|
|
9
|
+
export { OrbitCameraController } from "./components/OrbitCameraController";
|
|
10
|
+
export { Spin3D } from "./components/Spin3D";
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
export declare class Input3D {
|
|
3
|
+
private readonly canvas;
|
|
4
|
+
readonly pointer: THREE.Vector2;
|
|
5
|
+
readonly pointerDelta: THREE.Vector2;
|
|
6
|
+
wheelDelta: number;
|
|
7
|
+
private readonly downKeys;
|
|
8
|
+
private readonly pressedKeys;
|
|
9
|
+
private readonly releasedKeys;
|
|
10
|
+
private readonly downButtons;
|
|
11
|
+
private readonly pressedButtons;
|
|
12
|
+
private readonly releasedButtons;
|
|
13
|
+
constructor(canvas: HTMLCanvasElement);
|
|
14
|
+
isKeyDown(key: string): boolean;
|
|
15
|
+
wasKeyPressed(key: string): boolean;
|
|
16
|
+
isAnyKeyDown(keys: string[]): boolean;
|
|
17
|
+
isMouseDown(button?: number): boolean;
|
|
18
|
+
wasMousePressed(button?: number): boolean;
|
|
19
|
+
endFrame(): void;
|
|
20
|
+
private readonly handleKeyDown;
|
|
21
|
+
private readonly handleKeyUp;
|
|
22
|
+
private readonly handlePointerMove;
|
|
23
|
+
private readonly handlePointerDown;
|
|
24
|
+
private readonly handlePointerUp;
|
|
25
|
+
private readonly handleWheel;
|
|
26
|
+
private pointerToCanvas;
|
|
27
|
+
private getKeyAliases;
|
|
28
|
+
private normalizeKey;
|
|
29
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./engine3d";
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Entity3D, Scene3D } from "../engine3d";
|
|
2
|
+
export type WorkbenchPrimitiveKind = "box" | "sphere" | "cylinder" | "cone" | "torus";
|
|
3
|
+
interface WorkbenchUi {
|
|
4
|
+
objects: HTMLElement;
|
|
5
|
+
visible: HTMLElement;
|
|
6
|
+
drawCalls: HTMLElement;
|
|
7
|
+
triangles: HTMLElement;
|
|
8
|
+
fps: HTMLElement;
|
|
9
|
+
frame: HTMLElement;
|
|
10
|
+
geometries: HTMLElement;
|
|
11
|
+
textures: HTMLElement;
|
|
12
|
+
assets: HTMLElement;
|
|
13
|
+
memory: HTMLElement;
|
|
14
|
+
quality: HTMLElement;
|
|
15
|
+
slowSystem: HTMLElement;
|
|
16
|
+
state: HTMLElement;
|
|
17
|
+
selected: HTMLElement;
|
|
18
|
+
sceneTree: HTMLElement;
|
|
19
|
+
resourceList: HTMLElement;
|
|
20
|
+
prefabList: HTMLElement;
|
|
21
|
+
propertyPanel: HTMLElement;
|
|
22
|
+
sceneData: HTMLTextAreaElement;
|
|
23
|
+
logList: HTMLElement;
|
|
24
|
+
}
|
|
25
|
+
export interface EngineWorkbench {
|
|
26
|
+
scene: Scene3D;
|
|
27
|
+
addPrimitive: (kind: WorkbenchPrimitiveKind) => Entity3D;
|
|
28
|
+
copySelection: () => void;
|
|
29
|
+
pasteSelection: () => void;
|
|
30
|
+
deleteSelection: () => void;
|
|
31
|
+
undo: () => void;
|
|
32
|
+
redo: () => void;
|
|
33
|
+
selectAll: () => void;
|
|
34
|
+
createGroupFromSelection: () => void;
|
|
35
|
+
saveScene: () => void;
|
|
36
|
+
loadScene: () => void;
|
|
37
|
+
downloadScene: () => void;
|
|
38
|
+
createPrefabFromSelection: () => void;
|
|
39
|
+
addStressObjects: (count: number) => void;
|
|
40
|
+
addInstancedStressObjects: (count: number) => void;
|
|
41
|
+
addMegaInstancedStressObjects: (count: number) => void;
|
|
42
|
+
setMegaInstancedStressObjects: (count: number) => void;
|
|
43
|
+
importAssets: (files: FileList | File[]) => void;
|
|
44
|
+
clearLogs: () => void;
|
|
45
|
+
stats: () => WorkbenchDebugStats;
|
|
46
|
+
}
|
|
47
|
+
interface WorkbenchDebugStats {
|
|
48
|
+
objects: number;
|
|
49
|
+
logicalObjects: number;
|
|
50
|
+
resources: number;
|
|
51
|
+
prefabs: number;
|
|
52
|
+
selected: number;
|
|
53
|
+
lastStressResult: string;
|
|
54
|
+
}
|
|
55
|
+
export declare function createEngineWorkbench(ui: WorkbenchUi): EngineWorkbench;
|
|
56
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { createEngineWorkbench, type EngineWorkbench, type WorkbenchPrimitiveKind } from "./createEngineWorkbench";
|