Fix append shape button
This commit is contained in:
@@ -4,7 +4,7 @@ function geom_make_plane(size_x: f32 = 1.0, size_y: f32 = 1.0, verts_x: i32 = 2,
|
|||||||
let mesh: raw_mesh_t = {};
|
let mesh: raw_mesh_t = {};
|
||||||
mesh.scale_pos = 1.0;
|
mesh.scale_pos = 1.0;
|
||||||
mesh.scale_tex = uv_scale;
|
mesh.scale_tex = uv_scale;
|
||||||
mesh.name = "";
|
mesh.name = "Plane";
|
||||||
mesh.has_next = false;
|
mesh.has_next = false;
|
||||||
|
|
||||||
// Pack positions to (-1, 1) range
|
// Pack positions to (-1, 1) range
|
||||||
@@ -52,7 +52,7 @@ function geom_make_uv_sphere(radius: f32 = 1.0, width_segments: i32 = 32, height
|
|||||||
let mesh: raw_mesh_t = {};
|
let mesh: raw_mesh_t = {};
|
||||||
mesh.scale_pos = 1.0;
|
mesh.scale_pos = 1.0;
|
||||||
mesh.scale_tex = 1.0;
|
mesh.scale_tex = 1.0;
|
||||||
mesh.name = "";
|
mesh.name = "Sphere";
|
||||||
mesh.has_next = false;
|
mesh.has_next = false;
|
||||||
|
|
||||||
// Pack positions to (-1, 1) range
|
// Pack positions to (-1, 1) range
|
||||||
|
|||||||
+56
-29
@@ -25,16 +25,18 @@ function tab_meshes_draw(htab: ui_handle_t) {
|
|||||||
project_append_mesh();
|
project_append_mesh();
|
||||||
}
|
}
|
||||||
|
|
||||||
// project_fetch_default_meshes();
|
if (config_raw.experimental) {
|
||||||
// if (ui_menu_button(tr("Append Shape"))) {
|
project_fetch_default_meshes();
|
||||||
// ui_menu_draw(function () {
|
if (ui_menu_button(tr("Append Shape"))) {
|
||||||
// for (let i: i32 = 0; i < project_mesh_list.length; ++i) {
|
ui_menu_draw(function() {
|
||||||
// if (ui_menu_button(project_mesh_list[i])) {
|
for (let i: i32 = 0; i < project_mesh_list.length; ++i) {
|
||||||
// tab_meshes_append_shape(project_mesh_list[i]);
|
if (ui_menu_button(project_mesh_list[i])) {
|
||||||
// }
|
tab_meshes_append_shape(project_mesh_list[i]);
|
||||||
// }
|
}
|
||||||
// });
|
}
|
||||||
// }
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (ui.is_hovered)
|
if (ui.is_hovered)
|
||||||
@@ -141,6 +143,27 @@ function tab_meshes_draw(htab: ui_handle_t) {
|
|||||||
context_raw.ddirty = 2;
|
context_raw.ddirty = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (config_raw.experimental) {
|
||||||
|
tab_meshes_draw_properties(o);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (h.changed) {
|
||||||
|
let visibles: mesh_object_t[] = [];
|
||||||
|
for (let i: i32 = 0; i < project_paint_objects.length; ++i) {
|
||||||
|
let p: mesh_object_t = project_paint_objects[i];
|
||||||
|
if (p.base.visible) {
|
||||||
|
array_push(visibles, p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
util_mesh_merge(visibles);
|
||||||
|
context_raw.ddirty = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function tab_meshes_draw_properties(o: mesh_object_t) {
|
||||||
context_raw.selected_object = o.base;
|
context_raw.selected_object = o.base;
|
||||||
let h: ui_handle_t = ui_handle(__ID__);
|
let h: ui_handle_t = ui_handle(__ID__);
|
||||||
// h.b = context_raw.selected_object.visible;
|
// h.b = context_raw.selected_object.visible;
|
||||||
@@ -323,36 +346,40 @@ function tab_meshes_draw(htab: ui_handle_t) {
|
|||||||
|
|
||||||
script = hscript.text;
|
script = hscript.text;
|
||||||
map_set(sim_object_script_map, context_raw.selected_object, script);
|
map_set(sim_object_script_map, context_raw.selected_object, script);
|
||||||
});
|
|
||||||
}
|
if (ui.changed || ui.is_typing) {
|
||||||
if (h.changed) {
|
ui_menu_keep_open = true;
|
||||||
let visibles: mesh_object_t[] = [];
|
|
||||||
for (let i: i32 = 0; i < project_paint_objects.length; ++i) {
|
|
||||||
let p: mesh_object_t = project_paint_objects[i];
|
|
||||||
if (p.base.visible) {
|
|
||||||
array_push(visibles, p);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
util_mesh_merge(visibles);
|
|
||||||
context_raw.ddirty = 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function tab_meshes_append_shape(mesh_name: string) {
|
function tab_meshes_append_shape(mesh_name: string) {
|
||||||
let blob: buffer_t = iron_load_blob(data_path() + "meshes/" + mesh_name + ".arm");
|
let scene_raw: scene_t = null;
|
||||||
let raw: scene_t = armpack_decode(blob);
|
let raw: mesh_data_t = null;
|
||||||
util_mesh_pack_uvs(raw.mesh_datas[0].vertex_arrays[2].values);
|
if (mesh_name == "sphere") {
|
||||||
let md: mesh_data_t = mesh_data_create(raw.mesh_datas[0]);
|
let mesh: raw_mesh_t = geom_make_uv_sphere(1, 128, 64);
|
||||||
|
raw = import_mesh_raw_mesh(mesh);
|
||||||
|
}
|
||||||
|
else if (mesh_name == "plane") {
|
||||||
|
let mesh: raw_mesh_t = geom_make_plane(1, 1, 4, 4);
|
||||||
|
raw = import_mesh_raw_mesh(mesh);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
let b: buffer_t = iron_load_blob(data_path() + "meshes/" + mesh_name + ".arm");
|
||||||
|
scene_raw = armpack_decode(b);
|
||||||
|
raw = scene_raw.mesh_datas[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
util_mesh_pack_uvs(raw.vertex_arrays[2].values);
|
||||||
|
let md: mesh_data_t = mesh_data_create(raw);
|
||||||
md._.handle = md.name;
|
md._.handle = md.name;
|
||||||
let mo: mesh_object_t = scene_add_mesh_object(md, project_paint_objects[0].material);
|
let mo: mesh_object_t = scene_add_mesh_object(md, project_paint_objects[0].material);
|
||||||
mo.base.name = md.name;
|
mo.base.name = md.name;
|
||||||
let o: obj_t = {};
|
let o: obj_t = {};
|
||||||
o._ = {_gc : raw};
|
o._ = {_gc : scene_raw};
|
||||||
mo.base.raw = o;
|
mo.base.raw = o;
|
||||||
map_set(data_cached_meshes, md._.handle, md);
|
map_set(data_cached_meshes, md._.handle, md);
|
||||||
array_push(project_paint_objects, mo);
|
array_push(project_paint_objects, mo);
|
||||||
|
|
||||||
// tab_scene_import_mesh_done();
|
// tab_scene_import_mesh_done();
|
||||||
// sys_notify_on_next_frame(function(mo: mesh_object_t) {
|
// sys_notify_on_next_frame(function(mo: mesh_object_t) {
|
||||||
// tab_scene_select_object(mo);
|
// tab_scene_select_object(mo);
|
||||||
|
|||||||
Reference in New Issue
Block a user