Refactor
This commit is contained in:
@@ -79,62 +79,61 @@ class ImportMesh {
|
||||
let raw = ImportMesh.rawMesh(mesh);
|
||||
if (mesh.cola != null) raw.vertex_arrays.push({ values: mesh.cola, attrib: "col", data: "short4norm", padding: 1 });
|
||||
|
||||
mesh_data_create(raw, (md: mesh_data_t) => {
|
||||
Context.raw.paintObject = Context.mainObject();
|
||||
let md: mesh_data_t = mesh_data_create(raw);
|
||||
Context.raw.paintObject = Context.mainObject();
|
||||
|
||||
Context.selectPaintObject(Context.mainObject());
|
||||
for (let i = 0; i < Project.paintObjects.length; ++i) {
|
||||
let p = Project.paintObjects[i];
|
||||
if (p == Context.raw.paintObject) continue;
|
||||
data_delete_mesh(p.data._handle);
|
||||
mesh_object_remove(p);
|
||||
Context.selectPaintObject(Context.mainObject());
|
||||
for (let i = 0; i < Project.paintObjects.length; ++i) {
|
||||
let p = Project.paintObjects[i];
|
||||
if (p == Context.raw.paintObject) continue;
|
||||
data_delete_mesh(p.data._handle);
|
||||
mesh_object_remove(p);
|
||||
}
|
||||
let handle = Context.raw.paintObject.data._handle;
|
||||
if (handle != "SceneSphere" && handle != "ScenePlane") {
|
||||
data_delete_mesh(handle);
|
||||
}
|
||||
|
||||
if (ImportMesh.clearLayers) {
|
||||
while (Project.layers.length > 0) {
|
||||
let l = Project.layers.pop();
|
||||
SlotLayer.unload(l);
|
||||
}
|
||||
let handle = Context.raw.paintObject.data._handle;
|
||||
if (handle != "SceneSphere" && handle != "ScenePlane") {
|
||||
data_delete_mesh(handle);
|
||||
Base.newLayer(false);
|
||||
app_notify_on_init(Base.initLayers);
|
||||
History.reset();
|
||||
}
|
||||
|
||||
mesh_object_set_data(Context.raw.paintObject, md);
|
||||
Context.raw.paintObject.base.name = mesh.name;
|
||||
Project.paintObjects = [Context.raw.paintObject];
|
||||
|
||||
md._handle = raw.name;
|
||||
data_cached_meshes.set(md._handle, md);
|
||||
|
||||
Context.raw.ddirty = 4;
|
||||
UIBase.hwnds[TabArea.TabSidebar0].redraws = 2;
|
||||
UIBase.hwnds[TabArea.TabSidebar1].redraws = 2;
|
||||
|
||||
// Wait for addMesh calls to finish
|
||||
app_notify_on_init(ImportMesh.finishImport);
|
||||
|
||||
Base.notifyOnNextFrame(() => {
|
||||
let f32 = new Float32Array(Config.getTextureResX() * Config.getTextureResY() * 4);
|
||||
for (let i = 0; i < Math.floor(mesh.inda.length); ++i) {
|
||||
let index = mesh.inda[i];
|
||||
f32[i * 4] = mesh.posa[index * 4] / 32767;
|
||||
f32[i * 4 + 1] = mesh.posa[index * 4 + 1] / 32767;
|
||||
f32[i * 4 + 2] = mesh.posa[index * 4 + 2] / 32767;
|
||||
f32[i * 4 + 3] = 1.0;
|
||||
}
|
||||
|
||||
if (ImportMesh.clearLayers) {
|
||||
while (Project.layers.length > 0) {
|
||||
let l = Project.layers.pop();
|
||||
SlotLayer.unload(l);
|
||||
}
|
||||
Base.newLayer(false);
|
||||
app_notify_on_init(Base.initLayers);
|
||||
History.reset();
|
||||
}
|
||||
|
||||
mesh_object_set_data(Context.raw.paintObject, md);
|
||||
Context.raw.paintObject.base.name = mesh.name;
|
||||
Project.paintObjects = [Context.raw.paintObject];
|
||||
|
||||
md._handle = raw.name;
|
||||
data_cached_meshes.set(md._handle, md);
|
||||
|
||||
Context.raw.ddirty = 4;
|
||||
UIBase.hwnds[TabArea.TabSidebar0].redraws = 2;
|
||||
UIBase.hwnds[TabArea.TabSidebar1].redraws = 2;
|
||||
|
||||
// Wait for addMesh calls to finish
|
||||
app_notify_on_init(ImportMesh.finishImport);
|
||||
|
||||
Base.notifyOnNextFrame(() => {
|
||||
let f32 = new Float32Array(Config.getTextureResX() * Config.getTextureResY() * 4);
|
||||
for (let i = 0; i < Math.floor(mesh.inda.length); ++i) {
|
||||
let index = mesh.inda[i];
|
||||
f32[i * 4] = mesh.posa[index * 4] / 32767;
|
||||
f32[i * 4 + 1] = mesh.posa[index * 4 + 1] / 32767;
|
||||
f32[i * 4 + 2] = mesh.posa[index * 4 + 2] / 32767;
|
||||
f32[i * 4 + 3] = 1.0;
|
||||
}
|
||||
let imgmesh = image_from_bytes(f32.buffer, Config.getTextureResX(), Config.getTextureResY(), tex_format_t.RGBA128);
|
||||
let texpaint = Project.layers[0].texpaint;
|
||||
g2_begin(texpaint, false);
|
||||
g2_set_pipeline(Base.pipeCopy128);
|
||||
g2_draw_scaled_image(imgmesh, 0, 0, Config.getTextureResX(), Config.getTextureResY());
|
||||
g2_set_pipeline(null);
|
||||
g2_end();
|
||||
});
|
||||
let imgmesh = image_from_bytes(f32.buffer, Config.getTextureResX(), Config.getTextureResY(), tex_format_t.RGBA128);
|
||||
let texpaint = Project.layers[0].texpaint;
|
||||
g2_begin(texpaint, false);
|
||||
g2_set_pipeline(Base.pipeCopy128);
|
||||
g2_draw_scaled_image(imgmesh, 0, 0, Config.getTextureResX(), Config.getTextureResY());
|
||||
g2_set_pipeline(null);
|
||||
g2_end();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -147,29 +146,28 @@ class ImportMesh {
|
||||
let raw = ImportMesh.rawMesh(mesh);
|
||||
if (mesh.cola != null) raw.vertex_arrays.push({ values: mesh.cola, attrib: "col", data: "short4norm", padding: 1 });
|
||||
|
||||
mesh_data_create(raw, (md: mesh_data_t) => {
|
||||
let md: mesh_data_t = mesh_data_create(raw);
|
||||
|
||||
let object = scene_add_mesh_object(md, Context.raw.paintObject.materials, Context.raw.paintObject.base);
|
||||
object.base.name = mesh.base.name;
|
||||
object.skip_context = "paint";
|
||||
let object = scene_add_mesh_object(md, Context.raw.paintObject.materials, Context.raw.paintObject.base);
|
||||
object.base.name = mesh.base.name;
|
||||
object.skip_context = "paint";
|
||||
|
||||
// Ensure unique names
|
||||
for (let p of Project.paintObjects) {
|
||||
if (p.base.name == object.base.name) {
|
||||
p.base.name += ".001";
|
||||
p.data._handle += ".001";
|
||||
data_cached_meshes.set(p.data._handle, p.data);
|
||||
}
|
||||
// Ensure unique names
|
||||
for (let p of Project.paintObjects) {
|
||||
if (p.base.name == object.base.name) {
|
||||
p.base.name += ".001";
|
||||
p.data._handle += ".001";
|
||||
data_cached_meshes.set(p.data._handle, p.data);
|
||||
}
|
||||
}
|
||||
|
||||
Project.paintObjects.push(object);
|
||||
Project.paintObjects.push(object);
|
||||
|
||||
md._handle = raw.name;
|
||||
data_cached_meshes.set(md._handle, md);
|
||||
md._handle = raw.name;
|
||||
data_cached_meshes.set(md._handle, md);
|
||||
|
||||
Context.raw.ddirty = 4;
|
||||
UIBase.hwnds[TabArea.TabSidebar0].redraws = 2;
|
||||
});
|
||||
Context.raw.ddirty = 4;
|
||||
UIBase.hwnds[TabArea.TabSidebar0].redraws = 2;
|
||||
}
|
||||
|
||||
_addMesh();
|
||||
|
||||
Reference in New Issue
Block a user