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.
Files changed (162) hide show
  1. package/README.md +61 -0
  2. package/dist/engine.d.ts +18 -0
  3. package/dist/engine.d.ts.map +1 -0
  4. package/dist/engine.js +23 -0
  5. package/dist/engine.js.map +1 -0
  6. package/dist/graphics/assets/asset_format/format.d.ts +115 -0
  7. package/dist/graphics/assets/asset_format/format.d.ts.map +1 -0
  8. package/dist/graphics/assets/asset_format/format.js +29 -0
  9. package/dist/graphics/assets/asset_format/format.js.map +1 -0
  10. package/dist/graphics/assets/asset_loaders/obj.d.ts +127 -0
  11. package/dist/graphics/assets/asset_loaders/obj.d.ts.map +1 -0
  12. package/dist/graphics/assets/asset_loaders/obj.js +762 -0
  13. package/dist/graphics/assets/asset_loaders/obj.js.map +1 -0
  14. package/dist/graphics/assets/material.d.ts +33 -0
  15. package/dist/graphics/assets/material.d.ts.map +1 -0
  16. package/dist/graphics/assets/material.js +104 -0
  17. package/dist/graphics/assets/material.js.map +1 -0
  18. package/dist/graphics/assets/mesh.d.ts +17 -0
  19. package/dist/graphics/assets/mesh.d.ts.map +1 -0
  20. package/dist/graphics/assets/mesh.js +47 -0
  21. package/dist/graphics/assets/mesh.js.map +1 -0
  22. package/dist/graphics/assets/model.d.ts +13 -0
  23. package/dist/graphics/assets/model.d.ts.map +1 -0
  24. package/dist/graphics/assets/model.js +18 -0
  25. package/dist/graphics/assets/model.js.map +1 -0
  26. package/dist/graphics/assets/texture.d.ts +93 -0
  27. package/dist/graphics/assets/texture.d.ts.map +1 -0
  28. package/dist/graphics/assets/texture.js +318 -0
  29. package/dist/graphics/assets/texture.js.map +1 -0
  30. package/dist/graphics/assets/uniform_buffer.d.ts +28 -0
  31. package/dist/graphics/assets/uniform_buffer.d.ts.map +1 -0
  32. package/dist/graphics/assets/uniform_buffer.js +132 -0
  33. package/dist/graphics/assets/uniform_buffer.js.map +1 -0
  34. package/dist/graphics/assets/vaos.d.ts +9 -0
  35. package/dist/graphics/assets/vaos.d.ts.map +1 -0
  36. package/dist/graphics/assets/vaos.js +98 -0
  37. package/dist/graphics/assets/vaos.js.map +1 -0
  38. package/dist/graphics/framebuffer.d.ts +77 -0
  39. package/dist/graphics/framebuffer.d.ts.map +1 -0
  40. package/dist/graphics/framebuffer.js +265 -0
  41. package/dist/graphics/framebuffer.js.map +1 -0
  42. package/dist/graphics/graphics_manager.d.ts +70 -0
  43. package/dist/graphics/graphics_manager.d.ts.map +1 -0
  44. package/dist/graphics/graphics_manager.js +503 -0
  45. package/dist/graphics/graphics_manager.js.map +1 -0
  46. package/dist/graphics/shader_program.d.ts +66 -0
  47. package/dist/graphics/shader_program.d.ts.map +1 -0
  48. package/dist/graphics/shader_program.js +92 -0
  49. package/dist/graphics/shader_program.js.map +1 -0
  50. package/dist/graphics/utility.d.ts +4 -0
  51. package/dist/graphics/utility.d.ts.map +1 -0
  52. package/dist/graphics/utility.js +33 -0
  53. package/dist/graphics/utility.js.map +1 -0
  54. package/dist/hook_manager.d.ts +33 -0
  55. package/dist/hook_manager.d.ts.map +1 -0
  56. package/dist/hook_manager.js +102 -0
  57. package/dist/hook_manager.js.map +1 -0
  58. package/dist/index.d.ts +27 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +27 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/input/input_manager.d.ts +41 -0
  63. package/dist/input/input_manager.d.ts.map +1 -0
  64. package/dist/input/input_manager.js +121 -0
  65. package/dist/input/input_manager.js.map +1 -0
  66. package/dist/node/camera3d.d.ts +10 -0
  67. package/dist/node/camera3d.d.ts.map +1 -0
  68. package/dist/node/camera3d.js +25 -0
  69. package/dist/node/camera3d.js.map +1 -0
  70. package/dist/node/lights/directional_light.d.ts +20 -0
  71. package/dist/node/lights/directional_light.d.ts.map +1 -0
  72. package/dist/node/lights/directional_light.js +111 -0
  73. package/dist/node/lights/directional_light.js.map +1 -0
  74. package/dist/node/lights/light.d.ts +15 -0
  75. package/dist/node/lights/light.d.ts.map +1 -0
  76. package/dist/node/lights/light.js +24 -0
  77. package/dist/node/lights/light.js.map +1 -0
  78. package/dist/node/lights/point_light.d.ts +26 -0
  79. package/dist/node/lights/point_light.d.ts.map +1 -0
  80. package/dist/node/lights/point_light.js +109 -0
  81. package/dist/node/lights/point_light.js.map +1 -0
  82. package/dist/node/lights/spot_light.d.ts +13 -0
  83. package/dist/node/lights/spot_light.d.ts.map +1 -0
  84. package/dist/node/lights/spot_light.js +35 -0
  85. package/dist/node/lights/spot_light.js.map +1 -0
  86. package/dist/node/lights.d.ts +43 -0
  87. package/dist/node/lights.d.ts.map +1 -0
  88. package/dist/node/lights.js +201 -0
  89. package/dist/node/lights.js.map +1 -0
  90. package/dist/node/object3d.d.ts +10 -0
  91. package/dist/node/object3d.d.ts.map +1 -0
  92. package/dist/node/object3d.js +60 -0
  93. package/dist/node/object3d.js.map +1 -0
  94. package/dist/node/skybox.d.ts +15 -0
  95. package/dist/node/skybox.d.ts.map +1 -0
  96. package/dist/node/skybox.js +33 -0
  97. package/dist/node/skybox.js.map +1 -0
  98. package/dist/node/sprite2d.d.ts +14 -0
  99. package/dist/node/sprite2d.d.ts.map +1 -0
  100. package/dist/node/sprite2d.js +33 -0
  101. package/dist/node/sprite2d.js.map +1 -0
  102. package/dist/node.d.ts +76 -0
  103. package/dist/node.d.ts.map +1 -0
  104. package/dist/node.js +308 -0
  105. package/dist/node.js.map +1 -0
  106. package/dist/scene.d.ts +19 -0
  107. package/dist/scene.d.ts.map +1 -0
  108. package/dist/scene.js +50 -0
  109. package/dist/scene.js.map +1 -0
  110. package/dist/shader_language/grammar.d.ts +2 -0
  111. package/dist/shader_language/grammar.d.ts.map +1 -0
  112. package/dist/shader_language/grammar.js +971 -0
  113. package/dist/shader_language/grammar.js.map +1 -0
  114. package/dist/shader_language/tokenizer.d.ts +3 -0
  115. package/dist/shader_language/tokenizer.d.ts.map +1 -0
  116. package/dist/shader_language/tokenizer.js +50 -0
  117. package/dist/shader_language/tokenizer.js.map +1 -0
  118. package/dist/shaders/default_2d.fs.d.ts +3 -0
  119. package/dist/shaders/default_2d.fs.d.ts.map +1 -0
  120. package/dist/shaders/default_2d.fs.js +14 -0
  121. package/dist/shaders/default_2d.fs.js.map +1 -0
  122. package/dist/shaders/default_2d.vs.d.ts +3 -0
  123. package/dist/shaders/default_2d.vs.d.ts.map +1 -0
  124. package/dist/shaders/default_2d.vs.js +16 -0
  125. package/dist/shaders/default_2d.vs.js.map +1 -0
  126. package/dist/shaders/default_3d.fs.d.ts +3 -0
  127. package/dist/shaders/default_3d.fs.d.ts.map +1 -0
  128. package/dist/shaders/default_3d.fs.js +327 -0
  129. package/dist/shaders/default_3d.fs.js.map +1 -0
  130. package/dist/shaders/default_3d.vs.d.ts +3 -0
  131. package/dist/shaders/default_3d.vs.d.ts.map +1 -0
  132. package/dist/shaders/default_3d.vs.js +36 -0
  133. package/dist/shaders/default_3d.vs.js.map +1 -0
  134. package/dist/shaders/default_directional_shadow.fs.d.ts +3 -0
  135. package/dist/shaders/default_directional_shadow.fs.d.ts.map +1 -0
  136. package/dist/shaders/default_directional_shadow.fs.js +6 -0
  137. package/dist/shaders/default_directional_shadow.fs.js.map +1 -0
  138. package/dist/shaders/default_directional_shadow.vs.d.ts +3 -0
  139. package/dist/shaders/default_directional_shadow.vs.d.ts.map +1 -0
  140. package/dist/shaders/default_directional_shadow.vs.js +11 -0
  141. package/dist/shaders/default_directional_shadow.vs.js.map +1 -0
  142. package/dist/shaders/default_point_shadow.fs.d.ts +3 -0
  143. package/dist/shaders/default_point_shadow.fs.d.ts.map +1 -0
  144. package/dist/shaders/default_point_shadow.fs.js +18 -0
  145. package/dist/shaders/default_point_shadow.fs.js.map +1 -0
  146. package/dist/shaders/default_point_shadow.vs.d.ts +3 -0
  147. package/dist/shaders/default_point_shadow.vs.d.ts.map +1 -0
  148. package/dist/shaders/default_point_shadow.vs.js +14 -0
  149. package/dist/shaders/default_point_shadow.vs.js.map +1 -0
  150. package/dist/shaders/default_skybox.fs.d.ts +3 -0
  151. package/dist/shaders/default_skybox.fs.d.ts.map +1 -0
  152. package/dist/shaders/default_skybox.fs.js +14 -0
  153. package/dist/shaders/default_skybox.fs.js.map +1 -0
  154. package/dist/shaders/default_skybox.vs.d.ts +3 -0
  155. package/dist/shaders/default_skybox.vs.d.ts.map +1 -0
  156. package/dist/shaders/default_skybox.vs.js +23 -0
  157. package/dist/shaders/default_skybox.vs.js.map +1 -0
  158. package/dist/utility.d.ts +5 -0
  159. package/dist/utility.d.ts.map +1 -0
  160. package/dist/utility.js +19 -0
  161. package/dist/utility.js.map +1 -0
  162. 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,4 @@
1
+ export declare function degrees_to_radians(degrees: number): number;
2
+ export declare function get_uniform_label_index(raw_label: string): number;
3
+ export declare function normalize_uniform_label(raw_label: string): string;
4
+ //# sourceMappingURL=utility.d.ts.map
@@ -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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"}
@@ -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":"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"}
@@ -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"}