From 705bff1006790d6b8f841b462d2f62ec54c8266a Mon Sep 17 00:00:00 2001 From: Amrsatrio Date: Fri, 19 Jun 2020 19:43:46 +0700 Subject: [PATCH] Fixed override textures not being added to umodel export queue --- build.gradle | 2 +- src/main/java/com/tb24/blenderumap/Main.java | 20 +++++++++++++++----- umap.py | 13 ++++++++----- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/build.gradle b/build.gradle index 266dd5e..d7ed30a 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { } group 'com.tb24' -version '0.2.0' +version '0.2.1' sourceCompatibility = 1.8 diff --git a/src/main/java/com/tb24/blenderumap/Main.java b/src/main/java/com/tb24/blenderumap/Main.java index e53bde9..b9f09a4 100644 --- a/src/main/java/com/tb24/blenderumap/Main.java +++ b/src/main/java/com/tb24/blenderumap/Main.java @@ -224,11 +224,11 @@ private static JsonArray exportAndProduceProcessed(String s) { if (texDataPkg != null) { BuildingTextureData td = StructFallbackReflectionUtilKt.mapToClass(texDataPkg.getExports().get(0).getBaseObject(), BuildingTextureData.class, null); JsonArray textures = new JsonArray(); - textures.add(td.Diffuse != null && td.Diffuse.getIndex() != 0 ? td.Diffuse.getOuterImportObject().getObjectName().getText() : null); - textures.add(td.Normal != null && td.Normal.getIndex() != 0 ? td.Normal.getOuterImportObject().getObjectName().getText() : null); - textures.add(td.Specular != null && td.Specular.getIndex() != 0 ? td.Specular.getOuterImportObject().getObjectName().getText() : null); - textures.add(td.Emissive != null && td.Emissive.getIndex() != 0 ? td.Emissive.getOuterImportObject().getObjectName().getText() : null); - textures.add(td.Mask != null && td.Mask.getIndex() != 0 ? td.Mask.getOuterImportObject().getObjectName().getText() : null); + addToArray(textures, td.Diffuse); + addToArray(textures, td.Normal); + addToArray(textures, td.Specular); + addToArray(textures, td.Emissive); + addToArray(textures, td.Mask); JsonArray entry = new JsonArray(); entry.add(textureDataPath); entry.add(textures); @@ -279,6 +279,16 @@ private static JsonArray exportAndProduceProcessed(String s) { return comps; } + private static void addToArray(JsonArray array, FPackageIndex index) { + if (index != null && index.getIndex() != 0) { + String s = index.getOuterImportObject().getObjectName().getText(); + toExport.add(s); + array.add(s); + } else { + array.add((JsonElement) null); + } + } + private static Package loadIfNot(String pkg) { GameFile gameFile = provider.findGameFile(pkg); diff --git a/umap.py b/umap.py index 8dee29c..4dcf9d7 100644 --- a/umap.py +++ b/umap.py @@ -11,6 +11,7 @@ # Change the value to the working directory of the Java program with the bat. I'm leaving mine here. data_dir = r"C:\Users\satri\Documents\AppProjects\BlenderUmap\run" +clear_scene = True reuse_meshes = True use_cube_as_fallback = True use_gltf = False @@ -128,7 +129,7 @@ def import_material(m_idx: int, path: str, suffix: str, base_textures: list, tex for td_idx, td_entry in enumerate(tex_data): if not td_entry: continue - index = {1: 3, 2: 2}.get(td_idx, 0) + index = {1: 3, 2: 2, 3: 2}.get(td_idx, 0) td_textures = td_entry[1] for i, tex_entry in enumerate(base_textures[index]): @@ -390,11 +391,13 @@ def string_hash_code(s: str) -> int: tex_shader.inputs[4].name = "Alpha" # clear all objects except camera -for obj in bpy.context.scene.objects: - if obj.type != "CAMERA": - obj.select_set(True) +if clear_scene: + for obj in bpy.context.scene.objects: + if obj.type != "CAMERA": + obj.select_set(True) + + bpy.ops.object.delete() -bpy.ops.object.delete() cleanup() # setup helper objects