Ver Fonte

Cleanup

luboslenco há 1 mês atrás
pai
commit
b2a3b5f229

+ 2 - 2
base/sources/ts/args.ts

@@ -63,7 +63,7 @@ function args_parse() {
 
 
 function args_run() {
 function args_run() {
 	if (args_use) {
 	if (args_use) {
-		sys_notify_on_init(function () {
+		sys_notify_on_next_frame(function () {
 			if (project_filepath != "") {
 			if (project_filepath != "") {
 				import_arm_run_project(project_filepath);
 				import_arm_run_project(project_filepath);
 			}
 			}
@@ -121,7 +121,7 @@ function args_run() {
 						data_delete_blob("export_presets/" + file);
 						data_delete_blob("export_presets/" + file);
 
 
 						// Export queue
 						// Export queue
-						sys_notify_on_init(function () {
+						sys_notify_on_next_frame(function () {
 							export_texture_run(args_export_textures_path);
 							export_texture_run(args_export_textures_path);
 						});
 						});
 					}
 					}

+ 5 - 5
base/sources/ts/base.ts

@@ -112,15 +112,15 @@ function base_init() {
 	base_ext_init();
 	base_ext_init();
 
 
 	sys_notify_on_update(base_update);
 	sys_notify_on_update(base_update);
-	sys_notify_on_render_2d(ui_view2d_render);
+	sys_notify_on_render(ui_view2d_render);
 	sys_notify_on_update(ui_view2d_update);
 	sys_notify_on_update(ui_view2d_update);
-	sys_notify_on_render_2d(ui_base_render_cursor);
+	sys_notify_on_render(ui_base_render_cursor);
 	sys_notify_on_update(ui_nodes_update);
 	sys_notify_on_update(ui_nodes_update);
-	sys_notify_on_render_2d(ui_nodes_render);
+	sys_notify_on_render(ui_nodes_render);
 	sys_notify_on_update(ui_base_update);
 	sys_notify_on_update(ui_base_update);
-	sys_notify_on_render_2d(ui_base_render);
+	sys_notify_on_render(ui_base_render);
 	sys_notify_on_update(camera_update);
 	sys_notify_on_update(camera_update);
-	sys_notify_on_render_2d(base_render);
+	sys_notify_on_render(base_render);
 
 
 	base_appx = ui_toolbar_w(true);
 	base_appx = ui_toolbar_w(true);
 	base_appy = 0;
 	base_appy = 0;

+ 5 - 5
base/sources/ts/box_export.ts

@@ -102,7 +102,7 @@ function box_export_tab_export_textures(title: string, bake_material: bool = fal
 
 
 		ui_combo(base_bits_handle, base_bits_combo, tr("Color"), true);
 		ui_combo(base_bits_handle, base_bits_combo, tr("Color"), true);
 		if (base_bits_handle.changed) {
 		if (base_bits_handle.changed) {
-			sys_notify_on_init(layers_set_bits);
+			sys_notify_on_next_frame(layers_set_bits);
 		}
 		}
 
 
 		ui_row2();
 		ui_row2();
@@ -166,7 +166,7 @@ function box_export_tab_export_textures(title: string, bake_material: bool = fal
 			if (context_raw.layers_destination == export_destination_t.PACKED) {
 			if (context_raw.layers_destination == export_destination_t.PACKED) {
 				_box_export_bake_material = bake_material;
 				_box_export_bake_material = bake_material;
 				context_raw.texture_export_path = "/";
 				context_raw.texture_export_path = "/";
-				sys_notify_on_init(function () {
+				sys_notify_on_next_frame(function () {
 					export_texture_run(context_raw.texture_export_path, _box_export_bake_material);
 					export_texture_run(context_raw.texture_export_path, _box_export_bake_material);
 				});
 				});
 			}
 			}
@@ -178,7 +178,7 @@ function box_export_tab_export_textures(title: string, bake_material: bool = fal
 					///if (arm_android || arm_ios)
 					///if (arm_android || arm_ios)
 					console_toast(tr("Exporting textures"));
 					console_toast(tr("Exporting textures"));
 					///end
 					///end
-					sys_notify_on_init(function () {
+					sys_notify_on_next_frame(function () {
 						export_texture_run(context_raw.texture_export_path, _box_export_bake_material);
 						export_texture_run(context_raw.texture_export_path, _box_export_bake_material);
 					});
 					});
 				});
 				});
@@ -462,7 +462,7 @@ function box_export_show_material() {
 					if (f == "") {
 					if (f == "") {
 						f = tr("untitled");
 						f = tr("untitled");
 					}
 					}
-					sys_notify_on_init(function (path: string) {
+					sys_notify_on_next_frame(function (path: string) {
 						export_arm_run_material(path);
 						export_arm_run_material(path);
 					}, path + path_sep + f);
 					}, path + path_sep + f);
 				});
 				});
@@ -491,7 +491,7 @@ function box_export_show_brush() {
 				ui_files_show("arm", true, false, function (path: string) {
 				ui_files_show("arm", true, false, function (path: string) {
 					let f: string = ui_files_filename;
 					let f: string = ui_files_filename;
 					if (f == "") f = tr("untitled");
 					if (f == "") f = tr("untitled");
-					sys_notify_on_init(function (path: string) {
+					sys_notify_on_next_frame(function (path: string) {
 						export_arm_run_brush(path);
 						export_arm_run_brush(path);
 					}, path + path_sep + f);
 					}, path + path_sep + f);
 				});
 				});

+ 2 - 2
base/sources/ts/box_preferences.ts

@@ -136,7 +136,7 @@ function box_preferences_show() {
 			if (ui_button(tr("Restore")) && !ui_menu_show) {
 			if (ui_button(tr("Restore")) && !ui_menu_show) {
 				ui_menu_draw(function () {
 				ui_menu_draw(function () {
 					if (ui_menu_button(tr("Confirm"))) {
 					if (ui_menu_button(tr("Confirm"))) {
-						sys_notify_on_init(function () {
+						sys_notify_on_next_frame(function () {
 							ui.ops.theme.ELEMENT_H = base_default_element_h;
 							ui.ops.theme.ELEMENT_H = base_default_element_h;
 							config_restore();
 							config_restore();
 							box_preferences_set_scale();
 							box_preferences_set_scale();
@@ -157,7 +157,7 @@ function box_preferences_show() {
 						ui_files_show("json", false, false, function (path: string) {
 						ui_files_show("json", false, false, function (path: string) {
 							let b: buffer_t = data_get_blob(path);
 							let b: buffer_t = data_get_blob(path);
 							let raw: config_t = json_parse(sys_buffer_to_string(b));
 							let raw: config_t = json_parse(sys_buffer_to_string(b));
-							sys_notify_on_init(function (raw: config_t) {
+							sys_notify_on_next_frame(function (raw: config_t) {
 								ui.ops.theme.ELEMENT_H = base_default_element_h;
 								ui.ops.theme.ELEMENT_H = base_default_element_h;
 								config_import_from(raw);
 								config_import_from(raw);
 								box_preferences_set_scale();
 								box_preferences_set_scale();

+ 2 - 2
base/sources/ts/box_projects.ts

@@ -133,7 +133,7 @@ function box_projects_tab() {
 						///if (arm_android || arm_ios)
 						///if (arm_android || arm_ios)
 						console_toast(tr("Opening project"));
 						console_toast(tr("Opening project"));
 						///end
 						///end
-						sys_notify_on_init(function (path: string) {
+						sys_notify_on_next_frame(function (path: string) {
 							ui_box_hide();
 							ui_box_hide();
 							import_arm_run_project(path);
 							import_arm_run_project(path);
 						}, path);
 						}, path);
@@ -147,7 +147,7 @@ function box_projects_tab() {
 						ui_menu_draw(function () {
 						ui_menu_draw(function () {
 							// if (ui_menu_button(tr("Duplicate"))) {}
 							// if (ui_menu_button(tr("Duplicate"))) {}
 							if (ui_menu_button(tr("Delete"))) {
 							if (ui_menu_button(tr("Delete"))) {
-								sys_notify_on_init(function () {
+								sys_notify_on_next_frame(function () {
 									file_delete(_box_projects_path);
 									file_delete(_box_projects_path);
 									file_delete(_box_projects_icon_path);
 									file_delete(_box_projects_icon_path);
 									let data_path: string = substring(_box_projects_path, 0, _box_projects_path.length - 4);
 									let data_path: string = substring(_box_projects_path, 0, _box_projects_path.length - 4);

+ 2 - 2
base/sources/ts/console.ts

@@ -36,10 +36,10 @@ function console_draw_progress() {
 function console_progress(s: string) {
 function console_progress(s: string) {
 	// Keep popup message displayed until s == null
 	// Keep popup message displayed until s == null
 	if (s == null) {
 	if (s == null) {
-		sys_remove_render_2d(console_draw_progress);
+		sys_remove_render(console_draw_progress);
 	}
 	}
 	else if (console_progress_text == null) {
 	else if (console_progress_text == null) {
-		sys_notify_on_render_2d(console_draw_progress);
+		sys_notify_on_render(console_draw_progress);
 	}
 	}
 	if (s != null) {
 	if (s != null) {
 		console_trace(s);
 		console_trace(s);

+ 1 - 1
base/sources/ts/context.ts

@@ -769,7 +769,7 @@ function context_set_render_path() {
 	else {
 	else {
 		render_path_commands = render_path_deferred_commands;
 		render_path_commands = render_path_deferred_commands;
 	}
 	}
-	sys_notify_on_init(make_material_parse_mesh_material);
+	sys_notify_on_next_frame(make_material_parse_mesh_material);
 }
 }
 
 
 function context_enable_import_plugin(file: string): bool {
 function context_enable_import_plugin(file: string): bool {

+ 4 - 4
base/sources/ts/history.ts

@@ -142,7 +142,7 @@ function history_undo() {
 			context_set_layer(context_raw.layer);
 			context_set_layer(context_raw.layer);
 		}
 		}
 		else if (step.name == tr("Invert Mask")) {
 		else if (step.name == tr("Invert Mask")) {
-			sys_notify_on_init(function (step: step_t) {
+			sys_notify_on_next_frame(function (step: step_t) {
 				context_raw.layer = project_layers[step.layer];
 				context_raw.layer = project_layers[step.layer];
 				slot_layer_invert_mask(context_raw.layer);
 				slot_layer_invert_mask(context_raw.layer);
 			}, step);
 			}, step);
@@ -312,8 +312,8 @@ function history_redo() {
 		}
 		}
 		else if (step.name == tr("Merge Layers")) {
 		else if (step.name == tr("Merge Layers")) {
 			context_raw.layer = project_layers[step.layer + 1];
 			context_raw.layer = project_layers[step.layer + 1];
-			sys_notify_on_init(history_redo_merge_layers);
-			sys_notify_on_init(layers_merge_down);
+			sys_notify_on_next_frame(history_redo_merge_layers);
+			sys_notify_on_next_frame(layers_merge_down);
 		}
 		}
 		else if (step.name == tr("Apply Mask")) {
 		else if (step.name == tr("Apply Mask")) {
 			context_raw.layer = project_layers[step.layer];
 			context_raw.layer = project_layers[step.layer];
@@ -335,7 +335,7 @@ function history_redo() {
 			});
 			});
 		}
 		}
 		else if (step.name == tr("Invert Mask")) {
 		else if (step.name == tr("Invert Mask")) {
-			sys_notify_on_init(function (step: step_t) {
+			sys_notify_on_next_frame(function (step: step_t) {
 				context_raw.layer = project_layers[step.layer];
 				context_raw.layer = project_layers[step.layer];
 				slot_layer_invert_mask(context_raw.layer);
 				slot_layer_invert_mask(context_raw.layer);
 			}, step);
 			}, step);

+ 3 - 3
base/sources/ts/import_arm.ts

@@ -408,7 +408,7 @@ function import_arm_run_mesh(raw: project_format_t) {
 		util_mesh_merge();
 		util_mesh_merge();
 		viewport_scale_to_bounds();
 		viewport_scale_to_bounds();
 	}
 	}
-	sys_notify_on_init(layers_init);
+	sys_notify_on_next_frame(layers_init);
 	history_reset();
 	history_reset();
 }
 }
 
 
@@ -481,7 +481,7 @@ function import_arm_run_material_from_project(project: project_format_t, path: s
 		}
 		}
 	}
 	}
 
 
-	sys_notify_on_init(function (imported: slot_material_t[]) {
+	sys_notify_on_next_frame(function (imported: slot_material_t[]) {
 		for (let i: i32 = 0; i < imported.length; ++i) {
 		for (let i: i32 = 0; i < imported.length; ++i) {
 			let m: slot_material_t = imported[i];
 			let m: slot_material_t = imported[i];
 			context_set_material(m);
 			context_set_material(m);
@@ -571,7 +571,7 @@ function import_arm_run_brush_from_project(project: project_format_t, path: stri
 		array_push(imported, context_raw.brush);
 		array_push(imported, context_raw.brush);
 	}
 	}
 
 
-	sys_notify_on_init(function (imported: slot_brush_t[]) {
+	sys_notify_on_next_frame(function (imported: slot_brush_t[]) {
 		for (let i: i32 = 0; i < imported.length; ++i) {
 		for (let i: i32 = 0; i < imported.length; ++i) {
 			let b: slot_brush_t = imported[i];
 			let b: slot_brush_t = imported[i];
 			context_set_brush(b);
 			context_set_brush(b);

+ 1 - 1
base/sources/ts/import_blend_material.ts

@@ -31,7 +31,7 @@ function import_blend_material_run(path: string) {
 function _import_blend_material() {
 function _import_blend_material() {
 	console_toast(tr("Baking material"));
 	console_toast(tr("Baking material"));
 
 
-	sys_notify_on_init(function () {
+	sys_notify_on_next_frame(function () {
 
 
 		let save: string;
 		let save: string;
 		if (path_is_protected()) {
 		if (path_is_protected()) {

+ 1 - 1
base/sources/ts/import_font.ts

@@ -27,7 +27,7 @@ function import_font_run(path: string) {
 		array_push(font_slots, font_slot);
 		array_push(font_slots, font_slot);
 	}
 	}
 
 
-	sys_notify_on_init(function (font_slots: slot_font_t[]) {
+	sys_notify_on_next_frame(function (font_slots: slot_font_t[]) {
 		for (let i: i32 = 0; i < font_slots.length; ++i) {
 		for (let i: i32 = 0; i < font_slots.length; ++i) {
 			let f: slot_font_t = font_slots[i];
 			let f: slot_font_t = font_slots[i];
 			context_raw.font = f;
 			context_raw.font = f;

+ 3 - 3
base/sources/ts/import_mesh.ts

@@ -125,7 +125,7 @@ function _import_mesh_make_mesh(mesh: raw_mesh_t) {
 
 
 	let handle: string = context_raw.paint_object.data._.handle;
 	let handle: string = context_raw.paint_object.data._.handle;
 	if (handle != "SceneSphere" && handle != "ScenePlane") {
 	if (handle != "SceneSphere" && handle != "ScenePlane") {
-		sys_notify_on_init(function(md: mesh_data_t) {
+		sys_notify_on_next_frame(function(md: mesh_data_t) {
 			mesh_data_delete(md);
 			mesh_data_delete(md);
 		}, context_raw.paint_object.data);
 		}, context_raw.paint_object.data);
 	}
 	}
@@ -154,7 +154,7 @@ function _import_mesh_make_mesh(mesh: raw_mesh_t) {
 			slot_layer_unload(l);
 			slot_layer_unload(l);
 		}
 		}
 		layers_new_layer(false);
 		layers_new_layer(false);
-		sys_notify_on_init(layers_init);
+		sys_notify_on_next_frame(layers_init);
 		history_reset();
 		history_reset();
 	}
 	}
 	///end
 	///end
@@ -164,7 +164,7 @@ function _import_mesh_make_mesh(mesh: raw_mesh_t) {
 		sys_notify_on_next_frame(import_mesh_finish_import);
 		sys_notify_on_next_frame(import_mesh_finish_import);
 	}
 	}
 	else {
 	else {
-		sys_notify_on_init(import_mesh_finish_import);
+		sys_notify_on_next_frame(import_mesh_finish_import);
 	}
 	}
 }
 }
 
 

+ 3 - 6
base/sources/ts/iron/input.ts

@@ -21,8 +21,8 @@ function input_end_frame() {
 	///end
 	///end
 }
 }
 
 
-function _input_on_foreground() {
-	mouse_reset();
+function input_on_foreground() {
+	mouse_reset(); // Reset mouse delta on foreground
 }
 }
 
 
 function input_register() {
 function input_register() {
@@ -30,11 +30,8 @@ function input_register() {
 		return;
 		return;
 	}
 	}
 	_input_registered = true;
 	_input_registered = true;
-	sys_notify_on_end_frame(input_end_frame);
-	sys_notify_on_reset(input_reset);
-	// Reset mouse delta on foreground
-	sys_notify_on_app_state(_input_on_foreground, null, null, null, null);
 	keyboard_reset();
 	keyboard_reset();
+	mouse_reset();
 	///if WITH_GAMEPAD
 	///if WITH_GAMEPAD
 	gamepad_reset();
 	gamepad_reset();
 	///end
 	///end

+ 3 - 8
base/sources/ts/iron/scene.ts

@@ -85,10 +85,11 @@ function scene_set_active(scene_name: string): object_t {
 	return o;
 	return o;
 }
 }
 
 
-function scene_update_frame() {
-	if (!_scene_ready) {
+function scene_render_frame() {
+	if (!_scene_ready || render_path_commands == null) {
 		return;
 		return;
 	}
 	}
+
 	///if arm_anim
 	///if arm_anim
 	for (let i: i32 = 0; i < scene_animations.length; ++i) {
 	for (let i: i32 = 0; i < scene_animations.length; ++i) {
 		let anim: anim_raw_t = scene_animations[i];
 		let anim: anim_raw_t = scene_animations[i];
@@ -101,12 +102,6 @@ function scene_update_frame() {
 			transform_update(e.transform);
 			transform_update(e.transform);
 		}
 		}
 	}
 	}
-}
-
-function scene_render_frame() {
-	if (!_scene_ready || render_path_commands == null) {
-		return;
-	}
 
 
 	// Render active camera
 	// Render active camera
 	scene_camera != null ? camera_object_render_frame(scene_camera) : render_path_render_frame();
 	scene_camera != null ? camera_object_render_frame(scene_camera) : render_path_render_frame();

+ 1 - 1
base/sources/ts/iron/speaker_object.ts

@@ -26,7 +26,7 @@ function speaker_object_create(data: speaker_data_t): speaker_object_t {
 	}
 	}
 
 
 	raw.sound = data_get_sound(data.sound);
 	raw.sound = data_get_sound(data.sound);
-	sys_notify_on_init(_speaker_object_create_on_init, raw);
+	sys_notify_on_next_frame(_speaker_object_create_on_init, raw);
 	return raw;
 	return raw;
 }
 }
 
 

+ 7 - 32
base/sources/ts/iron/sys.ts

@@ -112,6 +112,7 @@ function sys_foreground() {
 	for (let i: i32 = 0; i < _sys_foreground_listeners.length; ++i) {
 	for (let i: i32 = 0; i < _sys_foreground_listeners.length; ++i) {
 		_sys_foreground_listeners[i].f();
 		_sys_foreground_listeners[i].f();
 	}
 	}
+	input_on_foreground();
 }
 }
 
 
 function sys_resume() {
 function sys_resume() {
@@ -343,10 +344,8 @@ enum window_mode_t {
 let _sys_on_resets: callback_t[] = [];
 let _sys_on_resets: callback_t[] = [];
 let _sys_on_next_frames: callback_t[] = [];
 let _sys_on_next_frames: callback_t[] = [];
 let _sys_on_end_frames: callback_t[] = [];
 let _sys_on_end_frames: callback_t[] = [];
-let _sys_on_inits: callback_t[] = [];
 let _sys_on_updates: callback_t[] = [];
 let _sys_on_updates: callback_t[] = [];
 let _sys_on_renders: callback_t[] = [];
 let _sys_on_renders: callback_t[] = [];
-let _sys_on_renders_2d: callback_t[] = [];
 let _sys_lastw: i32 = -1;
 let _sys_lastw: i32 = -1;
 let _sys_lasth: i32 = -1;
 let _sys_lasth: i32 = -1;
 let sys_on_resize: ()=>void = null;
 let sys_on_resize: ()=>void = null;
@@ -386,14 +385,13 @@ function sys_y(): i32 {
 function sys_reset() {
 function sys_reset() {
 	_sys_on_next_frames = [];
 	_sys_on_next_frames = [];
 	_sys_on_end_frames = [];
 	_sys_on_end_frames = [];
-	_sys_on_inits = [];
 	_sys_on_updates = [];
 	_sys_on_updates = [];
 	_sys_on_renders = [];
 	_sys_on_renders = [];
-	_sys_on_renders_2d = [];
 	for (let i: i32 = 0; i < _sys_on_resets.length; ++i) {
 	for (let i: i32 = 0; i < _sys_on_resets.length; ++i) {
 		let cb: callback_t = _sys_on_resets[i];
 		let cb: callback_t = _sys_on_resets[i];
 		cb.f(cb.data);
 		cb.f(cb.data);
 	}
 	}
+	input_reset();
 }
 }
 
 
 function _sys_run_callbacks(cbs: callback_t[]) {
 function _sys_run_callbacks(cbs: callback_t[]) {
@@ -403,10 +401,6 @@ function _sys_run_callbacks(cbs: callback_t[]) {
 	}
 	}
 }
 }
 
 
-function sys_update() {
-
-}
-
 let _sys_time_last: f32 = 0.0;
 let _sys_time_last: f32 = 0.0;
 let _sys_time_real_delta: f32 = 0.0;
 let _sys_time_real_delta: f32 = 0.0;
 let _sys_time_frequency: i32 = -1;
 let _sys_time_frequency: i32 = -1;
@@ -432,15 +426,14 @@ function sys_render() {
 		array_splice(_sys_on_next_frames, 0, _sys_on_next_frames.length);
 		array_splice(_sys_on_next_frames, 0, _sys_on_next_frames.length);
 	}
 	}
 
 
-	scene_update_frame();
+	_sys_run_callbacks(_sys_on_updates);
 
 
-	if (_sys_on_inits.length > 0) {
-		_sys_run_callbacks(_sys_on_inits);
-		array_splice(_sys_on_inits, 0, _sys_on_inits.length);
+	if (_sys_on_end_frames.length > 0) {
+		_sys_run_callbacks(_sys_on_end_frames);
+		array_splice(_sys_on_end_frames, 0, _sys_on_end_frames.length);
 	}
 	}
 
 
-	_sys_run_callbacks(_sys_on_updates);
-	_sys_run_callbacks(_sys_on_end_frames);
+	input_end_frame();
 
 
 	// Rebuild projection on window resize
 	// Rebuild projection on window resize
 	if (_sys_lastw == -1) {
 	if (_sys_lastw == -1) {
@@ -463,7 +456,6 @@ function sys_render() {
 
 
 	scene_render_frame();
 	scene_render_frame();
 	_sys_run_callbacks(_sys_on_renders);
 	_sys_run_callbacks(_sys_on_renders);
-	_sys_run_callbacks(_sys_on_renders_2d);
 }
 }
 
 
 function _callback_create(f: (data?: any)=>void, data: any): callback_t {
 function _callback_create(f: (data?: any)=>void, data: any): callback_t {
@@ -474,10 +466,6 @@ function _callback_create(f: (data?: any)=>void, data: any): callback_t {
 }
 }
 
 
 // Hooks
 // Hooks
-function sys_notify_on_init(f: (data?: any)=>void, data: any = null) {
-	array_push(_sys_on_inits, _callback_create(f, data));
-}
-
 function sys_notify_on_update(f: (data?: any)=>void, data: any = null) {
 function sys_notify_on_update(f: (data?: any)=>void, data: any = null) {
 	array_push(_sys_on_updates, _callback_create(f, data));
 	array_push(_sys_on_updates, _callback_create(f, data));
 }
 }
@@ -486,10 +474,6 @@ function sys_notify_on_render(f: (data?: any)=>void, data: any = null) {
 	array_push(_sys_on_renders, _callback_create(f, data));
 	array_push(_sys_on_renders, _callback_create(f, data));
 }
 }
 
 
-function sys_notify_on_render_2d(f: (data?: any)=>void, data: any = null) {
-	array_push(_sys_on_renders_2d, _callback_create(f, data));
-}
-
 function sys_notify_on_reset(f: (data?: any)=>void, data: any = null) {
 function sys_notify_on_reset(f: (data?: any)=>void, data: any = null) {
 	array_push(_sys_on_resets, _callback_create(f, data));
 	array_push(_sys_on_resets, _callback_create(f, data));
 }
 }
@@ -511,10 +495,6 @@ function _sys_remove_callback(ar: callback_t[], f: (data?: any)=>void) {
 	}
 	}
 }
 }
 
 
-function sys_remove_init(f: (data?: any)=>void) {
-	_sys_remove_callback(_sys_on_inits, f);
-}
-
 function sys_remove_update(f: (data?: any)=>void) {
 function sys_remove_update(f: (data?: any)=>void) {
 	_sys_remove_callback(_sys_on_updates, f);
 	_sys_remove_callback(_sys_on_updates, f);
 }
 }
@@ -523,10 +503,6 @@ function sys_remove_render(f: (data?: any)=>void) {
 	_sys_remove_callback(_sys_on_renders, f);
 	_sys_remove_callback(_sys_on_renders, f);
 }
 }
 
 
-function sys_remove_render_2d(f: (data?: any)=>void) {
-	_sys_remove_callback(_sys_on_renders_2d, f);
-}
-
 function sys_remove_reset(f: (data?: any)=>void) {
 function sys_remove_reset(f: (data?: any)=>void) {
 	_sys_remove_callback(_sys_on_resets, f);
 	_sys_remove_callback(_sys_on_resets, f);
 }
 }
@@ -534,4 +510,3 @@ function sys_remove_reset(f: (data?: any)=>void) {
 function sys_remove_end_frame(f: (data?: any)=>void) {
 function sys_remove_end_frame(f: (data?: any)=>void) {
 	_sys_remove_callback(_sys_on_end_frames, f);
 	_sys_remove_callback(_sys_on_end_frames, f);
 }
 }
-

+ 4 - 4
base/sources/ts/layers.ts

@@ -472,7 +472,7 @@ function layers_new_layer(clear: bool = true, position: i32 = -1): slot_layer_t
 		}
 		}
 	}
 	}
 	if (clear) {
 	if (clear) {
-		sys_notify_on_init(function (l: slot_layer_t) {
+		sys_notify_on_next_frame(function (l: slot_layer_t) {
 			slot_layer_clear(l);
 			slot_layer_clear(l);
 		}, l);
 		}, l);
 	}
 	}
@@ -491,7 +491,7 @@ function layers_new_mask(clear: bool = true, parent: slot_layer_t, position: i32
 	array_insert(project_layers, position, l);
 	array_insert(project_layers, position, l);
 	context_set_layer(l);
 	context_set_layer(l);
 	if (clear) {
 	if (clear) {
-		sys_notify_on_init(function (l: slot_layer_t) {
+		sys_notify_on_next_frame(function (l: slot_layer_t) {
 			slot_layer_clear(l);
 			slot_layer_clear(l);
 		}, l);
 		}, l);
 	}
 	}
@@ -517,7 +517,7 @@ function layers_create_fill_layer(uv_type: uv_type_t = uv_type_t.UVMAP, decal_ma
 	_layers_uv_type = uv_type;
 	_layers_uv_type = uv_type;
 	_layers_decal_mat = decal_mat;
 	_layers_decal_mat = decal_mat;
 	_layers_position = position;
 	_layers_position = position;
-	sys_notify_on_init(function () {
+	sys_notify_on_next_frame(function () {
 		let l: slot_layer_t = layers_new_layer(false, _layers_position);
 		let l: slot_layer_t = layers_new_layer(false, _layers_position);
 		history_new_layer();
 		history_new_layer();
 		l.uv_type = _layers_uv_type;
 		l.uv_type = _layers_uv_type;
@@ -549,7 +549,7 @@ function layers_create_color_layer(base_color: i32, occlusion: f32 = 1.0, roughn
 	_layers_metallic = metallic;
 	_layers_metallic = metallic;
 	_layers_position = position;
 	_layers_position = position;
 
 
-	sys_notify_on_init(function () {
+	sys_notify_on_next_frame(function () {
 		let l: slot_layer_t = layers_new_layer(false, _layers_position);
 		let l: slot_layer_t = layers_new_layer(false, _layers_position);
 		history_new_layer();
 		history_new_layer();
 		l.uv_type = uv_type_t.UVMAP;
 		l.uv_type = uv_type_t.UVMAP;

+ 1 - 1
base/sources/ts/parser_material.ts

@@ -467,7 +467,7 @@ function parser_material_parse_vector_input(inp: ui_node_socket_t): string {
 
 
 function _parser_material_cache_tex_text_node(file: string, text: string) {
 function _parser_material_cache_tex_text_node(file: string, text: string) {
 	if (map_get(data_cached_images, file) == null) {
 	if (map_get(data_cached_images, file) == null) {
-		sys_notify_on_init(function(text: string) {
+		sys_notify_on_next_frame(function(text: string) {
 			let _text_tool_text: string = context_raw.text_tool_text;
 			let _text_tool_text: string = context_raw.text_tool_text;
 			let _text_tool_image: gpu_texture_t = context_raw.text_tool_image;
 			let _text_tool_image: gpu_texture_t = context_raw.text_tool_image;
 			context_raw.text_tool_text = text;
 			context_raw.text_tool_text = text;

+ 4 - 4
base/sources/ts/project.ts

@@ -76,7 +76,7 @@ function project_save(save_and_quit: bool = false) {
 
 
 	_project_save_and_quit = save_and_quit;
 	_project_save_and_quit = save_and_quit;
 
 
-	sys_notify_on_init(function () {
+	sys_notify_on_next_frame(function () {
 		export_arm_run_project();
 		export_arm_run_project();
 		if (_project_save_and_quit) {
 		if (_project_save_and_quit) {
 			iron_stop();
 			iron_stop();
@@ -301,11 +301,11 @@ function project_new(reset_layers: bool = true) {
 		array_push(project_layers, layer);
 		array_push(project_layers, layer);
 		context_set_layer(layer);
 		context_set_layer(layer);
 		if (aspect_ratio_changed) {
 		if (aspect_ratio_changed) {
-			sys_notify_on_init(layers_resize);
+			sys_notify_on_next_frame(layers_resize);
 		}
 		}
 		///end
 		///end
 
 
-		sys_notify_on_init(layers_init);
+		sys_notify_on_next_frame(layers_init);
 	}
 	}
 
 
 	if (in_use) draw_begin(current);
 	if (in_use) draw_begin(current);
@@ -381,7 +381,7 @@ function project_import_brush() {
 			// Parse brush
 			// Parse brush
 			make_material_parse_brush();
 			make_material_parse_brush();
 			ui_nodes_hwnd.redraws = 2;
 			ui_nodes_hwnd.redraws = 2;
-			sys_notify_on_init(util_render_make_brush_preview);
+			sys_notify_on_next_frame(util_render_make_brush_preview);
 		}
 		}
 		// Import from project file
 		// Import from project file
 		else {
 		else {

+ 1 - 1
base/sources/ts/tab_browser.ts

@@ -210,7 +210,7 @@ function tab_browser_draw(htab: ui_handle_t) {
 
 
 		if (tab_browser_known) {
 		if (tab_browser_known) {
 			let path: string = tab_browser_hpath.text;
 			let path: string = tab_browser_hpath.text;
-			sys_notify_on_init(function (path: string) {
+			sys_notify_on_next_frame(function (path: string) {
 				import_asset_run(path);
 				import_asset_run(path);
 			}, path);
 			}, path);
 			tab_browser_hpath.text = substring(tab_browser_hpath.text, 0, string_last_index_of(tab_browser_hpath.text, path_sep));
 			tab_browser_hpath.text = substring(tab_browser_hpath.text, 0, string_last_index_of(tab_browser_hpath.text, path_sep));

+ 2 - 2
base/sources/ts/tab_brushes.ts

@@ -99,7 +99,7 @@ function tab_brushes_draw(htab: ui_handle_t) {
 						}
 						}
 
 
 						if (ui_menu_button(tr("Duplicate"))) {
 						if (ui_menu_button(tr("Duplicate"))) {
-							sys_notify_on_init(function () {
+							sys_notify_on_next_frame(function () {
 								let i: i32 = _tab_brushes_draw_i;
 								let i: i32 = _tab_brushes_draw_i;
 
 
 								context_raw.brush = slot_brush_create();
 								context_raw.brush = slot_brush_create();
@@ -121,7 +121,7 @@ function tab_brushes_draw(htab: ui_handle_t) {
 					if (img_full == null) {
 					if (img_full == null) {
 						_tab_brushes_draw_i = i;
 						_tab_brushes_draw_i = i;
 
 
-						sys_notify_on_init(function () {
+						sys_notify_on_next_frame(function () {
 							let i: i32 = _tab_brushes_draw_i;
 							let i: i32 = _tab_brushes_draw_i;
 
 
 							let _brush: slot_brush_t = context_raw.brush;
 							let _brush: slot_brush_t = context_raw.brush;

+ 3 - 3
base/sources/ts/tab_fonts.ts

@@ -91,7 +91,7 @@ function tab_fonts_draw(htab: ui_handle_t) {
 					if (context_raw.font != project_fonts[i]) {
 					if (context_raw.font != project_fonts[i]) {
 						_tab_fonts_draw_i = i;
 						_tab_fonts_draw_i = i;
 
 
-						sys_notify_on_init(function () {
+						sys_notify_on_next_frame(function () {
 							let i: i32 = _tab_fonts_draw_i;
 							let i: i32 = _tab_fonts_draw_i;
 
 
 							context_select_font(i);
 							context_select_font(i);
@@ -118,7 +118,7 @@ function tab_fonts_draw(htab: ui_handle_t) {
 					if (img == null) {
 					if (img == null) {
 						_tab_fonts_draw_i = i;
 						_tab_fonts_draw_i = i;
 
 
-						sys_notify_on_init(function () {
+						sys_notify_on_next_frame(function () {
 							let i: i32 = _tab_fonts_draw_i;
 							let i: i32 = _tab_fonts_draw_i;
 
 
 							let _font: slot_font_t = context_raw.font;
 							let _font: slot_font_t = context_raw.font;
@@ -160,7 +160,7 @@ function tab_fonts_draw(htab: ui_handle_t) {
 }
 }
 
 
 function tab_fonts_delete_font(font: slot_font_t) {
 function tab_fonts_delete_font(font: slot_font_t) {
-	sys_notify_on_init(function (font: slot_font_t) {
+	sys_notify_on_next_frame(function (font: slot_font_t) {
 		let i: i32 = array_index_of(project_fonts, font);
 		let i: i32 = array_index_of(project_fonts, font);
 		context_select_font(i == project_fonts.length - 1 ? i - 1 : i + 1);
 		context_select_font(i == project_fonts.length - 1 ? i - 1 : i + 1);
 		data_delete_font(project_fonts[i].file);
 		data_delete_font(project_fonts[i].file);

+ 20 - 20
base/sources/ts/tab_layers.ts

@@ -106,7 +106,7 @@ function tab_layers_button_new(text: string) {
 				}, m);
 				}, m);
 				context_raw.layer_preview_dirty = true;
 				context_raw.layer_preview_dirty = true;
 				history_new_black_mask();
 				history_new_black_mask();
-				sys_notify_on_init(function () {
+				sys_notify_on_next_frame(function () {
 					layers_update_fill_layers();
 					layers_update_fill_layers();
 				});
 				});
 			}
 			}
@@ -122,7 +122,7 @@ function tab_layers_button_new(text: string) {
 				}, m);
 				}, m);
 				context_raw.layer_preview_dirty = true;
 				context_raw.layer_preview_dirty = true;
 				history_new_white_mask();
 				history_new_white_mask();
-				sys_notify_on_init(function () {
+				sys_notify_on_next_frame(function () {
 					layers_update_fill_layers();
 					layers_update_fill_layers();
 				});
 				});
 			}
 			}
@@ -133,12 +133,12 @@ function tab_layers_button_new(text: string) {
 				l = context_raw.layer;
 				l = context_raw.layer;
 
 
 				let m: slot_layer_t = layers_new_mask(false, l);
 				let m: slot_layer_t = layers_new_mask(false, l);
-				sys_notify_on_init(function (m: slot_layer_t) {
+				sys_notify_on_next_frame(function (m: slot_layer_t) {
 					slot_layer_to_fill_layer(m);
 					slot_layer_to_fill_layer(m);
 				}, m);
 				}, m);
 				context_raw.layer_preview_dirty = true;
 				context_raw.layer_preview_dirty = true;
 				history_new_fill_mask();
 				history_new_fill_mask();
-				sys_notify_on_init(function () {
+				sys_notify_on_next_frame(function () {
 					layers_update_fill_layers();
 					layers_update_fill_layers();
 				});
 				});
 			}
 			}
@@ -421,7 +421,7 @@ function tab_layers_draw_layer_slot_full(l: slot_layer_t, i: i32) {
 							 ui.input_y > ui._window_y && ui.input_y < ui._window_y + ui._window_h;
 							 ui.input_y > ui._window_y && ui.input_y < ui._window_y + ui._window_h;
 		if (in_focus && ui.is_delete_down && tab_layers_can_delete(context_raw.layer)) {
 		if (in_focus && ui.is_delete_down && tab_layers_can_delete(context_raw.layer)) {
 			ui.is_delete_down = false;
 			ui.is_delete_down = false;
-			sys_notify_on_init(function () {
+			sys_notify_on_next_frame(function () {
 				tab_layers_delete_layer(context_raw.layer);
 				tab_layers_delete_layer(context_raw.layer);
 			});
 			});
 		}
 		}
@@ -500,7 +500,7 @@ function tab_layers_combo_object(l: slot_layer_t, label: bool = false): ui_handl
 		context_set_layer(l);
 		context_set_layer(l);
 		make_material_parse_mesh_material();
 		make_material_parse_mesh_material();
 		if (l.fill_layer != null) { // Fill layer
 		if (l.fill_layer != null) { // Fill layer
-			sys_notify_on_init(function (l: slot_layer_t) {
+			sys_notify_on_next_frame(function (l: slot_layer_t) {
 				context_raw.material = l.fill_layer;
 				context_raw.material = l.fill_layer;
 				slot_layer_clear(l);
 				slot_layer_clear(l);
 				layers_update_fill_layers();
 				layers_update_fill_layers();
@@ -761,14 +761,14 @@ function tab_layers_draw_layer_context_menu(l: slot_layer_t, mini: bool) {
 			let to_paint_string: string = slot_layer_is_layer(l) ? tr("To Paint Layer") : tr("To Paint Mask");
 			let to_paint_string: string = slot_layer_is_layer(l) ? tr("To Paint Layer") : tr("To Paint Mask");
 
 
 			if (l.fill_layer == null && ui_menu_button(to_fill_string)) {
 			if (l.fill_layer == null && ui_menu_button(to_fill_string)) {
-				sys_notify_on_init(function () {
+				sys_notify_on_next_frame(function () {
 					let l: slot_layer_t = tab_layers_l;
 					let l: slot_layer_t = tab_layers_l;
 					slot_layer_is_layer(l) ? history_to_fill_layer() : history_to_fill_mask();
 					slot_layer_is_layer(l) ? history_to_fill_layer() : history_to_fill_mask();
 					slot_layer_to_fill_layer(l);
 					slot_layer_to_fill_layer(l);
 				});
 				});
 			}
 			}
 			if (l.fill_layer != null && ui_menu_button(to_paint_string)) {
 			if (l.fill_layer != null && ui_menu_button(to_paint_string)) {
-				sys_notify_on_init(function () {
+				sys_notify_on_next_frame(function () {
 					let l: slot_layer_t = tab_layers_l;
 					let l: slot_layer_t = tab_layers_l;
 					slot_layer_is_layer(l) ? history_to_paint_layer() : history_to_paint_mask();
 					slot_layer_is_layer(l) ? history_to_paint_layer() : history_to_paint_mask();
 					slot_layer_to_paint_layer(l);
 					slot_layer_to_paint_layer(l);
@@ -778,7 +778,7 @@ function tab_layers_draw_layer_context_menu(l: slot_layer_t, mini: bool) {
 
 
 		ui.enabled = tab_layers_can_delete(l);
 		ui.enabled = tab_layers_can_delete(l);
 		if (ui_menu_button(tr("Delete"), "delete")) {
 		if (ui_menu_button(tr("Delete"), "delete")) {
-			sys_notify_on_init(function () {
+			sys_notify_on_next_frame(function () {
 				tab_layers_delete_layer(context_raw.layer);
 				tab_layers_delete_layer(context_raw.layer);
 			});
 			});
 		}
 		}
@@ -786,7 +786,7 @@ function tab_layers_draw_layer_context_menu(l: slot_layer_t, mini: bool) {
 
 
 		if (l.fill_layer == null && ui_menu_button(tr("Clear"))) {
 		if (l.fill_layer == null && ui_menu_button(tr("Clear"))) {
 			context_set_layer(l);
 			context_set_layer(l);
-			sys_notify_on_init(function () {
+			sys_notify_on_next_frame(function () {
 				let l: slot_layer_t = tab_layers_l;
 				let l: slot_layer_t = tab_layers_l;
 				if (!slot_layer_is_group(l)) {
 				if (!slot_layer_is_group(l)) {
 					history_clear_layer();
 					history_clear_layer();
@@ -805,7 +805,7 @@ function tab_layers_draw_layer_context_menu(l: slot_layer_t, mini: bool) {
 			});
 			});
 		}
 		}
 		if (slot_layer_is_mask(l) && l.fill_layer == null && ui_menu_button(tr("Invert"))) {
 		if (slot_layer_is_mask(l) && l.fill_layer == null && ui_menu_button(tr("Invert"))) {
-			sys_notify_on_init(function () {
+			sys_notify_on_next_frame(function () {
 				let l: slot_layer_t = tab_layers_l;
 				let l: slot_layer_t = tab_layers_l;
 				context_set_layer(l);
 				context_set_layer(l);
 				history_invert_mask();
 				history_invert_mask();
@@ -813,7 +813,7 @@ function tab_layers_draw_layer_context_menu(l: slot_layer_t, mini: bool) {
 			});
 			});
 		}
 		}
 		if (slot_layer_is_mask(l) && ui_menu_button(tr("Apply"))) {
 		if (slot_layer_is_mask(l) && ui_menu_button(tr("Apply"))) {
-			sys_notify_on_init(function () {
+			sys_notify_on_next_frame(function () {
 				let l: slot_layer_t = tab_layers_l;
 				let l: slot_layer_t = tab_layers_l;
 				context_raw.layer = l;
 				context_raw.layer = l;
 				history_apply_mask();
 				history_apply_mask();
@@ -824,14 +824,14 @@ function tab_layers_draw_layer_context_menu(l: slot_layer_t, mini: bool) {
 			});
 			});
 		}
 		}
 		if (slot_layer_is_group(l) && ui_menu_button(tr("Merge Group"))) {
 		if (slot_layer_is_group(l) && ui_menu_button(tr("Merge Group"))) {
-			sys_notify_on_init(function () {
+			sys_notify_on_next_frame(function () {
 				let l: slot_layer_t = tab_layers_l;
 				let l: slot_layer_t = tab_layers_l;
 				layers_merge_group(l);
 				layers_merge_group(l);
 			});
 			});
 		}
 		}
 		ui.enabled = tab_layers_can_merge_down(l);
 		ui.enabled = tab_layers_can_merge_down(l);
 		if (ui_menu_button(tr("Merge Down"))) {
 		if (ui_menu_button(tr("Merge Down"))) {
-			sys_notify_on_init(function () {
+			sys_notify_on_next_frame(function () {
 				let l: slot_layer_t = tab_layers_l;
 				let l: slot_layer_t = tab_layers_l;
 				context_set_layer(l);
 				context_set_layer(l);
 				history_merge_layers();
 				history_merge_layers();
@@ -841,7 +841,7 @@ function tab_layers_draw_layer_context_menu(l: slot_layer_t, mini: bool) {
 		}
 		}
 		ui.enabled = true;
 		ui.enabled = true;
 		if (ui_menu_button(tr("Duplicate"))) {
 		if (ui_menu_button(tr("Duplicate"))) {
-			sys_notify_on_init(function () {
+			sys_notify_on_next_frame(function () {
 				let l: slot_layer_t = tab_layers_l;
 				let l: slot_layer_t = tab_layers_l;
 				context_set_layer(l);
 				context_set_layer(l);
 				history_duplicate_layer();
 				history_duplicate_layer();
@@ -892,7 +892,7 @@ function tab_layers_draw_layer_context_menu(l: slot_layer_t, mini: bool) {
 			ui_inline_radio(base_bits_handle, bits_items, ui_align_t.LEFT);
 			ui_inline_radio(base_bits_handle, bits_items, ui_align_t.LEFT);
 			///end
 			///end
 			if (base_bits_handle.changed) {
 			if (base_bits_handle.changed) {
-				sys_notify_on_init(layers_set_bits);
+				sys_notify_on_next_frame(layers_set_bits);
 				make_material_parse_paint_material();
 				make_material_parse_paint_material();
 				ui_menu_keep_open = true;
 				ui_menu_keep_open = true;
 			}
 			}
@@ -906,7 +906,7 @@ function tab_layers_draw_layer_context_menu(l: slot_layer_t, mini: bool) {
 			if (scale_handle.changed) {
 			if (scale_handle.changed) {
 				context_set_material(l.fill_layer);
 				context_set_material(l.fill_layer);
 				context_set_layer(l);
 				context_set_layer(l);
-				sys_notify_on_init(function () {
+				sys_notify_on_next_frame(function () {
 					layers_update_fill_layers();
 					layers_update_fill_layers();
 				});
 				});
 				ui_menu_keep_open = true;
 				ui_menu_keep_open = true;
@@ -920,7 +920,7 @@ function tab_layers_draw_layer_context_menu(l: slot_layer_t, mini: bool) {
 				context_set_material(l.fill_layer);
 				context_set_material(l.fill_layer);
 				context_set_layer(l);
 				context_set_layer(l);
 				make_material_parse_paint_material();
 				make_material_parse_paint_material();
-				sys_notify_on_init(function () {
+				sys_notify_on_next_frame(function () {
 					layers_update_fill_layers();
 					layers_update_fill_layers();
 				});
 				});
 				ui_menu_keep_open = true;
 				ui_menu_keep_open = true;
@@ -935,7 +935,7 @@ function tab_layers_draw_layer_context_menu(l: slot_layer_t, mini: bool) {
 				context_set_material(l.fill_layer);
 				context_set_material(l.fill_layer);
 				context_set_layer(l);
 				context_set_layer(l);
 				make_material_parse_paint_material();
 				make_material_parse_paint_material();
-				sys_notify_on_init(function () {
+				sys_notify_on_next_frame(function () {
 					layers_update_fill_layers();
 					layers_update_fill_layers();
 				});
 				});
 				ui_menu_keep_open = true;
 				ui_menu_keep_open = true;
@@ -1002,7 +1002,7 @@ function tab_layers_make_mask_preview_rgba32(l: slot_layer_t) {
 	if (context_raw.mask_preview_last != l) {
 	if (context_raw.mask_preview_last != l) {
 		context_raw.mask_preview_last = l;
 		context_raw.mask_preview_last = l;
 		tab_layers_l = l;
 		tab_layers_l = l;
-		sys_notify_on_init(function () {
+		sys_notify_on_next_frame(function () {
 			let l: slot_layer_t = tab_layers_l;
 			let l: slot_layer_t = tab_layers_l;
 			draw_begin(context_raw.mask_preview_rgba32);
 			draw_begin(context_raw.mask_preview_rgba32);
 			draw_set_pipeline(ui_view2d_pipe);
 			draw_set_pipeline(ui_view2d_pipe);

+ 3 - 3
base/sources/ts/tab_materials.ts

@@ -129,7 +129,7 @@ function tab_materials_draw_slots(mini: bool) {
 					context_select_material(i);
 					context_select_material(i);
 					///if is_paint
 					///if is_paint
 					if (context_raw.tool == tool_type_t.MATERIAL) {
 					if (context_raw.tool == tool_type_t.MATERIAL) {
-						sys_notify_on_init(layers_update_fill_layers);
+						sys_notify_on_next_frame(layers_update_fill_layers);
 					}
 					}
 					///end
 					///end
 				}
 				}
@@ -172,7 +172,7 @@ function tab_materials_draw_slots(mini: bool) {
 					///end
 					///end
 
 
 					if (ui_menu_button(tr("Duplicate"))) {
 					if (ui_menu_button(tr("Duplicate"))) {
-						sys_notify_on_init(function () {
+						sys_notify_on_next_frame(function () {
 							let i: i32 = _tab_materials_draw_slots;
 							let i: i32 = _tab_materials_draw_slots;
 
 
 							context_raw.material = slot_material_create(project_materials[0].data);
 							context_raw.material = slot_material_create(project_materials[0].data);
@@ -300,7 +300,7 @@ function tab_materials_draw_slots(mini: bool) {
 
 
 function tab_materials_button_new(text: string) {
 function tab_materials_button_new(text: string) {
 	if (ui_button(text)) {
 	if (ui_button(text)) {
-		sys_notify_on_init(function() {
+		sys_notify_on_next_frame(function() {
 			context_raw.material = slot_material_create(project_materials[0].data);
 			context_raw.material = slot_material_create(project_materials[0].data);
 			array_push(project_materials, context_raw.material);
 			array_push(project_materials, context_raw.material);
 			tab_materials_update_material();
 			tab_materials_update_material();

+ 1 - 1
base/sources/ts/translator.ts

@@ -148,7 +148,7 @@ function translator_init_font(cjk: bool, font_path: string, font_scale: f32) {
 	_translator_init_font_font_scale = font_scale;
 	_translator_init_font_font_scale = font_scale;
 
 
 	// Load and assign font with cjk characters
 	// Load and assign font with cjk characters
-	sys_notify_on_init(function () {
+	sys_notify_on_next_frame(function () {
 
 
 		let cjk: bool = _translator_init_font_cjk;
 		let cjk: bool = _translator_init_font_cjk;
 		let font_path: string = _translator_init_font_font_path;
 		let font_path: string = _translator_init_font_font_path;

+ 2 - 2
base/sources/ts/ui_base.ts

@@ -189,7 +189,7 @@ function ui_base_init() {
 	project_paint_objects = [context_raw.paint_object];
 	project_paint_objects = [context_raw.paint_object];
 
 
 	if (project_filepath == "") {
 	if (project_filepath == "") {
-		sys_notify_on_init(layers_init);
+		sys_notify_on_next_frame(layers_init);
 	}
 	}
 
 
 	context_raw.project_objects = [];
 	context_raw.project_objects = [];
@@ -266,7 +266,7 @@ function ui_base_update() {
 			box_export_show_textures();
 			box_export_show_textures();
 		}
 		}
 		else {
 		else {
-			sys_notify_on_init(function () {
+			sys_notify_on_next_frame(function () {
 				export_texture_run(context_raw.texture_export_path);
 				export_texture_run(context_raw.texture_export_path);
 			});
 			});
 		}
 		}

+ 2 - 2
base/sources/ts/ui_files.ts

@@ -204,7 +204,7 @@ function ui_files_file_browser(handle: ui_handle_t, drag_files: bool = false, se
 									let f: string = map_get(ui_files_icon_file_map, icon_file);
 									let f: string = map_get(ui_files_icon_file_map, icon_file);
 									let data: draw_cloud_icon_data_t = make_draw_cloud_icon_data(f, image);
 									let data: draw_cloud_icon_data_t = make_draw_cloud_icon_data(f, image);
 
 
-									sys_notify_on_init(function (data: draw_cloud_icon_data_t) {
+									sys_notify_on_next_frame(function (data: draw_cloud_icon_data_t) {
 										let icon: gpu_texture_t = gpu_create_render_target(data.image.width, data.image.height);
 										let icon: gpu_texture_t = gpu_create_render_target(data.image.width, data.image.height);
 										if (ends_with(data.f, ".arm")) { // Used for material sphere alpha cutout
 										if (ends_with(data.f, ".arm")) { // Used for material sphere alpha cutout
 											draw_begin(icon);
 											draw_begin(icon);
@@ -320,7 +320,7 @@ function ui_files_file_browser(handle: ui_handle_t, drag_files: bool = false, se
 						shandle: shandle,
 						shandle: shandle,
 						w: w
 						w: w
 					};
 					};
-					sys_notify_on_init(ui_files_make_icon, args);
+					sys_notify_on_next_frame(ui_files_make_icon, args);
 				}
 				}
 				if (icon != null) {
 				if (icon != null) {
 					if (i == ui_files_selected) {
 					if (i == ui_files_selected) {

+ 1 - 1
base/sources/ts/ui_nodes.ts

@@ -1223,7 +1223,7 @@ function ui_nodes_render() {
 				ui_nodes_node_search_x = ui._window_x + ui._x;
 				ui_nodes_node_search_x = ui._window_x + ui._x;
 				ui_nodes_node_search_y = ui._window_y + ui._y;
 				ui_nodes_node_search_y = ui._window_y + ui._y;
 				// Allow for node menu to be closed first
 				// Allow for node menu to be closed first
-				sys_notify_on_init(function() {
+				sys_notify_on_next_frame(function() {
 					ui_nodes_node_search(math_floor(ui_nodes_node_search_x), math_floor(ui_nodes_node_search_y));
 					ui_nodes_node_search(math_floor(ui_nodes_node_search_x), math_floor(ui_nodes_node_search_y));
 				});
 				});
 			}
 			}

+ 3 - 3
base/sources/ts/uniforms_ext.ts

@@ -373,18 +373,18 @@ function uniforms_ext_tex_link(object: object_t, mat: material_data_t, link: str
 
 
 	else if (link == "_texuvmap") {
 	else if (link == "_texuvmap") {
 		if (!util_uv_uvmap_cached) {
 		if (!util_uv_uvmap_cached) {
-			sys_notify_on_init(util_uv_cache_uv_map);
+			sys_notify_on_next_frame(util_uv_cache_uv_map);
 		}
 		}
 		return util_uv_uvmap;
 		return util_uv_uvmap;
 	}
 	}
 	else if (link == "_textrianglemap") {
 	else if (link == "_textrianglemap") {
 		if (!util_uv_trianglemap_cached) {
 		if (!util_uv_trianglemap_cached) {
-			sys_notify_on_init(util_uv_cache_triangle_map);
+			sys_notify_on_next_frame(util_uv_cache_triangle_map);
 		}
 		}
 		return util_uv_trianglemap;
 		return util_uv_trianglemap;
 	}
 	}
 	else if (link == "_texuvislandmap") {
 	else if (link == "_texuvislandmap") {
-		sys_notify_on_init(util_uv_cache_uv_island_map);
+		sys_notify_on_next_frame(util_uv_cache_uv_island_map);
 		if (util_uv_uvislandmap_cached) {
 		if (util_uv_uvislandmap_cached) {
 			return util_uv_uvislandmap;
 			return util_uv_uvislandmap;
 		}
 		}

+ 1 - 1
base/sources/ts/util_render.ts

@@ -331,7 +331,7 @@ function util_render_make_brush_preview() {
 	context_raw.layer = _layer;
 	context_raw.layer = _layer;
 	context_raw.material = _material;
 	context_raw.material = _material;
 	context_raw.tool = _tool;
 	context_raw.tool = _tool;
-	sys_notify_on_init(function () {
+	sys_notify_on_next_frame(function () {
 		make_material_parse_paint_material(false);
 		make_material_parse_paint_material(false);
 	});
 	});
 
 

+ 2 - 2
lab/sources/ui_nodes_ext.ts

@@ -7,7 +7,7 @@ function ui_nodes_ext_delay_idle_sleep() {
 
 
 function ui_nodes_ext_draw_buttons(ew: f32, start_y: f32) {
 function ui_nodes_ext_draw_buttons(ew: f32, start_y: f32) {
 	if (ui_button(tr("Run"))) {
 	if (ui_button(tr("Run"))) {
-		// sys_notify_on_init(function() {
+		// sys_notify_on_next_frame(function() {
 			ui_nodes_ext_run();
 			ui_nodes_ext_run();
 		// });
 		// });
 	}
 	}
@@ -30,7 +30,7 @@ function ui_nodes_ext_draw_buttons(ew: f32, start_y: f32) {
 }
 }
 
 
 function ui_nodes_ext_run() {
 function ui_nodes_ext_run() {
-	sys_notify_on_render_2d(ui_nodes_ext_delay_idle_sleep);
+	sys_notify_on_render(ui_nodes_ext_delay_idle_sleep);
 
 
 	console_progress(tr("Processing"));
 	console_progress(tr("Processing"));
 
 

+ 1 - 1
paint/sources/layers_ext.ts

@@ -157,7 +157,7 @@ function layers_ext_flatten(height_to_normal: bool = false, layers: slot_layer_t
 }
 }
 
 
 function layers_ext_on_resized() {
 function layers_ext_on_resized() {
-	sys_notify_on_init(function () {
+	sys_notify_on_next_frame(function () {
 		layers_resize();
 		layers_resize();
 		let _layer: slot_layer_t = context_raw.layer;
 		let _layer: slot_layer_t = context_raw.layer;
 		let _material: slot_material_t = context_raw.material;
 		let _material: slot_material_t = context_raw.material;

+ 3 - 3
paint/sources/render_path_paint.ts

@@ -583,7 +583,7 @@ function _render_path_paint_deriv() {
 	if (render_path_paint_push_undo_last) {
 	if (render_path_paint_push_undo_last) {
 		history_paint();
 		history_paint();
 	}
 	}
-	sys_notify_on_init(_render_path_paint_final);
+	sys_notify_on_next_frame(_render_path_paint_final);
 }
 }
 
 
 function render_path_paint_is_rt_bake(): bool {
 function render_path_paint_is_rt_bake(): bool {
@@ -650,10 +650,10 @@ function render_path_paint_draw() {
 					context_select_paint_object(_paint_object);
 					context_select_paint_object(_paint_object);
 
 
 					if (context_raw.bake_type == bake_type_t.DERIVATIVE) {
 					if (context_raw.bake_type == bake_type_t.DERIVATIVE) {
-						sys_notify_on_init(_render_path_paint_deriv);
+						sys_notify_on_next_frame(_render_path_paint_deriv);
 					}
 					}
 					else {
 					else {
-						sys_notify_on_init(_render_path_paint_final);
+						sys_notify_on_next_frame(_render_path_paint_final);
 					}
 					}
 				}
 				}
 			}
 			}