From 5b35a26c6e5e8971bff823a3de554600c64e60dc Mon Sep 17 00:00:00 2001 From: Pyogenics Date: Sun, 6 Apr 2025 20:26:28 +0100 Subject: [PATCH] Tweak map materials --- io_scene_a3d/BattleMapBlenderImporter.py | 16 ++++++++++------ io_scene_a3d/__init__.py | 12 ++++++++++++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/io_scene_a3d/BattleMapBlenderImporter.py b/io_scene_a3d/BattleMapBlenderImporter.py index 05752e3..aefc5e8 100644 --- a/io_scene_a3d/BattleMapBlenderImporter.py +++ b/io_scene_a3d/BattleMapBlenderImporter.py @@ -253,7 +253,7 @@ class BattleMapBlenderImporter: #TODO: implement spawn type name lookup ob = bpy.data.objects.new(f"SpawnPoint_{spawnPointData.type}", None) ob.empty_display_type = "ARROWS" - ob.empty_display_size = 100 + ob.empty_display_size = 100 # The map will be at 100x scale so it's a good idea to match that here ob.location = spawnPointData.position ob.rotation_mode = "XYZ" ob.rotation_euler = spawnPointData.rotation @@ -266,8 +266,8 @@ class BattleMapBlenderImporter: # Shader specific logic if materialData.shader == "TankiOnline/SingleTextureShader": bsdf = PrincipledBSDFWrapper(ma, is_readonly=False, use_nodes=True) - bsdf.roughness = 1.0 - bsdf.ior = 1.0 + bsdf.roughness_set(1.0) + bsdf.ior_set(1.0) # Try load texture textureParameter = materialData.textureParameters[0] @@ -277,8 +277,8 @@ class BattleMapBlenderImporter: addImageTextureToMaterial(texture, ma.node_tree) elif materialData.shader == "TankiOnline/SpriteShader": bsdf = PrincipledBSDFWrapper(ma, is_readonly=False, use_nodes=True) - bsdf.roughness = 1.0 - bsdf.ior = 1.0 + bsdf.roughness_set(1.0) + bsdf.ior_set(1.0) # Try load texture textureParameter = materialData.textureParameters[0] @@ -287,6 +287,10 @@ class BattleMapBlenderImporter: addImageTextureToMaterial(texture, ma.node_tree, linkAlpha=True) elif materialData.shader == "TankiOnline/Terrain": - pass + # XXX: still need to figure out how to do the terrain properly, all manual attempts have yielded mixed results + bsdf = PrincipledBSDFWrapper(ma, is_readonly=False, use_nodes=True) + bsdf.roughness_set(1.0) + bsdf.ior_set(1.0) + bsdf.base_color_set((0.0, 0.0, 0.0)) return ma \ No newline at end of file diff --git a/io_scene_a3d/__init__.py b/io_scene_a3d/__init__.py index c93de91..bc15cca 100644 --- a/io_scene_a3d/__init__.py +++ b/io_scene_a3d/__init__.py @@ -31,6 +31,7 @@ from .BattleMap import BattleMap from .BattleMapBlenderImporter import BattleMapBlenderImporter from glob import glob +from time import time ''' Addon preferences @@ -69,6 +70,8 @@ class ImportA3D(Operator, ImportHelper): return ImportHelper.invoke(self, context, event) def execute(self, context): + importStartTime = time() + objects = [] for file in self.files: filepath = self.directory + file.name @@ -90,6 +93,9 @@ class ImportA3D(Operator, ImportHelper): for obI, ob in enumerate(objects): collection.objects.link(ob) + importEndTime = time() + self.report({'INFO'}, f"Imported {len(objects)} objects in {importEndTime-importStartTime}s") + return {"FINISHED"} class ImportBattleMap(Operator, ImportHelper): @@ -114,6 +120,9 @@ class ImportBattleMap(Operator, ImportHelper): def execute(self, context): print(f"Reading BattleMap data from {self.filepath}") + + importStartTime = time() + mapData = BattleMap() with open(self.filepath, "rb") as file: mapData.read(file) @@ -127,6 +136,9 @@ class ImportBattleMap(Operator, ImportHelper): collection = bpy.context.collection for ob in objects: collection.objects.link(ob) + + importEndTime = time() + self.report({'INFO'}, f"Imported {len(objects)} objects in {importEndTime-importStartTime}s") return {"FINISHED"}