vanta-engine 1.0.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 +61 -0
- package/dist/engine.d.ts +18 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +23 -0
- package/dist/engine.js.map +1 -0
- package/dist/graphics/assets/asset_format/format.d.ts +115 -0
- package/dist/graphics/assets/asset_format/format.d.ts.map +1 -0
- package/dist/graphics/assets/asset_format/format.js +29 -0
- package/dist/graphics/assets/asset_format/format.js.map +1 -0
- package/dist/graphics/assets/asset_loaders/obj.d.ts +127 -0
- package/dist/graphics/assets/asset_loaders/obj.d.ts.map +1 -0
- package/dist/graphics/assets/asset_loaders/obj.js +762 -0
- package/dist/graphics/assets/asset_loaders/obj.js.map +1 -0
- package/dist/graphics/assets/material.d.ts +33 -0
- package/dist/graphics/assets/material.d.ts.map +1 -0
- package/dist/graphics/assets/material.js +104 -0
- package/dist/graphics/assets/material.js.map +1 -0
- package/dist/graphics/assets/mesh.d.ts +17 -0
- package/dist/graphics/assets/mesh.d.ts.map +1 -0
- package/dist/graphics/assets/mesh.js +47 -0
- package/dist/graphics/assets/mesh.js.map +1 -0
- package/dist/graphics/assets/model.d.ts +13 -0
- package/dist/graphics/assets/model.d.ts.map +1 -0
- package/dist/graphics/assets/model.js +18 -0
- package/dist/graphics/assets/model.js.map +1 -0
- package/dist/graphics/assets/texture.d.ts +93 -0
- package/dist/graphics/assets/texture.d.ts.map +1 -0
- package/dist/graphics/assets/texture.js +318 -0
- package/dist/graphics/assets/texture.js.map +1 -0
- package/dist/graphics/assets/uniform_buffer.d.ts +28 -0
- package/dist/graphics/assets/uniform_buffer.d.ts.map +1 -0
- package/dist/graphics/assets/uniform_buffer.js +132 -0
- package/dist/graphics/assets/uniform_buffer.js.map +1 -0
- package/dist/graphics/assets/vaos.d.ts +9 -0
- package/dist/graphics/assets/vaos.d.ts.map +1 -0
- package/dist/graphics/assets/vaos.js +98 -0
- package/dist/graphics/assets/vaos.js.map +1 -0
- package/dist/graphics/framebuffer.d.ts +77 -0
- package/dist/graphics/framebuffer.d.ts.map +1 -0
- package/dist/graphics/framebuffer.js +265 -0
- package/dist/graphics/framebuffer.js.map +1 -0
- package/dist/graphics/graphics_manager.d.ts +70 -0
- package/dist/graphics/graphics_manager.d.ts.map +1 -0
- package/dist/graphics/graphics_manager.js +503 -0
- package/dist/graphics/graphics_manager.js.map +1 -0
- package/dist/graphics/shader_program.d.ts +66 -0
- package/dist/graphics/shader_program.d.ts.map +1 -0
- package/dist/graphics/shader_program.js +92 -0
- package/dist/graphics/shader_program.js.map +1 -0
- package/dist/graphics/utility.d.ts +4 -0
- package/dist/graphics/utility.d.ts.map +1 -0
- package/dist/graphics/utility.js +33 -0
- package/dist/graphics/utility.js.map +1 -0
- package/dist/hook_manager.d.ts +33 -0
- package/dist/hook_manager.d.ts.map +1 -0
- package/dist/hook_manager.js +102 -0
- package/dist/hook_manager.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/input/input_manager.d.ts +41 -0
- package/dist/input/input_manager.d.ts.map +1 -0
- package/dist/input/input_manager.js +121 -0
- package/dist/input/input_manager.js.map +1 -0
- package/dist/node/camera3d.d.ts +10 -0
- package/dist/node/camera3d.d.ts.map +1 -0
- package/dist/node/camera3d.js +25 -0
- package/dist/node/camera3d.js.map +1 -0
- package/dist/node/lights/directional_light.d.ts +20 -0
- package/dist/node/lights/directional_light.d.ts.map +1 -0
- package/dist/node/lights/directional_light.js +111 -0
- package/dist/node/lights/directional_light.js.map +1 -0
- package/dist/node/lights/light.d.ts +15 -0
- package/dist/node/lights/light.d.ts.map +1 -0
- package/dist/node/lights/light.js +24 -0
- package/dist/node/lights/light.js.map +1 -0
- package/dist/node/lights/point_light.d.ts +26 -0
- package/dist/node/lights/point_light.d.ts.map +1 -0
- package/dist/node/lights/point_light.js +109 -0
- package/dist/node/lights/point_light.js.map +1 -0
- package/dist/node/lights/spot_light.d.ts +13 -0
- package/dist/node/lights/spot_light.d.ts.map +1 -0
- package/dist/node/lights/spot_light.js +35 -0
- package/dist/node/lights/spot_light.js.map +1 -0
- package/dist/node/lights.d.ts +43 -0
- package/dist/node/lights.d.ts.map +1 -0
- package/dist/node/lights.js +201 -0
- package/dist/node/lights.js.map +1 -0
- package/dist/node/object3d.d.ts +10 -0
- package/dist/node/object3d.d.ts.map +1 -0
- package/dist/node/object3d.js +60 -0
- package/dist/node/object3d.js.map +1 -0
- package/dist/node/skybox.d.ts +15 -0
- package/dist/node/skybox.d.ts.map +1 -0
- package/dist/node/skybox.js +33 -0
- package/dist/node/skybox.js.map +1 -0
- package/dist/node/sprite2d.d.ts +14 -0
- package/dist/node/sprite2d.d.ts.map +1 -0
- package/dist/node/sprite2d.js +33 -0
- package/dist/node/sprite2d.js.map +1 -0
- package/dist/node.d.ts +76 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +308 -0
- package/dist/node.js.map +1 -0
- package/dist/scene.d.ts +19 -0
- package/dist/scene.d.ts.map +1 -0
- package/dist/scene.js +50 -0
- package/dist/scene.js.map +1 -0
- package/dist/shader_language/grammar.d.ts +2 -0
- package/dist/shader_language/grammar.d.ts.map +1 -0
- package/dist/shader_language/grammar.js +971 -0
- package/dist/shader_language/grammar.js.map +1 -0
- package/dist/shader_language/tokenizer.d.ts +3 -0
- package/dist/shader_language/tokenizer.d.ts.map +1 -0
- package/dist/shader_language/tokenizer.js +50 -0
- package/dist/shader_language/tokenizer.js.map +1 -0
- package/dist/shaders/default_2d.fs.d.ts +3 -0
- package/dist/shaders/default_2d.fs.d.ts.map +1 -0
- package/dist/shaders/default_2d.fs.js +14 -0
- package/dist/shaders/default_2d.fs.js.map +1 -0
- package/dist/shaders/default_2d.vs.d.ts +3 -0
- package/dist/shaders/default_2d.vs.d.ts.map +1 -0
- package/dist/shaders/default_2d.vs.js +16 -0
- package/dist/shaders/default_2d.vs.js.map +1 -0
- package/dist/shaders/default_3d.fs.d.ts +3 -0
- package/dist/shaders/default_3d.fs.d.ts.map +1 -0
- package/dist/shaders/default_3d.fs.js +327 -0
- package/dist/shaders/default_3d.fs.js.map +1 -0
- package/dist/shaders/default_3d.vs.d.ts +3 -0
- package/dist/shaders/default_3d.vs.d.ts.map +1 -0
- package/dist/shaders/default_3d.vs.js +36 -0
- package/dist/shaders/default_3d.vs.js.map +1 -0
- package/dist/shaders/default_directional_shadow.fs.d.ts +3 -0
- package/dist/shaders/default_directional_shadow.fs.d.ts.map +1 -0
- package/dist/shaders/default_directional_shadow.fs.js +6 -0
- package/dist/shaders/default_directional_shadow.fs.js.map +1 -0
- package/dist/shaders/default_directional_shadow.vs.d.ts +3 -0
- package/dist/shaders/default_directional_shadow.vs.d.ts.map +1 -0
- package/dist/shaders/default_directional_shadow.vs.js +11 -0
- package/dist/shaders/default_directional_shadow.vs.js.map +1 -0
- package/dist/shaders/default_point_shadow.fs.d.ts +3 -0
- package/dist/shaders/default_point_shadow.fs.d.ts.map +1 -0
- package/dist/shaders/default_point_shadow.fs.js +18 -0
- package/dist/shaders/default_point_shadow.fs.js.map +1 -0
- package/dist/shaders/default_point_shadow.vs.d.ts +3 -0
- package/dist/shaders/default_point_shadow.vs.d.ts.map +1 -0
- package/dist/shaders/default_point_shadow.vs.js +14 -0
- package/dist/shaders/default_point_shadow.vs.js.map +1 -0
- package/dist/shaders/default_skybox.fs.d.ts +3 -0
- package/dist/shaders/default_skybox.fs.d.ts.map +1 -0
- package/dist/shaders/default_skybox.fs.js +14 -0
- package/dist/shaders/default_skybox.fs.js.map +1 -0
- package/dist/shaders/default_skybox.vs.d.ts +3 -0
- package/dist/shaders/default_skybox.vs.d.ts.map +1 -0
- package/dist/shaders/default_skybox.vs.js +23 -0
- package/dist/shaders/default_skybox.vs.js.map +1 -0
- package/dist/utility.d.ts +5 -0
- package/dist/utility.d.ts.map +1 -0
- package/dist/utility.js +19 -0
- package/dist/utility.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { get_uniform_label_index, normalize_uniform_label } from "./utility.js";
|
|
2
|
+
export var WebGLUniformType;
|
|
3
|
+
(function (WebGLUniformType) {
|
|
4
|
+
WebGLUniformType[WebGLUniformType["TEXTURE_2D"] = 0] = "TEXTURE_2D";
|
|
5
|
+
WebGLUniformType[WebGLUniformType["TEXTURE_2D_ARRAY"] = 1] = "TEXTURE_2D_ARRAY";
|
|
6
|
+
WebGLUniformType[WebGLUniformType["TEXTURE_CUBE_MAP"] = 2] = "TEXTURE_CUBE_MAP";
|
|
7
|
+
WebGLUniformType[WebGLUniformType["SHADOW_2D"] = 3] = "SHADOW_2D";
|
|
8
|
+
WebGLUniformType[WebGLUniformType["SHADOW_2D_ARRAY"] = 4] = "SHADOW_2D_ARRAY";
|
|
9
|
+
WebGLUniformType[WebGLUniformType["SHADOW_CUBE_MAP"] = 5] = "SHADOW_CUBE_MAP";
|
|
10
|
+
WebGLUniformType[WebGLUniformType["STRUCT"] = 6] = "STRUCT";
|
|
11
|
+
WebGLUniformType[WebGLUniformType["F"] = 7] = "F";
|
|
12
|
+
WebGLUniformType[WebGLUniformType["I"] = 8] = "I";
|
|
13
|
+
WebGLUniformType[WebGLUniformType["B"] = 9] = "B";
|
|
14
|
+
WebGLUniformType[WebGLUniformType["F2V"] = 10] = "F2V";
|
|
15
|
+
WebGLUniformType[WebGLUniformType["I2V"] = 11] = "I2V";
|
|
16
|
+
WebGLUniformType[WebGLUniformType["F3V"] = 12] = "F3V";
|
|
17
|
+
WebGLUniformType[WebGLUniformType["I3V"] = 13] = "I3V";
|
|
18
|
+
WebGLUniformType[WebGLUniformType["F4V"] = 14] = "F4V";
|
|
19
|
+
WebGLUniformType[WebGLUniformType["I4V"] = 15] = "I4V";
|
|
20
|
+
WebGLUniformType[WebGLUniformType["F2M"] = 16] = "F2M";
|
|
21
|
+
WebGLUniformType[WebGLUniformType["F3M"] = 17] = "F3M";
|
|
22
|
+
WebGLUniformType[WebGLUniformType["F4M"] = 18] = "F4M";
|
|
23
|
+
})(WebGLUniformType || (WebGLUniformType = {}));
|
|
24
|
+
;
|
|
25
|
+
export class ShaderProgram {
|
|
26
|
+
constructor(name, gm, gl) {
|
|
27
|
+
this.shaders = [];
|
|
28
|
+
this.webgl_shader_program = null;
|
|
29
|
+
this.uniforms = {};
|
|
30
|
+
this.uniform_locs = {};
|
|
31
|
+
this.texture_counter = 0;
|
|
32
|
+
this.ubo_counter = 0;
|
|
33
|
+
this.ubos = {};
|
|
34
|
+
this.gm = gm;
|
|
35
|
+
this.gl = gl;
|
|
36
|
+
this.name = name;
|
|
37
|
+
}
|
|
38
|
+
add_shader(type, source) {
|
|
39
|
+
const shader = this.gl.createShader(type);
|
|
40
|
+
this.gl.shaderSource(shader, source);
|
|
41
|
+
this.gl.compileShader(shader);
|
|
42
|
+
if (!this.gl.getShaderParameter(shader, this.gl.COMPILE_STATUS)) {
|
|
43
|
+
console.error(this.gl.getShaderInfoLog(shader));
|
|
44
|
+
}
|
|
45
|
+
this.shaders.push(shader);
|
|
46
|
+
}
|
|
47
|
+
add_uniform(label, uniform_type) {
|
|
48
|
+
const uniform_size = Math.max(1, get_uniform_label_index(label));
|
|
49
|
+
let label_normalized = normalize_uniform_label(label);
|
|
50
|
+
label = label_normalized.replace("[]", "");
|
|
51
|
+
this.uniforms[label] = {
|
|
52
|
+
label,
|
|
53
|
+
type: uniform_type,
|
|
54
|
+
is_array: label_normalized.startsWith("[]")
|
|
55
|
+
};
|
|
56
|
+
if ([
|
|
57
|
+
WebGLUniformType.TEXTURE_2D,
|
|
58
|
+
WebGLUniformType.TEXTURE_2D_ARRAY,
|
|
59
|
+
WebGLUniformType.TEXTURE_CUBE_MAP,
|
|
60
|
+
WebGLUniformType.SHADOW_2D,
|
|
61
|
+
WebGLUniformType.SHADOW_2D_ARRAY,
|
|
62
|
+
WebGLUniformType.SHADOW_CUBE_MAP,
|
|
63
|
+
].includes(uniform_type)) {
|
|
64
|
+
this.uniforms[label].texture_unit = this.texture_counter;
|
|
65
|
+
this.texture_counter += uniform_size;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
build() {
|
|
69
|
+
this.webgl_shader_program = this.gl.createProgram();
|
|
70
|
+
for (let shader of this.shaders) {
|
|
71
|
+
this.gl.attachShader(this.webgl_shader_program, shader);
|
|
72
|
+
}
|
|
73
|
+
this.gl.linkProgram(this.webgl_shader_program);
|
|
74
|
+
if (!this.gl.getProgramParameter(this.webgl_shader_program, this.gl.LINK_STATUS)) {
|
|
75
|
+
console.error(this.gl.getProgramInfoLog(this.webgl_shader_program));
|
|
76
|
+
}
|
|
77
|
+
this.use();
|
|
78
|
+
// find uniform locs
|
|
79
|
+
for (let [label, uniform] of Object.entries(this.uniforms)) {
|
|
80
|
+
const loc = this.gl.getUniformLocation(this.webgl_shader_program, label);
|
|
81
|
+
if (!loc) {
|
|
82
|
+
console.warn(`Uniform "${label}" not in use in shader program "${this.name}".`);
|
|
83
|
+
}
|
|
84
|
+
this.uniform_locs[label] = loc;
|
|
85
|
+
}
|
|
86
|
+
this.gm.clear_shader();
|
|
87
|
+
}
|
|
88
|
+
use() {
|
|
89
|
+
this.gm.use_shader(this.name);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=shader_program.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader_program.js","sourceRoot":"","sources":["../../src/graphics/shader_program.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utility.d.ts","sourceRoot":"","sources":["../../src/graphics/utility.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,OAAO,EAAC,MAAM,GAAE,MAAM,CAExD;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAC,MAAM,GAAE,MAAM,CAG/D;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAC,MAAM,UA2BvD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export function degrees_to_radians(degrees) {
|
|
2
|
+
return degrees * (Math.PI / 180);
|
|
3
|
+
}
|
|
4
|
+
;
|
|
5
|
+
export function get_uniform_label_index(raw_label) {
|
|
6
|
+
const match = raw_label.match(/\[(\d+)\][^\[]*$/);
|
|
7
|
+
return match ? parseInt(match[1], 10) : 0;
|
|
8
|
+
}
|
|
9
|
+
export function normalize_uniform_label(raw_label) {
|
|
10
|
+
var return_label = "";
|
|
11
|
+
var start_ignore = false;
|
|
12
|
+
var is_array = false;
|
|
13
|
+
for (const char of raw_label) {
|
|
14
|
+
switch (char) {
|
|
15
|
+
case '[':
|
|
16
|
+
start_ignore = true;
|
|
17
|
+
is_array = true;
|
|
18
|
+
break;
|
|
19
|
+
case ']':
|
|
20
|
+
start_ignore = false;
|
|
21
|
+
is_array = true;
|
|
22
|
+
break;
|
|
23
|
+
default:
|
|
24
|
+
if (!start_ignore)
|
|
25
|
+
return_label += char;
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (is_array)
|
|
30
|
+
return_label = "[]" + return_label;
|
|
31
|
+
return return_label;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=utility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utility.js","sourceRoot":"","sources":["../../src/graphics/utility.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,OAAc;IAC/C,OAAO,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;AACnC,CAAC;AAAA,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,SAAgB;IACtD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,SAAgB;IACtD,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,GAAG;gBACN,YAAY,GAAG,IAAI,CAAC;gBACpB,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YAER,KAAK,GAAG;gBACN,YAAY,GAAG,KAAK,CAAC;gBACrB,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YAER;gBACE,IAAI,CAAC,YAAY;oBACf,YAAY,IAAI,IAAI,CAAC;gBACvB,MAAM;QACV,CAAC;IACH,CAAC;IAED,IAAI,QAAQ;QACV,YAAY,GAAG,IAAI,GAAG,YAAY,CAAC;IAErC,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { LuaEngine, LuaFactory } from "wasmoon";
|
|
2
|
+
import Engine from "./engine.ts";
|
|
3
|
+
import { Node } from "./node.ts";
|
|
4
|
+
export declare class HookManager {
|
|
5
|
+
engine: Engine;
|
|
6
|
+
lua_factory: LuaFactory;
|
|
7
|
+
lua_engine_promise: Promise<LuaEngine>;
|
|
8
|
+
lua: LuaEngine | null;
|
|
9
|
+
on_ready_callbacks: {
|
|
10
|
+
[key: string]: (node: Node, engine: Engine) => void;
|
|
11
|
+
};
|
|
12
|
+
on_removed_callbacks: {
|
|
13
|
+
[key: string]: (node: Node, engine: Engine, parent: Node) => void;
|
|
14
|
+
};
|
|
15
|
+
on_update_callbacks: {
|
|
16
|
+
[key: string]: (node: Node, engine: Engine, time: number, delta_time: number) => void;
|
|
17
|
+
};
|
|
18
|
+
on_render_callbacks: {
|
|
19
|
+
[key: string]: (node: Node, engine: Engine, time: number, delta_time: number) => void;
|
|
20
|
+
};
|
|
21
|
+
constructor(engine: Engine);
|
|
22
|
+
call_on_ready_callback(url: string, node: Node, engine: Engine): void;
|
|
23
|
+
call_on_removed_callback(url: string, node: Node, engine: Engine, parent: Node): void;
|
|
24
|
+
call_on_update_callback(url: string, node: Node, engine: Engine, time: number, delta_time: number): void;
|
|
25
|
+
call_on_render_callback(url: string, node: Node, engine: Engine, time: number, delta_time: number): void;
|
|
26
|
+
private do_lua_file_url;
|
|
27
|
+
add_on_ready_callback(url: string): Promise<void>;
|
|
28
|
+
add_on_removed_callback(url: string): Promise<void>;
|
|
29
|
+
add_on_update_callback(url: string): Promise<void>;
|
|
30
|
+
add_on_render_callback(url: string): Promise<void>;
|
|
31
|
+
set_globals(): Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=hook_manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook_manager.d.ts","sourceRoot":"","sources":["../src/hook_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,IAAI,EAAkB,MAAM,WAAW,CAAC;AASjD,qBAAa,WAAW;IACpB,MAAM,EAAC,MAAM,CAAC;IACd,WAAW,EAAC,UAAU,CAAC;IACvB,kBAAkB,EAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,GAAG,EAAC,SAAS,GAAC,IAAI,CAAQ;IAE1B,kBAAkB,EAAC;QAAC,CAAC,GAAG,EAAC,MAAM,GAAE,CAAC,IAAI,EAAC,IAAI,EAAE,MAAM,EAAC,MAAM,KAAK,IAAI,CAAA;KAAC,CAAM;IAC1E,oBAAoB,EAAC;QAAC,CAAC,GAAG,EAAC,MAAM,GAAE,CAAC,IAAI,EAAC,IAAI,EAAE,MAAM,EAAC,MAAM,EAAE,MAAM,EAAC,IAAI,KAAK,IAAI,CAAA;KAAC,CAAM;IACzF,mBAAmB,EAAC;QAAC,CAAC,GAAG,EAAC,MAAM,GAAE,CAAC,IAAI,EAAC,IAAI,EAAE,MAAM,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,KAAK,IAAI,CAAA;KAAC,CAAM;IAC3G,mBAAmB,EAAC;QAAC,CAAC,GAAG,EAAC,MAAM,GAAE,CAAC,IAAI,EAAC,IAAI,EAAE,MAAM,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,KAAK,IAAI,CAAA;KAAC,CAAM;gBAE/F,MAAM,EAAC,MAAM;IAYzB,sBAAsB,CAAC,GAAG,EAAC,MAAM,EAAE,IAAI,EAAC,IAAI,EAAE,MAAM,EAAC,MAAM;IAI3D,wBAAwB,CAAC,GAAG,EAAC,MAAM,EAAE,IAAI,EAAC,IAAI,EAAE,MAAM,EAAC,MAAM,EAAE,MAAM,EAAC,IAAI;IAI1E,uBAAuB,CAAC,GAAG,EAAC,MAAM,EAAE,IAAI,EAAC,IAAI,EAAE,MAAM,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM;IAI5F,uBAAuB,CAAC,GAAG,EAAC,MAAM,EAAE,IAAI,EAAC,IAAI,EAAE,MAAM,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM;YAI9E,eAAe;IAavB,qBAAqB,CAAC,GAAG,EAAC,MAAM;IAahC,uBAAuB,CAAC,GAAG,EAAC,MAAM;IAalC,sBAAsB,CAAC,GAAG,EAAC,MAAM;IAajC,sBAAsB,CAAC,GAAG,EAAC,MAAM;IAajC,WAAW;CAmBpB"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { LuaFactory } from "wasmoon";
|
|
2
|
+
import { Node, Node2D, Node3D } from "./node.js";
|
|
3
|
+
import { Vec2, Vec3, Vec4, Mat2, Mat3, Mat4, Quat } from "@vicimpa/glm";
|
|
4
|
+
import { Object3D } from "./node/object3d.js";
|
|
5
|
+
import { Sprite2D } from "./node/sprite2d.js";
|
|
6
|
+
// This class handles all of the lua hooks into different nodes.
|
|
7
|
+
// It uses a single lua engine since webgl2 cant be multithreaded.
|
|
8
|
+
// maybe in the future we will use webgpu and use multiple engines.
|
|
9
|
+
export class HookManager {
|
|
10
|
+
constructor(engine) {
|
|
11
|
+
this.lua = null;
|
|
12
|
+
this.on_ready_callbacks = {};
|
|
13
|
+
this.on_removed_callbacks = {};
|
|
14
|
+
this.on_update_callbacks = {};
|
|
15
|
+
this.on_render_callbacks = {};
|
|
16
|
+
this.engine = engine;
|
|
17
|
+
this.lua_factory = new LuaFactory();
|
|
18
|
+
this.lua_engine_promise = this.lua_factory.createEngine();
|
|
19
|
+
this.lua_engine_promise
|
|
20
|
+
.then(async (engine) => {
|
|
21
|
+
this.lua = engine;
|
|
22
|
+
await this.set_globals();
|
|
23
|
+
})
|
|
24
|
+
.catch((reason) => { throw new Error(reason); });
|
|
25
|
+
}
|
|
26
|
+
call_on_ready_callback(url, node, engine) {
|
|
27
|
+
this.on_ready_callbacks[url](node, engine);
|
|
28
|
+
}
|
|
29
|
+
call_on_removed_callback(url, node, engine, parent) {
|
|
30
|
+
this.on_removed_callbacks[url](node, engine, parent);
|
|
31
|
+
}
|
|
32
|
+
call_on_update_callback(url, node, engine, time, delta_time) {
|
|
33
|
+
this.on_update_callbacks[url](node, engine, time, delta_time);
|
|
34
|
+
}
|
|
35
|
+
call_on_render_callback(url, node, engine, time, delta_time) {
|
|
36
|
+
this.on_render_callbacks[url](node, engine, time, delta_time);
|
|
37
|
+
}
|
|
38
|
+
async do_lua_file_url(url) {
|
|
39
|
+
await this.lua_engine_promise;
|
|
40
|
+
if (!this.lua)
|
|
41
|
+
return;
|
|
42
|
+
const res = await fetch(url);
|
|
43
|
+
if (!res.ok)
|
|
44
|
+
throw new Error("Failed to load Lua file");
|
|
45
|
+
const code = await res.text();
|
|
46
|
+
return this.lua.doString(code);
|
|
47
|
+
}
|
|
48
|
+
async add_on_ready_callback(url) {
|
|
49
|
+
await this.lua_engine_promise;
|
|
50
|
+
if (!this.lua)
|
|
51
|
+
return;
|
|
52
|
+
await this.do_lua_file_url(url);
|
|
53
|
+
const callback = this.lua.global.get("on_ready");
|
|
54
|
+
this.on_ready_callbacks[url] = callback;
|
|
55
|
+
}
|
|
56
|
+
async add_on_removed_callback(url) {
|
|
57
|
+
await this.lua_engine_promise;
|
|
58
|
+
if (!this.lua)
|
|
59
|
+
return;
|
|
60
|
+
await this.do_lua_file_url(url);
|
|
61
|
+
const callback = this.lua.global.get("on_removed");
|
|
62
|
+
this.on_removed_callbacks[url] = callback;
|
|
63
|
+
}
|
|
64
|
+
async add_on_update_callback(url) {
|
|
65
|
+
await this.lua_engine_promise;
|
|
66
|
+
if (!this.lua)
|
|
67
|
+
return;
|
|
68
|
+
await this.do_lua_file_url(url);
|
|
69
|
+
const callback = this.lua.global.get("on_update");
|
|
70
|
+
this.on_update_callbacks[url] = callback;
|
|
71
|
+
}
|
|
72
|
+
async add_on_render_callback(url) {
|
|
73
|
+
await this.lua_engine_promise;
|
|
74
|
+
if (!this.lua)
|
|
75
|
+
return;
|
|
76
|
+
await this.do_lua_file_url(url);
|
|
77
|
+
const callback = this.lua.global.get("on_render");
|
|
78
|
+
this.on_render_callbacks[url] = callback;
|
|
79
|
+
}
|
|
80
|
+
async set_globals() {
|
|
81
|
+
await this.lua_engine_promise;
|
|
82
|
+
if (!this.lua)
|
|
83
|
+
return;
|
|
84
|
+
this.lua.global.set("Vec2", create_lua_constructor(Vec2));
|
|
85
|
+
this.lua.global.set("Vec3", create_lua_constructor(Vec3));
|
|
86
|
+
this.lua.global.set("Vec4", create_lua_constructor(Vec4));
|
|
87
|
+
this.lua.global.set("Mat2", create_lua_constructor(Mat2));
|
|
88
|
+
this.lua.global.set("Mat3", create_lua_constructor(Mat3));
|
|
89
|
+
this.lua.global.set("Mat4", create_lua_constructor(Mat4));
|
|
90
|
+
this.lua.global.set("Quat", create_lua_constructor(Quat));
|
|
91
|
+
this.lua.global.set("Node", create_lua_constructor(Node));
|
|
92
|
+
this.lua.global.set("Node3D", create_lua_constructor(Node3D));
|
|
93
|
+
this.lua.global.set("Node2D", create_lua_constructor(Node2D));
|
|
94
|
+
this.lua.global.set("Object3D", create_lua_constructor(Object3D));
|
|
95
|
+
this.lua.global.set("Sprite2D", create_lua_constructor(Sprite2D));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
;
|
|
99
|
+
function create_lua_constructor(cls) {
|
|
100
|
+
return (...args) => new cls(...args);
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=hook_manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook_manager.js","sourceRoot":"","sources":["../src/hook_manager.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export * from "./graphics/assets/asset_loaders/obj.ts";
|
|
2
|
+
export * from "./graphics/assets/vaos.ts";
|
|
3
|
+
export * from "./graphics/assets/material.ts";
|
|
4
|
+
export * from "./graphics/assets/mesh.ts";
|
|
5
|
+
export * from "./graphics/assets/model.ts";
|
|
6
|
+
export * from "./graphics/assets/texture.ts";
|
|
7
|
+
export * from "./graphics/framebuffer.ts";
|
|
8
|
+
export * from "./graphics/shader_program.ts";
|
|
9
|
+
export * from "./graphics/graphics_manager.ts";
|
|
10
|
+
export * from "./node.ts";
|
|
11
|
+
export * from "./node/camera3d.ts";
|
|
12
|
+
export * from "./node/lights/light.ts";
|
|
13
|
+
export * from "./node/lights/point_light.ts";
|
|
14
|
+
export * from "./node/lights/directional_light.ts";
|
|
15
|
+
export * from "./node/lights/spot_light.ts";
|
|
16
|
+
export * from "./node/object3d.ts";
|
|
17
|
+
export * from "./node/skybox.ts";
|
|
18
|
+
export * from "./node/sprite2d.ts";
|
|
19
|
+
export * from "./graphics/utility.ts";
|
|
20
|
+
export * from "./input/input_manager.ts";
|
|
21
|
+
export * from "./utility.ts";
|
|
22
|
+
export * from "./engine.ts";
|
|
23
|
+
export * from "./scene.ts";
|
|
24
|
+
export * from "./hook_manager.ts";
|
|
25
|
+
import Engine from './engine.ts';
|
|
26
|
+
export default Engine;
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,eAAe,MAAM,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export * from "./graphics/assets/asset_loaders/obj.js";
|
|
2
|
+
export * from "./graphics/assets/vaos.js";
|
|
3
|
+
export * from "./graphics/assets/material.js";
|
|
4
|
+
export * from "./graphics/assets/mesh.js";
|
|
5
|
+
export * from "./graphics/assets/model.js";
|
|
6
|
+
export * from "./graphics/assets/texture.js";
|
|
7
|
+
export * from "./graphics/framebuffer.js";
|
|
8
|
+
export * from "./graphics/shader_program.js";
|
|
9
|
+
export * from "./graphics/graphics_manager.js";
|
|
10
|
+
export * from "./node.js";
|
|
11
|
+
export * from "./node/camera3d.js";
|
|
12
|
+
export * from "./node/lights/light.js";
|
|
13
|
+
export * from "./node/lights/point_light.js";
|
|
14
|
+
export * from "./node/lights/directional_light.js";
|
|
15
|
+
export * from "./node/lights/spot_light.js";
|
|
16
|
+
export * from "./node/object3d.js";
|
|
17
|
+
export * from "./node/skybox.js";
|
|
18
|
+
export * from "./node/sprite2d.js";
|
|
19
|
+
export * from "./graphics/utility.js";
|
|
20
|
+
export * from "./input/input_manager.js";
|
|
21
|
+
export * from "./utility.js";
|
|
22
|
+
export * from "./engine.js";
|
|
23
|
+
export * from "./scene.js";
|
|
24
|
+
export * from "./hook_manager.js";
|
|
25
|
+
import Engine from "./engine.js";
|
|
26
|
+
export default Engine;
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import Engine from "../engine.ts";
|
|
2
|
+
export declare enum MouseButton {
|
|
3
|
+
Left = 0,
|
|
4
|
+
Middle = 1,
|
|
5
|
+
Right = 2
|
|
6
|
+
}
|
|
7
|
+
export declare class InputManager {
|
|
8
|
+
private target;
|
|
9
|
+
engine: Engine;
|
|
10
|
+
private keysDown;
|
|
11
|
+
private keysPressed;
|
|
12
|
+
private keysReleased;
|
|
13
|
+
private mouseDown;
|
|
14
|
+
private mousePressed;
|
|
15
|
+
private mouseReleased;
|
|
16
|
+
mouseX: number;
|
|
17
|
+
mouseY: number;
|
|
18
|
+
mouse_delta_x: number;
|
|
19
|
+
mouse_delta_y: number;
|
|
20
|
+
wheelDelta: number;
|
|
21
|
+
constructor(engine: Engine, target?: HTMLElement);
|
|
22
|
+
destroy(): void;
|
|
23
|
+
update(): void;
|
|
24
|
+
is_key_down(code: string): boolean;
|
|
25
|
+
was_key_pressed(code: string): boolean;
|
|
26
|
+
was_key_released(code: string): boolean;
|
|
27
|
+
is_mouse_down(button: MouseButton): boolean;
|
|
28
|
+
was_mouse_pressed(button: MouseButton): boolean;
|
|
29
|
+
was_mouse_released(button: MouseButton): boolean;
|
|
30
|
+
lock_mouse(): void;
|
|
31
|
+
unlock_mouse(): void;
|
|
32
|
+
private attach;
|
|
33
|
+
private detach;
|
|
34
|
+
private onKeyDown;
|
|
35
|
+
private onKeyUp;
|
|
36
|
+
private onMouseDown;
|
|
37
|
+
private onMouseUp;
|
|
38
|
+
private onMouseMove;
|
|
39
|
+
private onWheel;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=input_manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input_manager.d.ts","sourceRoot":"","sources":["../../src/input/input_manager.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,cAAc,CAAC;AAElC,oBAAY,WAAW;IACnB,IAAI,IAAI;IACR,MAAM,IAAI;IACV,KAAK,IAAI;CACZ;AAED,qBAAa,YAAY;IAkBM,OAAO,CAAC,MAAM;IAjBzC,MAAM,EAAC,MAAM,CAAC;IAEd,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,YAAY,CAAqB;IAEzC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,aAAa,CAAqB;IAEnC,MAAM,SAAK;IACX,MAAM,SAAK;IACX,aAAa,SAAK;IAClB,aAAa,SAAK;IAElB,UAAU,SAAK;gBAEV,MAAM,EAAC,MAAM,EAAU,MAAM,GAAE,WAAkC;IAK7E,OAAO;IAIP,MAAM;IAWN,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIlC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAItC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIvC,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAI3C,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAI/C,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAIhD,UAAU;IAIV,YAAY;IAIZ,OAAO,CAAC,MAAM;IAcd,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,SAAS,CAKf;IAEF,OAAO,CAAC,OAAO,CAIb;IAEF,OAAO,CAAC,WAAW,CAMjB;IAEF,OAAO,CAAC,SAAS,CAIf;IAEF,OAAO,CAAC,WAAW,CAkBjB;IAEF,OAAO,CAAC,OAAO,CAEb;CACL"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
export var MouseButton;
|
|
2
|
+
(function (MouseButton) {
|
|
3
|
+
MouseButton[MouseButton["Left"] = 0] = "Left";
|
|
4
|
+
MouseButton[MouseButton["Middle"] = 1] = "Middle";
|
|
5
|
+
MouseButton[MouseButton["Right"] = 2] = "Right";
|
|
6
|
+
})(MouseButton || (MouseButton = {}));
|
|
7
|
+
export class InputManager {
|
|
8
|
+
constructor(engine, target = window.document.body) {
|
|
9
|
+
this.target = target;
|
|
10
|
+
this.keysDown = new Set();
|
|
11
|
+
this.keysPressed = new Set();
|
|
12
|
+
this.keysReleased = new Set();
|
|
13
|
+
this.mouseDown = new Set();
|
|
14
|
+
this.mousePressed = new Set();
|
|
15
|
+
this.mouseReleased = new Set();
|
|
16
|
+
this.mouseX = 0;
|
|
17
|
+
this.mouseY = 0;
|
|
18
|
+
this.mouse_delta_x = 0;
|
|
19
|
+
this.mouse_delta_y = 0;
|
|
20
|
+
this.wheelDelta = 0;
|
|
21
|
+
this.onKeyDown = (e) => {
|
|
22
|
+
if (!this.keysDown.has(e.code)) {
|
|
23
|
+
this.keysDown.add(e.code);
|
|
24
|
+
this.keysPressed.add(e.code);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
this.onKeyUp = (e) => {
|
|
28
|
+
if (this.keysDown.delete(e.code)) {
|
|
29
|
+
this.keysReleased.add(e.code);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
this.onMouseDown = (e) => {
|
|
33
|
+
if (!this.mouseDown.has(e.button)) {
|
|
34
|
+
this.mouseDown.add(e.button);
|
|
35
|
+
this.mousePressed.add(e.button);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
this.onMouseUp = (e) => {
|
|
39
|
+
if (this.mouseDown.delete(e.button)) {
|
|
40
|
+
this.mouseReleased.add(e.button);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
this.onMouseMove = (e) => {
|
|
44
|
+
if (document.pointerLockElement === this.engine.canvas) {
|
|
45
|
+
// Pointer lock mode → use raw movement
|
|
46
|
+
this.mouse_delta_x = e.movementX;
|
|
47
|
+
this.mouse_delta_y = e.movementY;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// Normal mouse mode
|
|
51
|
+
const rect = this.target.getBoundingClientRect();
|
|
52
|
+
const x = e.clientX - rect.left;
|
|
53
|
+
const y = e.clientY - rect.top;
|
|
54
|
+
this.mouse_delta_x += x - this.mouseX;
|
|
55
|
+
this.mouse_delta_y += y - this.mouseY;
|
|
56
|
+
this.mouseX = x;
|
|
57
|
+
this.mouseY = y;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
this.onWheel = (e) => {
|
|
61
|
+
this.wheelDelta += e.deltaY;
|
|
62
|
+
};
|
|
63
|
+
this.engine = engine;
|
|
64
|
+
this.attach();
|
|
65
|
+
}
|
|
66
|
+
destroy() {
|
|
67
|
+
this.detach();
|
|
68
|
+
}
|
|
69
|
+
update() {
|
|
70
|
+
this.keysPressed.clear();
|
|
71
|
+
this.keysReleased.clear();
|
|
72
|
+
this.mousePressed.clear();
|
|
73
|
+
this.mouseReleased.clear();
|
|
74
|
+
this.mouse_delta_x = 0;
|
|
75
|
+
this.mouse_delta_y = 0;
|
|
76
|
+
this.wheelDelta = 0;
|
|
77
|
+
}
|
|
78
|
+
is_key_down(code) {
|
|
79
|
+
return this.keysDown.has(code);
|
|
80
|
+
}
|
|
81
|
+
was_key_pressed(code) {
|
|
82
|
+
return this.keysPressed.has(code);
|
|
83
|
+
}
|
|
84
|
+
was_key_released(code) {
|
|
85
|
+
return this.keysReleased.has(code);
|
|
86
|
+
}
|
|
87
|
+
is_mouse_down(button) {
|
|
88
|
+
return this.mouseDown.has(button);
|
|
89
|
+
}
|
|
90
|
+
was_mouse_pressed(button) {
|
|
91
|
+
return this.mousePressed.has(button);
|
|
92
|
+
}
|
|
93
|
+
was_mouse_released(button) {
|
|
94
|
+
return this.mouseReleased.has(button);
|
|
95
|
+
}
|
|
96
|
+
lock_mouse() {
|
|
97
|
+
this.engine.canvas.requestPointerLock();
|
|
98
|
+
}
|
|
99
|
+
unlock_mouse() {
|
|
100
|
+
document.exitPointerLock();
|
|
101
|
+
}
|
|
102
|
+
attach() {
|
|
103
|
+
window.addEventListener("keydown", this.onKeyDown);
|
|
104
|
+
window.addEventListener("keyup", this.onKeyUp);
|
|
105
|
+
this.target.addEventListener("mousedown", this.onMouseDown);
|
|
106
|
+
window.addEventListener("mouseup", this.onMouseUp);
|
|
107
|
+
this.target.addEventListener("mousemove", this.onMouseMove);
|
|
108
|
+
this.target.addEventListener("wheel", this.onWheel, { passive: true });
|
|
109
|
+
// Prevent context menu
|
|
110
|
+
this.target.addEventListener("contextmenu", e => e.preventDefault());
|
|
111
|
+
}
|
|
112
|
+
detach() {
|
|
113
|
+
window.removeEventListener("keydown", this.onKeyDown);
|
|
114
|
+
window.removeEventListener("keyup", this.onKeyUp);
|
|
115
|
+
this.target.removeEventListener("mousedown", this.onMouseDown);
|
|
116
|
+
window.removeEventListener("mouseup", this.onMouseUp);
|
|
117
|
+
this.target.removeEventListener("mousemove", this.onMouseMove);
|
|
118
|
+
this.target.removeEventListener("wheel", this.onWheel);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=input_manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input_manager.js","sourceRoot":"","sources":["../../src/input/input_manager.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,6CAAQ,CAAA;IACR,iDAAU,CAAA;IACV,+CAAS,CAAA;AACb,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,MAAM,OAAO,YAAY;IAkBrB,YAAY,MAAa,EAAU,SAAsB,MAAM,CAAC,QAAQ,CAAC,IAAI;QAA1C,WAAM,GAAN,MAAM,CAAoC;QAfrE,aAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QAC7B,gBAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,iBAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QAEjC,cAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,iBAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QACjC,kBAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QAEnC,WAAM,GAAG,CAAC,CAAC;QACX,WAAM,GAAG,CAAC,CAAC;QACX,kBAAa,GAAG,CAAC,CAAC;QAClB,kBAAa,GAAG,CAAC,CAAC;QAElB,eAAU,GAAG,CAAC,CAAC;QA+Ed,cAAS,GAAG,CAAC,CAAgB,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC1B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;QACL,CAAC,CAAC;QAEM,YAAO,GAAG,CAAC,CAAgB,EAAE,EAAE;YACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;QACL,CAAC,CAAC;QAEM,gBAAW,GAAG,CAAC,CAAa,EAAE,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAEpC,CAAC;QACL,CAAC,CAAC;QAEM,cAAS,GAAG,CAAC,CAAa,EAAE,EAAE;YAClC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;QACL,CAAC,CAAC;QAEM,gBAAW,GAAG,CAAC,CAAa,EAAE,EAAE;YACpC,IAAI,QAAQ,CAAC,kBAAkB,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACrD,uCAAuC;gBACvC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,SAAS,CAAC;gBACjC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,SAAS,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACJ,oBAAoB;gBACpB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;gBAEjD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;gBAChC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;gBAE/B,IAAI,CAAC,aAAa,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACtC,IAAI,CAAC,aAAa,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBAEtC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACpB,CAAC;QACL,CAAC,CAAC;QAEM,YAAO,GAAG,CAAC,CAAa,EAAE,EAAE;YAChC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC;QAChC,CAAC,CAAC;QA7HE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAED,OAAO;QACH,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAED,MAAM;QACF,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAE3B,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,WAAW,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,eAAe,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,gBAAgB,CAAC,IAAY;QACzB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,aAAa,CAAC,MAAmB;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,iBAAiB,CAAC,MAAmB;QACjC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,kBAAkB,CAAC,MAAmB;QAClC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,UAAU;QACN,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;IAC5C,CAAC;IAED,YAAY;QACR,QAAQ,CAAC,eAAe,EAAE,CAAC;IAC/B,CAAC;IAEO,MAAM;QACV,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAE/C,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5D,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEnD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAEvE,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;IACzE,CAAC;IAEO,MAAM;QACV,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAElD,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/D,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEtD,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;CAoDJ"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Mat4 } from "@vicimpa/glm";
|
|
2
|
+
import { Node3D } from "../node.ts";
|
|
3
|
+
export declare class Camera3D extends Node3D {
|
|
4
|
+
fov: number;
|
|
5
|
+
near_plane: number;
|
|
6
|
+
far_plane: number;
|
|
7
|
+
get_projection_matrix(canvas: HTMLCanvasElement): Mat4;
|
|
8
|
+
get_view_matrix(): Mat4;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=camera3d.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"camera3d.d.ts","sourceRoot":"","sources":["../../src/node/camera3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAIpC,qBAAa,QAAS,SAAQ,MAAM;IAChC,GAAG,EAAC,MAAM,CAA0B;IACpC,UAAU,EAAC,MAAM,CAAO;IACxB,SAAS,EAAC,MAAM,CAAU;IAE1B,qBAAqB,CAAC,MAAM,EAAC,iBAAiB,GAAG,IAAI;IAWrD,eAAe,IAAI,IAAI;CAY1B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Mat4 } from "@vicimpa/glm";
|
|
2
|
+
import { Node3D } from "../node.js";
|
|
3
|
+
import { degrees_to_radians } from "../graphics/utility.js";
|
|
4
|
+
export class Camera3D extends Node3D {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.fov = degrees_to_radians(60);
|
|
8
|
+
this.near_plane = 0.1;
|
|
9
|
+
this.far_plane = 1000.0;
|
|
10
|
+
}
|
|
11
|
+
get_projection_matrix(canvas) {
|
|
12
|
+
const aspect = canvas.width / canvas.height;
|
|
13
|
+
return new Mat4().perspectiveNO(this.fov, aspect, this.near_plane, this.far_plane);
|
|
14
|
+
}
|
|
15
|
+
get_view_matrix() {
|
|
16
|
+
const view = new Mat4().identity();
|
|
17
|
+
// Inverse rotation
|
|
18
|
+
const invRot = this.rotation.clone().invert();
|
|
19
|
+
view.mul(new Mat4().fromQuat(invRot));
|
|
20
|
+
// Inverse translation
|
|
21
|
+
view.translate(this.position.clone().negate());
|
|
22
|
+
return view;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=camera3d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"camera3d.js","sourceRoot":"","sources":["../../src/node/camera3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,MAAM,OAAO,QAAS,SAAQ,MAAM;IAApC;;QACI,QAAG,GAAU,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACpC,eAAU,GAAU,GAAG,CAAC;QACxB,cAAS,GAAU,MAAM,CAAC;IAyB9B,CAAC;IAvBG,qBAAqB,CAAC,MAAwB;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;QAE5C,OAAO,IAAI,IAAI,EAAE,CAAC,aAAa,CAC3B,IAAI,CAAC,GAAG,EACR,MAAM,EACN,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,SAAS,CACjB,CAAC;IACN,CAAC;IAED,eAAe;QACX,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;QAEnC,mBAAmB;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAEtC,sBAAsB;QACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;QAE/C,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Mat4, Vec3, Vec4 } from "@vicimpa/glm";
|
|
2
|
+
import Engine from "../../engine.ts";
|
|
3
|
+
import { Framebuffer } from "../../graphics/framebuffer.ts";
|
|
4
|
+
import { ShaderProgram } from "../../graphics/shader_program.ts";
|
|
5
|
+
import { Node } from "../../node.ts";
|
|
6
|
+
import { Light } from "./light.ts";
|
|
7
|
+
export declare class DirectionalLight extends Light {
|
|
8
|
+
shader_program: ShaderProgram;
|
|
9
|
+
shadow_index: number;
|
|
10
|
+
framebuffer: Framebuffer;
|
|
11
|
+
directional_light_space_matrix: Mat4;
|
|
12
|
+
constructor(engine: Engine, name: string, color: Vec3, ambient: number, diffuse: number, specular: number, energy: number, shader_program?: ShaderProgram | null);
|
|
13
|
+
draw_shadow_map(view_matrix: Mat4, projection_matrix_3d: Mat4, projection_matrix_2d: Mat4, time: number, delta_time: number): void;
|
|
14
|
+
set_uniforms(array_name: string, index: number): void;
|
|
15
|
+
protected on_parented(): void;
|
|
16
|
+
protected on_removed(node: this, engine: Engine, parent: Node): void;
|
|
17
|
+
get_frustum_corners_world_space(projection_matrix: Mat4, view_matrix: Mat4): Vec4[];
|
|
18
|
+
get_light_space_matrix(light_dir: Vec3, corners: Vec4[]): Mat4;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=directional_light.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directional_light.d.ts","sourceRoot":"","sources":["../../../src/node/lights/directional_light.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,IAAI,EAAQ,IAAI,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAkB,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,qBAAa,gBAAiB,SAAQ,KAAK;IAEvC,cAAc,EAAC,aAAa,CAAC;IAC7B,YAAY,EAAC,MAAM,CAAC;IACpB,WAAW,EAAC,WAAW,CAAC;IAExB,8BAA8B,EAAC,IAAI,CAAc;gBAG7C,MAAM,EAAC,MAAM,EACb,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,IAAI,EACV,OAAO,EAAC,MAAM,EACd,OAAO,EAAC,MAAM,EACd,QAAQ,EAAC,MAAM,EACf,MAAM,EAAC,MAAM,EACb,cAAc,GAAC,aAAa,GAAC,IAAW;IAW5C,eAAe,CAAC,WAAW,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IA6ClI,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAerD,SAAS,CAAC,WAAW,IAAI,IAAI;IAK7B,SAAS,CAAC,UAAU,CAAC,IAAI,EAAC,IAAI,EAAE,MAAM,EAAC,MAAM,EAAE,MAAM,EAAC,IAAI,GAAG,IAAI;IAQjE,+BAA+B,CAAC,iBAAiB,EAAC,IAAI,EAAE,WAAW,EAAC,IAAI,GAAE,IAAI,EAAE;IAmBhF,sBAAsB,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAC,IAAI,EAAE,GAAE,IAAI;CAkD/D"}
|