vanta-engine 1.0.2 → 1.0.3

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 (156) hide show
  1. package/dist/chunk-AAWFTQHP.js +35 -0
  2. package/dist/chunk-AAWFTQHP.js.map +1 -0
  3. package/dist/index.cjs +8407 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +755 -0
  6. package/dist/index.d.ts +755 -27
  7. package/dist/index.js +8368 -26
  8. package/dist/index.js.map +1 -1
  9. package/dist/module-A2C3IOOM.js +11 -0
  10. package/dist/module-A2C3IOOM.js.map +1 -0
  11. package/package.json +8 -7
  12. package/dist/engine.d.ts +0 -18
  13. package/dist/engine.d.ts.map +0 -1
  14. package/dist/engine.js +0 -23
  15. package/dist/engine.js.map +0 -1
  16. package/dist/graphics/assets/asset_format/format.d.ts +0 -115
  17. package/dist/graphics/assets/asset_format/format.d.ts.map +0 -1
  18. package/dist/graphics/assets/asset_format/format.js +0 -29
  19. package/dist/graphics/assets/asset_format/format.js.map +0 -1
  20. package/dist/graphics/assets/asset_loaders/obj.d.ts +0 -127
  21. package/dist/graphics/assets/asset_loaders/obj.d.ts.map +0 -1
  22. package/dist/graphics/assets/asset_loaders/obj.js +0 -762
  23. package/dist/graphics/assets/asset_loaders/obj.js.map +0 -1
  24. package/dist/graphics/assets/material.d.ts +0 -33
  25. package/dist/graphics/assets/material.d.ts.map +0 -1
  26. package/dist/graphics/assets/material.js +0 -104
  27. package/dist/graphics/assets/material.js.map +0 -1
  28. package/dist/graphics/assets/mesh.d.ts +0 -17
  29. package/dist/graphics/assets/mesh.d.ts.map +0 -1
  30. package/dist/graphics/assets/mesh.js +0 -47
  31. package/dist/graphics/assets/mesh.js.map +0 -1
  32. package/dist/graphics/assets/model.d.ts +0 -13
  33. package/dist/graphics/assets/model.d.ts.map +0 -1
  34. package/dist/graphics/assets/model.js +0 -18
  35. package/dist/graphics/assets/model.js.map +0 -1
  36. package/dist/graphics/assets/texture.d.ts +0 -93
  37. package/dist/graphics/assets/texture.d.ts.map +0 -1
  38. package/dist/graphics/assets/texture.js +0 -318
  39. package/dist/graphics/assets/texture.js.map +0 -1
  40. package/dist/graphics/assets/uniform_buffer.d.ts +0 -28
  41. package/dist/graphics/assets/uniform_buffer.d.ts.map +0 -1
  42. package/dist/graphics/assets/uniform_buffer.js +0 -132
  43. package/dist/graphics/assets/uniform_buffer.js.map +0 -1
  44. package/dist/graphics/assets/vaos.d.ts +0 -9
  45. package/dist/graphics/assets/vaos.d.ts.map +0 -1
  46. package/dist/graphics/assets/vaos.js +0 -98
  47. package/dist/graphics/assets/vaos.js.map +0 -1
  48. package/dist/graphics/framebuffer.d.ts +0 -77
  49. package/dist/graphics/framebuffer.d.ts.map +0 -1
  50. package/dist/graphics/framebuffer.js +0 -265
  51. package/dist/graphics/framebuffer.js.map +0 -1
  52. package/dist/graphics/graphics_manager.d.ts +0 -70
  53. package/dist/graphics/graphics_manager.d.ts.map +0 -1
  54. package/dist/graphics/graphics_manager.js +0 -503
  55. package/dist/graphics/graphics_manager.js.map +0 -1
  56. package/dist/graphics/shader_program.d.ts +0 -66
  57. package/dist/graphics/shader_program.d.ts.map +0 -1
  58. package/dist/graphics/shader_program.js +0 -92
  59. package/dist/graphics/shader_program.js.map +0 -1
  60. package/dist/graphics/utility.d.ts +0 -14
  61. package/dist/graphics/utility.d.ts.map +0 -1
  62. package/dist/graphics/utility.js +0 -81
  63. package/dist/graphics/utility.js.map +0 -1
  64. package/dist/hook_manager.d.ts +0 -33
  65. package/dist/hook_manager.d.ts.map +0 -1
  66. package/dist/hook_manager.js +0 -102
  67. package/dist/hook_manager.js.map +0 -1
  68. package/dist/index.d.ts.map +0 -1
  69. package/dist/input/input_manager.d.ts +0 -41
  70. package/dist/input/input_manager.d.ts.map +0 -1
  71. package/dist/input/input_manager.js +0 -121
  72. package/dist/input/input_manager.js.map +0 -1
  73. package/dist/node/camera3d.d.ts +0 -10
  74. package/dist/node/camera3d.d.ts.map +0 -1
  75. package/dist/node/camera3d.js +0 -25
  76. package/dist/node/camera3d.js.map +0 -1
  77. package/dist/node/lights/directional_light.d.ts +0 -20
  78. package/dist/node/lights/directional_light.d.ts.map +0 -1
  79. package/dist/node/lights/directional_light.js +0 -111
  80. package/dist/node/lights/directional_light.js.map +0 -1
  81. package/dist/node/lights/light.d.ts +0 -15
  82. package/dist/node/lights/light.d.ts.map +0 -1
  83. package/dist/node/lights/light.js +0 -24
  84. package/dist/node/lights/light.js.map +0 -1
  85. package/dist/node/lights/point_light.d.ts +0 -26
  86. package/dist/node/lights/point_light.d.ts.map +0 -1
  87. package/dist/node/lights/point_light.js +0 -109
  88. package/dist/node/lights/point_light.js.map +0 -1
  89. package/dist/node/lights/spot_light.d.ts +0 -13
  90. package/dist/node/lights/spot_light.d.ts.map +0 -1
  91. package/dist/node/lights/spot_light.js +0 -35
  92. package/dist/node/lights/spot_light.js.map +0 -1
  93. package/dist/node/object3d.d.ts +0 -10
  94. package/dist/node/object3d.d.ts.map +0 -1
  95. package/dist/node/object3d.js +0 -60
  96. package/dist/node/object3d.js.map +0 -1
  97. package/dist/node/skybox.d.ts +0 -15
  98. package/dist/node/skybox.d.ts.map +0 -1
  99. package/dist/node/skybox.js +0 -33
  100. package/dist/node/skybox.js.map +0 -1
  101. package/dist/node/sprite2d.d.ts +0 -14
  102. package/dist/node/sprite2d.d.ts.map +0 -1
  103. package/dist/node/sprite2d.js +0 -33
  104. package/dist/node/sprite2d.js.map +0 -1
  105. package/dist/node.d.ts +0 -76
  106. package/dist/node.d.ts.map +0 -1
  107. package/dist/node.js +0 -308
  108. package/dist/node.js.map +0 -1
  109. package/dist/scene.d.ts +0 -19
  110. package/dist/scene.d.ts.map +0 -1
  111. package/dist/scene.js +0 -50
  112. package/dist/scene.js.map +0 -1
  113. package/dist/shaders/default_2d.fs.d.ts +0 -3
  114. package/dist/shaders/default_2d.fs.d.ts.map +0 -1
  115. package/dist/shaders/default_2d.fs.js +0 -14
  116. package/dist/shaders/default_2d.fs.js.map +0 -1
  117. package/dist/shaders/default_2d.vs.d.ts +0 -3
  118. package/dist/shaders/default_2d.vs.d.ts.map +0 -1
  119. package/dist/shaders/default_2d.vs.js +0 -16
  120. package/dist/shaders/default_2d.vs.js.map +0 -1
  121. package/dist/shaders/default_3d.fs.d.ts +0 -3
  122. package/dist/shaders/default_3d.fs.d.ts.map +0 -1
  123. package/dist/shaders/default_3d.fs.js +0 -327
  124. package/dist/shaders/default_3d.fs.js.map +0 -1
  125. package/dist/shaders/default_3d.vs.d.ts +0 -3
  126. package/dist/shaders/default_3d.vs.d.ts.map +0 -1
  127. package/dist/shaders/default_3d.vs.js +0 -36
  128. package/dist/shaders/default_3d.vs.js.map +0 -1
  129. package/dist/shaders/default_directional_shadow.fs.d.ts +0 -3
  130. package/dist/shaders/default_directional_shadow.fs.d.ts.map +0 -1
  131. package/dist/shaders/default_directional_shadow.fs.js +0 -6
  132. package/dist/shaders/default_directional_shadow.fs.js.map +0 -1
  133. package/dist/shaders/default_directional_shadow.vs.d.ts +0 -3
  134. package/dist/shaders/default_directional_shadow.vs.d.ts.map +0 -1
  135. package/dist/shaders/default_directional_shadow.vs.js +0 -11
  136. package/dist/shaders/default_directional_shadow.vs.js.map +0 -1
  137. package/dist/shaders/default_point_shadow.fs.d.ts +0 -3
  138. package/dist/shaders/default_point_shadow.fs.d.ts.map +0 -1
  139. package/dist/shaders/default_point_shadow.fs.js +0 -18
  140. package/dist/shaders/default_point_shadow.fs.js.map +0 -1
  141. package/dist/shaders/default_point_shadow.vs.d.ts +0 -3
  142. package/dist/shaders/default_point_shadow.vs.d.ts.map +0 -1
  143. package/dist/shaders/default_point_shadow.vs.js +0 -14
  144. package/dist/shaders/default_point_shadow.vs.js.map +0 -1
  145. package/dist/shaders/default_skybox.fs.d.ts +0 -3
  146. package/dist/shaders/default_skybox.fs.d.ts.map +0 -1
  147. package/dist/shaders/default_skybox.fs.js +0 -14
  148. package/dist/shaders/default_skybox.fs.js.map +0 -1
  149. package/dist/shaders/default_skybox.vs.d.ts +0 -3
  150. package/dist/shaders/default_skybox.vs.d.ts.map +0 -1
  151. package/dist/shaders/default_skybox.vs.js +0 -23
  152. package/dist/shaders/default_skybox.vs.js.map +0 -1
  153. package/dist/utility.d.ts +0 -5
  154. package/dist/utility.d.ts.map +0 -1
  155. package/dist/utility.js +0 -19
  156. package/dist/utility.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,27 +1,755 @@
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
1
+ import { Mat4, Vec3, Quat, Vec2, Vec4, Mat2, Mat3 } from '@vicimpa/glm';
2
+ import { LuaFactory, LuaEngine } from 'wasmoon';
3
+
4
+ declare enum MouseButton {
5
+ Left = 0,
6
+ Middle = 1,
7
+ Right = 2
8
+ }
9
+ declare class InputManager {
10
+ private target;
11
+ engine: Engine;
12
+ private keysDown;
13
+ private keysPressed;
14
+ private keysReleased;
15
+ private mouseDown;
16
+ private mousePressed;
17
+ private mouseReleased;
18
+ mouseX: number;
19
+ mouseY: number;
20
+ mouse_delta_x: number;
21
+ mouse_delta_y: number;
22
+ wheelDelta: number;
23
+ constructor(engine: Engine, target?: HTMLElement);
24
+ destroy(): void;
25
+ update(): void;
26
+ is_key_down(code: string): boolean;
27
+ was_key_pressed(code: string): boolean;
28
+ was_key_released(code: string): boolean;
29
+ is_mouse_down(button: MouseButton): boolean;
30
+ was_mouse_pressed(button: MouseButton): boolean;
31
+ was_mouse_released(button: MouseButton): boolean;
32
+ lock_mouse(): void;
33
+ unlock_mouse(): void;
34
+ private attach;
35
+ private detach;
36
+ private onKeyDown;
37
+ private onKeyUp;
38
+ private onMouseDown;
39
+ private onMouseUp;
40
+ private onMouseMove;
41
+ private onWheel;
42
+ }
43
+
44
+ declare class Utility {
45
+ static load_text_file(url: string): Promise<string>;
46
+ static load_image(image_asset_path: string, options?: ImageBitmapOptions): Promise<ImageBitmap>;
47
+ }
48
+
49
+ type Constructor<T> = new (...args: any[]) => T;
50
+ declare class Node {
51
+ engine: Engine;
52
+ name: string;
53
+ parent: Node | null;
54
+ children: Array<Node>;
55
+ on_ready_callback: (node: Node, engine: Engine) => void;
56
+ on_removed_callback: (node: Node, engine: Engine, parent: Node) => void;
57
+ on_update_callback: (node: Node, engine: Engine, time: number, delta_time: number) => void;
58
+ on_render_callback: (node: Node, engine: Engine, time: number, delta_time: number) => void;
59
+ private lua_url;
60
+ constructor(engine: Engine, name: string);
61
+ set_lua_file(url: string): Promise<void>;
62
+ protected on_ready(node: this, engine: Engine): void;
63
+ protected on_removed(node: this, engine: Engine, parent: Node): void;
64
+ protected on_update(node: this, engine: Engine, time: number, delta_time: number): void;
65
+ protected on_render(node: this, engine: Engine, time: number, delta_time: number): void;
66
+ protected on_parented(): void;
67
+ has_child(node: Node | string): boolean;
68
+ has_parent(node: Node | string): boolean;
69
+ get_parent(node_name: string): Node | null;
70
+ get_parent_of_type<T>(node_type: Constructor<T>): T | null;
71
+ get_child(name: string): Node | null;
72
+ get_children_of_type<T>(node_type: Constructor<T>): T[];
73
+ push_child(node: Node): void;
74
+ remove_child(node: Node | string): void;
75
+ update(time: number, delta_time: number): void;
76
+ render(view_matrix: Mat4, projection_matrix_3d: Mat4, projection_matrix_2d: Mat4, time: number, delta_time: number): void;
77
+ protected render_children(view_matrix: Mat4, projection_matrix_3d: Mat4, projection_matrix_2d: Mat4, time: number, delta_time: number): void;
78
+ protected render_class(view_matrix: Mat4, projection_matrix_3d: Mat4, projection_matrix_2d: Mat4, time: number, delta_time: number): void;
79
+ }
80
+ declare class Node2D extends Node {
81
+ private stored_position;
82
+ private stored_rotation;
83
+ private stored_scale;
84
+ constructor(engine: Engine, name: string);
85
+ get position(): Vec2;
86
+ set position(value: Vec2);
87
+ get rotation(): number;
88
+ set rotation(value: number);
89
+ get scale(): Vec2;
90
+ set scale(value: Vec2);
91
+ private proxy_on_change_position;
92
+ private proxy_on_change_scale;
93
+ protected on_change_position(new_value: Vec2): void;
94
+ protected on_change_rotation(new_value: number): void;
95
+ protected on_change_scale(new_value: Vec2): void;
96
+ get_model_matrix(): Mat4;
97
+ get_world_matrix(): Mat4;
98
+ }
99
+ declare class Node3D extends Node {
100
+ private stored_position;
101
+ private stored_rotation;
102
+ private stored_scale;
103
+ constructor(engine: Engine, name: string);
104
+ get position(): Vec3;
105
+ set position(value: Vec3);
106
+ get rotation(): Quat;
107
+ set rotation(value: Quat);
108
+ get scale(): Vec3;
109
+ set scale(value: Vec3);
110
+ private proxy_on_change_position;
111
+ private proxy_on_change_rotation;
112
+ private proxy_on_change_scale;
113
+ protected on_change_position(new_value: Vec3): void;
114
+ protected on_change_rotation(new_value: Quat): void;
115
+ protected on_change_scale(new_value: Vec3): void;
116
+ get_world_position(): Vec3;
117
+ get_parent_world_matrix(): Mat4;
118
+ get_model_matrix(): Mat4;
119
+ get_world_matrix(): Mat4;
120
+ }
121
+
122
+ declare class HookManager {
123
+ engine: Engine;
124
+ lua_factory: LuaFactory;
125
+ lua_engine_promise: Promise<LuaEngine>;
126
+ lua: LuaEngine | null;
127
+ on_ready_callbacks: {
128
+ [key: string]: (node: Node, engine: Engine) => void;
129
+ };
130
+ on_removed_callbacks: {
131
+ [key: string]: (node: Node, engine: Engine, parent: Node) => void;
132
+ };
133
+ on_update_callbacks: {
134
+ [key: string]: (node: Node, engine: Engine, time: number, delta_time: number) => void;
135
+ };
136
+ on_render_callbacks: {
137
+ [key: string]: (node: Node, engine: Engine, time: number, delta_time: number) => void;
138
+ };
139
+ constructor(engine: Engine);
140
+ call_on_ready_callback(url: string, node: Node, engine: Engine): void;
141
+ call_on_removed_callback(url: string, node: Node, engine: Engine, parent: Node): void;
142
+ call_on_update_callback(url: string, node: Node, engine: Engine, time: number, delta_time: number): void;
143
+ call_on_render_callback(url: string, node: Node, engine: Engine, time: number, delta_time: number): void;
144
+ private do_lua_file_url;
145
+ add_on_ready_callback(url: string): Promise<void>;
146
+ add_on_removed_callback(url: string): Promise<void>;
147
+ add_on_update_callback(url: string): Promise<void>;
148
+ add_on_render_callback(url: string): Promise<void>;
149
+ set_globals(): Promise<void>;
150
+ }
151
+
152
+ declare class Camera3D extends Node3D {
153
+ fov: number;
154
+ near_plane: number;
155
+ far_plane: number;
156
+ get_projection_matrix(canvas: HTMLCanvasElement): Mat4;
157
+ get_view_matrix(): Mat4;
158
+ }
159
+
160
+ declare class Scene {
161
+ name: string;
162
+ engine: Engine;
163
+ on_scene_start_callback: (engine: Engine, scene: Scene) => Promise<void>;
164
+ on_scene_update_callback: (engine: Engine, scene: Scene, time: number, delta_time: number) => void;
165
+ root_node: Node | null;
166
+ main_camera_3d: Camera3D | null;
167
+ rendering_depth_map: boolean;
168
+ constructor(engine: Engine, name: string, root_node?: Node | null, main_camera?: Camera3D | null);
169
+ get_node(name: string): Node | null;
170
+ private get_node_search;
171
+ update(time: number, delta_time: number): void;
172
+ render(view_matrix: Mat4, projection_matrix_3d: Mat4, projection_matrix_2d: Mat4, time: number, delta_time: number): void;
173
+ }
174
+
175
+ declare class Engine {
176
+ canvas: HTMLCanvasElement;
177
+ graphics_manager: GraphicsManager;
178
+ input_manager: InputManager;
179
+ hook_manager: HookManager;
180
+ main_scene: Scene;
181
+ on_global_start_callback: (engine: Engine) => Promise<void>;
182
+ on_global_update_callback: (engine: Engine, time: number, delta_time: number) => void;
183
+ UTIL: typeof Utility;
184
+ constructor(canvas: HTMLCanvasElement, main_scene?: Scene | null, on_global_start_callback?: (engine: Engine) => Promise<void>, on_global_update_callback?: (engine: Engine, time: number, delta_time: number) => void);
185
+ start(): Promise<void>;
186
+ }
187
+
188
+ type WebGLShaderType = number;
189
+ declare enum WebGLUniformType {
190
+ TEXTURE_2D = 0,
191
+ TEXTURE_2D_ARRAY = 1,
192
+ TEXTURE_CUBE_MAP = 2,
193
+ SHADOW_2D = 3,
194
+ SHADOW_2D_ARRAY = 4,
195
+ SHADOW_CUBE_MAP = 5,
196
+ STRUCT = 6,
197
+ F = 7,
198
+ I = 8,
199
+ B = 9,
200
+ F2V = 10,
201
+ I2V = 11,
202
+ F3V = 12,
203
+ I3V = 13,
204
+ F4V = 14,
205
+ I4V = 15,
206
+ F2M = 16,
207
+ F3M = 17,
208
+ F4M = 18
209
+ }
210
+ interface WebGLUniform {
211
+ label: string;
212
+ type: WebGLUniformType;
213
+ is_array: boolean;
214
+ texture_unit?: number;
215
+ }
216
+ interface UBOParameter {
217
+ label: string;
218
+ index: number;
219
+ offset: number;
220
+ }
221
+ interface UBOBase {
222
+ webgl_buffer: WebGLBuffer;
223
+ }
224
+ interface UBOParameters {
225
+ [parameter: string]: UBOParameter;
226
+ }
227
+ type UBO = UBOBase & UBOParameters;
228
+ declare class ShaderProgram {
229
+ gl: WebGLRenderingContext;
230
+ gm: GraphicsManager;
231
+ name: string;
232
+ shaders: Array<WebGLShader>;
233
+ webgl_shader_program: WebGLProgram | null;
234
+ uniforms: {
235
+ [key: string]: WebGLUniform;
236
+ };
237
+ uniform_locs: {
238
+ [key: string]: WebGLUniformLocation | null;
239
+ };
240
+ texture_counter: number;
241
+ ubo_counter: number;
242
+ ubos: {
243
+ [location: string]: UBO;
244
+ };
245
+ constructor(name: string, gm: GraphicsManager, gl: WebGLRenderingContext);
246
+ add_shader(type: WebGLShaderType, source: string): void;
247
+ add_uniform(label: string, uniform_type: WebGLUniformType): void;
248
+ build(): void;
249
+ use(): void;
250
+ }
251
+
252
+ declare enum TextureType {
253
+ COLOR = "COLOR",
254
+ DEPTH = "DEPTH",
255
+ COLOR_ARRAY = "COLOR_ARRAY",
256
+ DEPTH_ARRAY = "DEPTH_ARRAY"
257
+ }
258
+ declare class Texture implements Disposable {
259
+ gm: GraphicsManager;
260
+ name: string;
261
+ webgl_texture: WebGLTexture;
262
+ texture_type: TextureType;
263
+ internal_format: number;
264
+ format: number;
265
+ image_type: number;
266
+ width: number;
267
+ height: number;
268
+ image_array_size: number;
269
+ mip_level: number;
270
+ texture_parameters: {
271
+ [parameter_name: number]: number;
272
+ };
273
+ constructor(gm: GraphicsManager, name: string, width: number, height: number, texture_type: TextureType);
274
+ constructor(gm: GraphicsManager, name: string, width: number, height: number, texture_type: TextureType, texture_parameters: {
275
+ [parameter_name: number]: number;
276
+ });
277
+ constructor(gm: GraphicsManager, name: string, width: number, height: number, texture_type: TextureType, texture_parameters: {
278
+ [parameter_name: number]: number;
279
+ }, image_type: number);
280
+ constructor(gm: GraphicsManager, name: string, images: number, width: number, height: number, texture_type: TextureType);
281
+ constructor(gm: GraphicsManager, name: string, images: number, width: number, height: number, texture_type: TextureType, texture_parameters: {
282
+ [parameter_name: number]: number;
283
+ });
284
+ constructor(gm: GraphicsManager, name: string, images: number, width: number, height: number, texture_type: TextureType, texture_parameters: {
285
+ [parameter_name: number]: number;
286
+ }, mip_level: number);
287
+ constructor(gm: GraphicsManager, name: string, images: number, width: number, height: number, texture_type: TextureType, texture_parameters: {
288
+ [parameter_name: number]: number;
289
+ }, mip_level: number, image_type: number);
290
+ constructor(gm: GraphicsManager, name: string, images: TexImageSource[] | number, texture_type: TextureType, texture_parameters: {
291
+ [parameter_name: number]: number;
292
+ });
293
+ constructor(gm: GraphicsManager, name: string, images: TexImageSource[] | number, texture_type: TextureType, texture_parameters: {
294
+ [parameter_name: number]: number;
295
+ }, mip_level: number);
296
+ constructor(gm: GraphicsManager, name: string, images: TexImageSource[] | number, texture_type: TextureType, texture_parameters: {
297
+ [parameter_name: number]: number;
298
+ }, mip_level: number, image_type: number);
299
+ constructor(gm: GraphicsManager, name: string, image: TexImageSource, texture_type: TextureType, texture_parameters: {
300
+ [parameter_name: number]: number;
301
+ });
302
+ constructor(gm: GraphicsManager, name: string, image: TexImageSource, texture_type: TextureType, texture_parameters: {
303
+ [parameter_name: number]: number;
304
+ }, mip_level: number);
305
+ constructor(gm: GraphicsManager, name: string, image: TexImageSource, texture_type: TextureType, texture_parameters: {
306
+ [parameter_name: number]: number;
307
+ }, mip_level: number, image_type: number);
308
+ resize_texture_array(new_size: number): void;
309
+ [Symbol.dispose](): void;
310
+ private create_texture;
311
+ private create_depth_array_texture;
312
+ private create_color_array_texture;
313
+ private create_color_texture;
314
+ private create_depth_texture;
315
+ }
316
+ declare class CubeMapTexture implements Disposable {
317
+ gm: GraphicsManager;
318
+ name: string;
319
+ webgl_texture: WebGLTexture;
320
+ size: number;
321
+ constructor(gm: GraphicsManager, name: string, size: number, texture_type: TextureType);
322
+ constructor(gm: GraphicsManager, name: string, size: number, texture_type: TextureType, mip_level: number);
323
+ constructor(gm: GraphicsManager, name: string, size: number, texture_type: TextureType, mip_level: number, image_type: number);
324
+ constructor(gm: GraphicsManager, name: string, size: number, texture_type: TextureType, mip_level: number, image_type: number, texture_parameters: {
325
+ [parameter_name: number]: number;
326
+ });
327
+ constructor(gm: GraphicsManager, name: string, size: number, texture_type: TextureType, image_top: TexImageSource | Float32Array, image_bottom: TexImageSource | Float32Array, image_front: TexImageSource | Float32Array, image_back: TexImageSource | Float32Array, image_left: TexImageSource | Float32Array, image_right: TexImageSource | Float32Array, texture_parameters: {
328
+ [parameter_name: number]: number;
329
+ }, mip_level: number);
330
+ constructor(gm: GraphicsManager, name: string, size: number, texture_type: TextureType, image_top: TexImageSource | Float32Array, image_bottom: TexImageSource | Float32Array, image_front: TexImageSource | Float32Array, image_back: TexImageSource | Float32Array, image_left: TexImageSource | Float32Array, image_right: TexImageSource | Float32Array, texture_parameters: {
331
+ [parameter_name: number]: number;
332
+ }, mip_level: number, image_type: number);
333
+ constructor(gm: GraphicsManager, name: string, texture_type: TextureType, image_top: TexImageSource | Float32Array, image_bottom: TexImageSource | Float32Array, image_front: TexImageSource | Float32Array, image_back: TexImageSource | Float32Array, image_left: TexImageSource | Float32Array, image_right: TexImageSource | Float32Array, texture_parameters: {
334
+ [parameter_name: number]: number;
335
+ }, mip_level: number);
336
+ constructor(gm: GraphicsManager, name: string, texture_type: TextureType, image_top: TexImageSource | Float32Array, image_bottom: TexImageSource | Float32Array, image_front: TexImageSource | Float32Array, image_back: TexImageSource | Float32Array, image_left: TexImageSource | Float32Array, image_right: TexImageSource | Float32Array, texture_parameters: {
337
+ [parameter_name: number]: number;
338
+ }, mip_level: number, image_type: number);
339
+ [Symbol.dispose](): void;
340
+ private create_depth_texture;
341
+ private create_texture;
342
+ }
343
+
344
+ declare enum AttachmentType {
345
+ TEXTURE_COLOR = "TEXTURE_COLOR",
346
+ TEXTURE_DEPTH = "TEXTURE_DEPTH",
347
+ TEXTURE_STENCIL = "TEXTURE_STENCIL",
348
+ TEXTURE_DEPTH_STENCIL = "TEXTURE_DEPTH_STENCIL",
349
+ TEXTURE_ARRAY_COLOR = "TEXTURE_ARRAY_COLOR",
350
+ TEXTURE_ARRAY_DEPTH = "TEXTURE_ARRAY_DEPTH",
351
+ TEXTURE_ARRAY_STENCIL = "TEXTURE_ARRAY_STENCIL",
352
+ TEXTURE_ARRAY_DEPTH_STENCIL = "TEXTURE_ARRAY_DEPTH_STENCIL",
353
+ CUBEMAP_TEXTURE_COLOR = "CUBEMAP_TEXTURE_COLOR",
354
+ CUBEMAP_TEXTURE_DEPTH = "CUBEMAP_TEXTURE_DEPTH",
355
+ CUBEMAP_TEXTURE_STENCIL = "CUBEMAP_TEXTURE_STENCIL",
356
+ CUBEMAP_TEXTURE_DEPTH_STENCIL = "CUBEMAP_TEXTURE_DEPTH_STENCIL"
357
+ }
358
+ interface AttachmentInfo {
359
+ name: string;
360
+ type: AttachmentType;
361
+ texture: Texture | CubeMapTexture;
362
+ texture_array_index?: number;
363
+ mipmap_level?: number;
364
+ texture_parameters?: {
365
+ [key: number]: number;
366
+ };
367
+ buffer_source?: boolean;
368
+ color_attachment_number?: number;
369
+ }
370
+ declare enum DrawFlag {
371
+ DEPTH_TEST = 0,
372
+ CULL_FRONT = 1,
373
+ CULL_BACK = 2,
374
+ CULL_FRONT_AND_BACK = 4,
375
+ DEPTH_FUNC_NEVER = 8,
376
+ DEPTH_FUNC_LESS = 16,
377
+ DEPTH_FUNC_EQUAL = 32,
378
+ DEPTH_FUNC_LESS_EQUAL = 64,
379
+ DEPTH_FUNC_GREATER = 128,
380
+ DEPTH_FUNC_NOT_EQUAL = 256,
381
+ DEPTH_FUNC_GREATER_EQUAL = 512,
382
+ DEPTH_FUNC_ALWAYS = 1024,
383
+ FORCE_WRITE_DEPTH = 2048
384
+ }
385
+ type DrawBitFlags = number;
386
+ declare function has_flag(bit_flag: DrawBitFlags, flag: DrawFlag): boolean;
387
+ declare class Framebuffer implements Disposable {
388
+ name: string;
389
+ gl: WebGL2RenderingContext;
390
+ gm: GraphicsManager;
391
+ clear_color: Vec4;
392
+ width: number;
393
+ height: number;
394
+ webgl_frame_buffer: WebGLFramebuffer;
395
+ attachment_info_map: {
396
+ [key: string]: AttachmentInfo;
397
+ };
398
+ use_depth_buffer: boolean;
399
+ use_color_buffer: boolean;
400
+ color_attachment_count: number;
401
+ read_source_color_attachment: number;
402
+ draw_flags: DrawBitFlags;
403
+ constructor(name: string, gm: GraphicsManager, gl: WebGL2RenderingContext, attachment_infos: AttachmentInfo[], draw_flags: DrawBitFlags, clear_color?: Vec4, read_from_back_buffer?: boolean);
404
+ [Symbol.dispose](): void;
405
+ set_attachment_texture_index(attachment_name: string, index: number): void;
406
+ clear(): void;
407
+ set_attachment_cube_map_texture_face(attachment_name: string, face: number): void;
408
+ private create_attachment;
409
+ private create_attachment_depth_array_texture;
410
+ private create_attachment_color_array_texture;
411
+ private create_attachment_color_texture;
412
+ private create_attachment_depth_texture;
413
+ private create_attachment_color_cubemap_texture;
414
+ private create_attachment_depth_cubemap_texture;
415
+ use(): void;
416
+ }
417
+
418
+ declare class Light extends Node3D {
419
+ color: Vec3;
420
+ ambient: number;
421
+ diffuse: number;
422
+ specular: number;
423
+ energy: number;
424
+ constructor(engine: Engine, name: string, color: Vec3, ambient: number, diffuse: number, specular: number, energy: number);
425
+ set_shader_uniforms(shader_program: ShaderProgram, array_name: string, index: number): void;
426
+ set_uniforms(array_name: string, index: number): void;
427
+ }
428
+
429
+ declare class PointLight extends Light {
430
+ private stored_range;
431
+ shadow_index_offset: number;
432
+ shader_program: ShaderProgram;
433
+ framebuffer: Framebuffer;
434
+ shadow_projection: Mat4;
435
+ parent_world_matrix: Mat4;
436
+ point_light_space_matrices: Mat4[];
437
+ constructor(engine: Engine, name: string, color: Vec3, ambient: number, diffuse: number, specular: number, energy: number, range: number, shader_program?: ShaderProgram | null);
438
+ get range(): number;
439
+ set range(value: number);
440
+ private update_lsms;
441
+ protected on_change_range(value: number): void;
442
+ protected on_change_position(new_value: Vec3): void;
443
+ draw_shadow_map(view_matrix: Mat4, projection_matrix_3d: Mat4, projection_matrix_2d: Mat4, time: number, delta_time: number): void;
444
+ set_uniforms(array_name: string, index: number): void;
445
+ protected on_parented(): void;
446
+ protected on_removed(node: this, engine: Engine, parent: Node): void;
447
+ }
448
+
449
+ declare class DirectionalLight extends Light {
450
+ shader_program: ShaderProgram;
451
+ shadow_index: number;
452
+ framebuffer: Framebuffer;
453
+ directional_light_space_matrix: Mat4;
454
+ constructor(engine: Engine, name: string, color: Vec3, ambient: number, diffuse: number, specular: number, energy: number, shader_program?: ShaderProgram | null);
455
+ draw_shadow_map(view_matrix: Mat4, projection_matrix_3d: Mat4, projection_matrix_2d: Mat4, time: number, delta_time: number): void;
456
+ set_uniforms(array_name: string, index: number): void;
457
+ protected on_parented(): void;
458
+ protected on_removed(node: this, engine: Engine, parent: Node): void;
459
+ get_frustum_corners_world_space(projection_matrix: Mat4, view_matrix: Mat4): Vec4[];
460
+ get_light_space_matrix(light_dir: Vec3, corners: Vec4[]): Mat4;
461
+ }
462
+
463
+ declare class SpotLight extends Light {
464
+ range: number;
465
+ cookie_radius: number;
466
+ constructor(engine: Engine, name: string, color: Vec3, ambient: number, diffuse: number, specular: number, energy: number, range: number, cookie_radius: number);
467
+ set_uniforms(array_name: string, index: number): void;
468
+ protected on_parented(): void;
469
+ protected on_removed(node: this, engine: Engine, parent: Node): void;
470
+ }
471
+
472
+ type WebGLType = number;
473
+ interface WebGLVertexAttribute {
474
+ label: string;
475
+ attribute_type: WebGLType;
476
+ size: number;
477
+ normalized: boolean;
478
+ dynamic: boolean;
479
+ vertex_buffer: WebGLBuffer;
480
+ }
481
+ declare class GraphicsManager {
482
+ engine: Engine;
483
+ canvas: HTMLCanvasElement;
484
+ gl: WebGL2RenderingContext;
485
+ shader_programs: {
486
+ [key: string]: ShaderProgram;
487
+ };
488
+ shader_program: ShaderProgram | null;
489
+ framebuffers: {
490
+ [key: string]: Framebuffer;
491
+ };
492
+ framebuffer: Framebuffer | null;
493
+ vertex_attributes: {
494
+ [key: string]: WebGLVertexAttribute;
495
+ };
496
+ vertex_count: number;
497
+ private last_frame_time;
498
+ default_2d_shader_program: ShaderProgram;
499
+ default_3d_shader_program: ShaderProgram;
500
+ default_skybox_shader_program: ShaderProgram;
501
+ point_lights: PointLight[];
502
+ directional_lights: DirectionalLight[];
503
+ spot_lights: SpotLight[];
504
+ directional_light_shadow_map_texture: Texture;
505
+ point_light_shadow_map_texture: Texture;
506
+ point_shadow_depth_buffer: Framebuffer;
507
+ directional_shadow_depth_buffer: Framebuffer;
508
+ shadow_resolution: number;
509
+ constructor(engine: Engine, canvas: HTMLCanvasElement);
510
+ webgl_enabled(): boolean;
511
+ add_vertex_attribute(label: string, attribute_type: WebGLType, size: number, initial_data: Float32Array, normalized?: boolean, dynamic?: boolean): void;
512
+ remove_vertex_attribute(label: string): void;
513
+ set_vertex_attribute_data(label: string, data: Float32Array, offset?: number): void;
514
+ create_shader_program(name: string): ShaderProgram;
515
+ use_shader(name: string): void;
516
+ clear_shader(): void;
517
+ create_framebuffer(name: string, attachment_info: AttachmentInfo[], draw_flags: DrawBitFlags): Framebuffer;
518
+ use_framebuffer(name: string): void;
519
+ unuse_framebuffer(): void;
520
+ set_uniform(label: string, value: any, transpose?: boolean, warn?: boolean): void;
521
+ static flatten_uniform_array_value(array_value: (Vec2 | Vec3 | Vec4 | Mat2 | Mat3 | Mat4 | number)[]): Float32Array;
522
+ resize_directional_shadow_map(): void;
523
+ resize_point_shadow_map(): void;
524
+ private resize_canvas;
525
+ render(): void;
526
+ private render_frame;
527
+ create_default_2d_shader_program(): ShaderProgram;
528
+ create_default_3d_shader_program(): ShaderProgram;
529
+ create_default_skybox_shader_program(): ShaderProgram;
530
+ create_default_directional_shadow_shader_program(): ShaderProgram;
531
+ create_default_point_shadow_shader_program(): ShaderProgram;
532
+ }
533
+
534
+ interface MaterialOptionsObject {
535
+ enable_depth_test?: boolean;
536
+ blend_function?: {
537
+ sfactor: GLenum;
538
+ dfactor: GLenum;
539
+ };
540
+ }
541
+ declare class Material {
542
+ gm: GraphicsManager;
543
+ name: string;
544
+ shader_program: ShaderProgram | null;
545
+ albedo: Vec3 | Texture;
546
+ metalic: number | Texture;
547
+ roughness: number | Texture;
548
+ ao: number | Texture;
549
+ normal: Texture | null;
550
+ enable_depth_test?: boolean;
551
+ blend_function?: {
552
+ sfactor: GLenum;
553
+ dfactor: GLenum;
554
+ };
555
+ constructor(gm: GraphicsManager, name: string, albedo: Vec3 | Texture, metalic: number | Texture, roughness: number | Texture, ao: number | Texture, normal?: Texture | null, shader_program?: string | ShaderProgram | null, options?: MaterialOptionsObject);
556
+ set_shader_program(shader_program: string | ShaderProgram): void;
557
+ set_shader_uniforms(shader_program: ShaderProgram): void;
558
+ set_uniforms(): void;
559
+ draw_start(set_uniforms?: boolean): void;
560
+ draw_end(): void;
561
+ }
562
+
563
+ declare class Mesh {
564
+ gm: GraphicsManager;
565
+ vao: WebGLVertexArrayObject;
566
+ vertexCount: number;
567
+ indexCount: number;
568
+ dimensions: Vec3;
569
+ center: Vec3;
570
+ constructor(gm: GraphicsManager, vertices: Float32Array | number[], // xyz
571
+ normals: Float32Array | number[], // xyz
572
+ uvs: Float32Array | number[], // uv
573
+ indices: Uint16Array | number[], // triangle indices
574
+ dimensions: Vec3, center: Vec3);
575
+ draw(): void;
576
+ }
577
+
578
+ declare class Model {
579
+ gm: GraphicsManager;
580
+ name: string;
581
+ mesh: Mesh;
582
+ material: Material;
583
+ constructor(gm: GraphicsManager, name: string, mesh: Mesh, material: Material);
584
+ draw_start(): void;
585
+ draw_end(): void;
586
+ }
587
+
588
+ declare namespace AssetFile {
589
+ namespace OBJ {
590
+ interface Data {
591
+ temp?: {
592
+ vertices: number[][];
593
+ normals: number[][];
594
+ uvs: number[][];
595
+ min_x: number;
596
+ min_y: number;
597
+ min_z: number;
598
+ max_x: number;
599
+ max_y: number;
600
+ max_z: number;
601
+ vertex_map: Map<string, number>;
602
+ vertices_final: number[];
603
+ normals_final: number[];
604
+ uvs_final: number[];
605
+ indices_final: number[];
606
+ };
607
+ vertices: Float32Array;
608
+ normals: Float32Array;
609
+ uvs: Float32Array;
610
+ indices: Uint16Array;
611
+ dimensions: Vec3;
612
+ center: Vec3;
613
+ }
614
+ enum BumpChannel {
615
+ RED = "r",
616
+ GREEN = "g",
617
+ BLUE = "b",
618
+ MATTE = "m",
619
+ LUMINANCE = "l",
620
+ Z_DEPTH = "z"
621
+ }
622
+ enum ReflectionMapType {
623
+ SPHERE = "sphere",
624
+ CUBE_TOP = "cube_top",
625
+ CUBE_BOTTOM = "cube_bottom",
626
+ CUBE_FRONT = "cube_front",
627
+ CUBE_BACK = "cube_back",
628
+ CUBE_LEFT = "cube_left",
629
+ CUBE_RIGHT = "cube_right"
630
+ }
631
+ interface TextureData {
632
+ name: string;
633
+ horizontal_blend?: boolean;
634
+ vertical_blend?: boolean;
635
+ mip_map_sharpness_boost?: number;
636
+ additive_color_offset?: number;
637
+ contrast_multiplier?: number;
638
+ offset?: Vec3;
639
+ scale?: Vec3;
640
+ turbulence?: Vec3;
641
+ generated_texture_resolution?: number;
642
+ clamp?: boolean;
643
+ bump_multiplier?: number;
644
+ bump_channel?: BumpChannel;
645
+ reflection_map_type?: ReflectionMapType;
646
+ }
647
+ enum IlluminationModel {
648
+ COLOR_ON_AMBIENT_OFF = 0,
649
+ COLOR_ON_AMBIENT_ON = 1,
650
+ HIGHLIGHT_ON = 2,
651
+ REFLECTION_ON_RAY_TRACE_ON = 3,
652
+ TRANSPARENCY_GLASS_ON__REFLECTION_RAY_TRACE_ON = 4,
653
+ REFLECTION_FRESNEL_ON_RAY_TRACE_ON = 5,
654
+ TRANSPARENCY_REFRACTION_ON__REFLECTION_FRESNEL_OFF_RAY_TRACE_ON = 6,
655
+ TRANSPARENCY_REFRACTION_ON__REFLECTION_FRESNEL_ON_RAY_TRACE_ON = 7,
656
+ REFLECTION_ON_RAY_TRACE_OFF = 8,
657
+ TRANSPARENCY_GLASS_ON__REFLECTION_RAY_TRACE_OFF = 9,
658
+ CAST_SHADOWS_ON_INVISIBLE_SURFACES = 10
659
+ }
660
+ interface MaterialData {
661
+ name: string;
662
+ ambient_color?: Vec3;
663
+ diffuse_color?: Vec3;
664
+ specular_color?: Vec3;
665
+ specular_exponent?: number;
666
+ transparency?: number;
667
+ transmission_filter_color?: Vec3;
668
+ transmission_filter_xyz?: boolean;
669
+ optical_density?: number;
670
+ illumination_model?: IlluminationModel;
671
+ ambient_texture?: TextureData;
672
+ diffuse_texture?: TextureData;
673
+ specular_color_texture?: TextureData;
674
+ specular_highlight_texture?: TextureData;
675
+ alpha_texture?: TextureData;
676
+ bump_texture?: TextureData;
677
+ displacement_texture?: TextureData;
678
+ decal_texture?: TextureData;
679
+ reflection_textures?: TextureData[];
680
+ roughness_texture?: TextureData;
681
+ metalic_texture?: TextureData;
682
+ sheen_texture?: TextureData;
683
+ roughness?: number;
684
+ metalic?: number;
685
+ sheen?: number;
686
+ clearcoat_thickness?: number;
687
+ clearcoat_roughness?: number;
688
+ emissive_texture?: TextureData;
689
+ emissive?: number;
690
+ anisotropy?: number;
691
+ anisotropy_rotation?: number;
692
+ normal_texture?: TextureData;
693
+ }
694
+ interface Object {
695
+ name: string;
696
+ data?: Data;
697
+ material?: string;
698
+ groups: Group[];
699
+ }
700
+ interface Group {
701
+ name: string;
702
+ data: Data;
703
+ material?: string;
704
+ }
705
+ function load_obj(engine: Engine, obj_path: string, image_assets_path: string): Promise<Node3D>;
706
+ }
707
+ }
708
+ declare function load_obj(gm: GraphicsManager, model_path: string, image_asset_paths: string[]): Promise<Model | null>;
709
+
710
+ interface VAOInfo {
711
+ vao: WebGLVertexArrayObject;
712
+ index_count: number;
713
+ vertex_count: number;
714
+ }
715
+ declare function get_skybox_vao(gm: GraphicsManager): VAOInfo;
716
+ declare function get_sprite_vao(gm: GraphicsManager): VAOInfo;
717
+
718
+ declare class Object3D extends Node3D {
719
+ model: Model;
720
+ constructor(engine: Engine, name: string, model: Model);
721
+ render_class(view_matrix: Mat4, projection_matrix_3d: Mat4, projection_matrix_2d: Mat4, time: number, delta_time: number): void;
722
+ }
723
+
724
+ declare class Skybox extends Node {
725
+ vao: VAOInfo;
726
+ shader_program: ShaderProgram;
727
+ cubemap_texture: CubeMapTexture;
728
+ ambient_light: Vec3;
729
+ constructor(engine: Engine, name: string, cubemap_texture: CubeMapTexture, ambient_light: Vec3, shader_program?: ShaderProgram | null);
730
+ render_class(view_matrix: Mat4, projection_matrix_3d: Mat4, projection_matrix_2d: Mat4, time: number, delta_time: number): void;
731
+ }
732
+
733
+ declare class Sprite2D extends Node2D {
734
+ shader_program: ShaderProgram;
735
+ vao: VAOInfo;
736
+ sprite_texture: Texture;
737
+ constructor(engine: Engine, name: string, sprite_texture: Texture, shader_program?: ShaderProgram | null);
738
+ render_class(view_matrix: Mat4, projection_matrix_3d: Mat4, projection_matrix_2d: Mat4, time: number, delta_time: number): void;
739
+ }
740
+
741
+ declare function degrees_to_radians(degrees: number): number;
742
+ declare function get_uniform_label_index(raw_label: string): number;
743
+ declare function normalize_uniform_label(raw_label: string): string;
744
+ declare function parse_path(p: string): {
745
+ root: string;
746
+ dir: string;
747
+ base: string;
748
+ ext: string;
749
+ name: string;
750
+ };
751
+ declare function join_path(...parts: string[]): string;
752
+ declare function basename_path(path: string, ext?: string): string;
753
+ declare function dirname_path(path: string): string;
754
+
755
+ export { AssetFile, type AttachmentInfo, AttachmentType, Camera3D, CubeMapTexture, DirectionalLight, type DrawBitFlags, DrawFlag, Framebuffer, GraphicsManager, HookManager, InputManager, Light, Material, type MaterialOptionsObject, Mesh, Model, MouseButton, Node, Node2D, Node3D, Object3D, PointLight, Scene, ShaderProgram, Skybox, SpotLight, Sprite2D, Texture, TextureType, type UBO, type VAOInfo, type WebGLShaderType, type WebGLType, type WebGLUniform, WebGLUniformType, type WebGLVertexAttribute, basename_path, Engine as default, degrees_to_radians, dirname_path, get_skybox_vao, get_sprite_vao, get_uniform_label_index, has_flag, join_path, load_obj, normalize_uniform_label, parse_path };