diff --git a/CHANGELOG.md b/CHANGELOG.md index 4197dce..dbebf4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,34 @@ BCRY Exporter ------------------------------------------------------------------------------- +## 5.1 +#### Compatibility +* Only compatible with CryEngine 3.5 and up. +* Only compatible with Blender 2.7 and up. +* Supports primary assets: CGF, CGA, CHR, SKIN, ANM, I_CAF. +* Compatible with LumberYard. + +#### UI Changes: +* User Defined Properties in Tool Shelf Panel. + +#### New Features: +* Vehicle exporting support. +* Parent-Child relation exporting. +* CGA parent child support. +* Dummy/Empty object exporting. +* Dummy/Empty object UDP support. +* Vehicle hull UDP support. +* Alpha vertex color exporting for Blend Layer. + +#### Improvements/Fixes: +* Custom normals area calculation. +* Material exporting log. +* Material order fix. +* Set Material Name defualt tool fixing. +* UDP properties fixing. + + + ## 5.0 #### Compatibility * Only compatible with CryEngine 3.5 and up. diff --git a/io_bcry_exporter/__init__.py b/io_bcry_exporter/__init__.py index 792f33b..83fad11 100644 --- a/io_bcry_exporter/__init__.py +++ b/io_bcry_exporter/__init__.py @@ -36,9 +36,9 @@ "author": "Özkan Afacan, Angelo J. Miner, Mikołaj Milej, Daniel White, " "Oscar Martin Garcia, Duo Oratar, David Marcelis", "blender": (2, 70, 0), - "version": (5, 0, 0), + "version": (5, 1, 0), "location": "BCRY Exporter Menu", - "description": "Export assets from Blender to CryEngine 3", + "description": "Export assets from Blender to CryEngine V", "warning": "", "wiki_url": "https://github.com/AFCStudio/BCryExporter/wiki", "tracker_url": "https://github.com/AFCStudio/BCryExporter/issues", diff --git a/io_bcry_exporter/export.py b/io_bcry_exporter/export.py index 47bd594..1c004a8 100644 --- a/io_bcry_exporter/export.py +++ b/io_bcry_exporter/export.py @@ -693,7 +693,7 @@ def _write_child_objects(self, parent_object, parent_node, group): node.appendChild(udp_extra) self._write_child_objects(child_object, node, group) - + parent_node.appendChild(node) return parent_node diff --git a/io_bcry_exporter/material_utils.py b/io_bcry_exporter/material_utils.py index 4bac92a..f67116e 100644 --- a/io_bcry_exporter/material_utils.py +++ b/io_bcry_exporter/material_utils.py @@ -47,7 +47,7 @@ def generate_mtl_files(_config, materials=None): sub_material = _doc.createElement('SubMaterials') parent_material.appendChild(sub_material) set_public_params(_doc, None, parent_material) - + print() bcPrint("'{}' material is being processed...".format(node)) @@ -80,7 +80,7 @@ def generate_mtl_files(_config, materials=None): def write_material_information(material_name): parts = material_name.split('__') bcPrint("Subname: '{}' - Index: '{}' - Physic Type: '{}'".format( - parts[2], parts[1], parts[3])) + parts[2], parts[1], parts[3])) def get_material_groups(materials): @@ -119,10 +119,12 @@ def get_materials(just_selected=False): if material not in materials: node_name = utils.get_node_name(group) - material.name = utils.replace_invalid_rc_characters(material.name) + material.name = utils.replace_invalid_rc_characters( + material.name) for image in get_textures(material): try: - image.name = utils.replace_invalid_rc_characters(image.name) + image.name = utils.replace_invalid_rc_characters( + image.name) except AttributeError: pass diff --git a/io_bcry_exporter/utils.py b/io_bcry_exporter/utils.py index 1d2e2df..41ef894 100644 --- a/io_bcry_exporter/utils.py +++ b/io_bcry_exporter/utils.py @@ -750,8 +750,11 @@ def is_visual_scene_node_writed(object_, group): def is_there_a_parent_releation(object_, group): while object_.parent: - if is_object_in_group(object_.parent, - group) and object_.parent.type in ('MESH', 'EMPTY'): + if is_object_in_group( + object_.parent, + group) and object_.parent.type in ( + 'MESH', + 'EMPTY'): return True else: return is_there_a_parent_releation(object_.parent, group) @@ -775,6 +778,7 @@ def is_dummy(object_): # Fakebones: #------------------------------------------------------------------------------ + def get_fakebone(bone_name): return next((fakebone for fakebone in get_type("fakebones") if fakebone.name == bone_name), None)