Skip to content

Commit 57ddcc6

Browse files
authored
Merge pull request #89 from MrClock8163/fixes
v2.5.1
2 parents 66bb01d + 95a4bd5 commit 57ddcc6

File tree

6 files changed

+38
-25
lines changed

6 files changed

+38
-25
lines changed

Arma3ObjectBuilder/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Changelog
22

3+
## [v2.5.1](https://github.com/MrClock8163/Arma3ObjectBuilder/releases/tag/v2.5.1) (Blender 2.90 -> 4.4)
4+
5+
### Fixed
6+
7+
- Face and vertex flag groups were not properly handled in some cases
8+
- The disabled "Preserve Preprocessed LOD Objects" option was not respected if an error occured during export
9+
310
## [v2.5.0](https://github.com/MrClock8163/Arma3ObjectBuilder/releases/tag/v2.5.0) (Blender 2.90 -> 4.3)
411

512
### Added

Arma3ObjectBuilder/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
"name": "Arma 3 Object Builder",
33
"description": "Collection of tools for editing Arma 3 content",
44
"author": "MrClock (present add-on), Hans-Joerg \"Alwarren\" Frieden (original ArmaToolbox add-on)",
5-
"version": (2, 5, 0),
5+
"version": (2, 5, 1),
66
"blender": (2, 90, 0),
77
"location": "Object Builder panels",
8-
"warning": "",
8+
"warning": "Development",
99
"doc_url": "https://mrcmodding.gitbook.io/arma-3-object-builder/home",
1010
"tracker_url": "https://github.com/MrClock8163/Arma3ObjectBuilder/issues",
1111
"category": "Import-Export"

Arma3ObjectBuilder/blender_manifest.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ type = "add-on"
55
id = "Arma3ObjectBuilder"
66
name = "Arma 3 Object Builder"
77
tagline = "Comprehensive add-on for modding Arma 3"
8-
version = "2.5.0"
8+
version = "2.5.1"
99
blender_version_min = "4.2.0"
1010
website = "https://mrcmodding.gitbook.io/arma-3-object-builder/home"
1111
tags = ["Import-Export", "Game Engine", "Object"]

Arma3ObjectBuilder/io/export_p3d.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -105,32 +105,32 @@ def bake_flags_vertex(obj):
105105
with utils.edit_bmesh(obj) as bm:
106106
bm.verts.ensure_lookup_table()
107107

108-
default_flag = get_prefs().flag_vertex
109-
110108
layer = flagutils.get_layer_flags_vertex(bm)
111109
flags_vertex = {i: item.get_flag() for i, item in enumerate(obj.a3ob_properties_object_flags.vertex)}
112-
if len(flags_vertex) > 0:
110+
if len(flags_vertex) == 0:
111+
default_flag = get_prefs().flag_vertex
113112
for vert in bm.verts:
114-
vert[layer] = flags_vertex.get(vert[layer], default_flag)
113+
vert[layer] = default_flag
115114
else:
115+
flag = flags_vertex[0]
116116
for vert in bm.verts:
117-
vert[layer] = default_flag
117+
vert[layer] = flags_vertex.get(vert[layer], flag)
118118

119119

120120
def bake_flags_face(obj):
121121
with utils.edit_bmesh(obj) as bm:
122122
bm.faces.ensure_lookup_table()
123123

124-
default_flag = get_prefs().flag_face
125-
126124
layer = flagutils.get_layer_flags_face(bm)
127125
flags_face = {i: item.get_flag() for i, item in enumerate(obj.a3ob_properties_object_flags.face)}
128-
if len(flags_face) > 0:
126+
if len(flags_face) == 0:
127+
default_flag = get_prefs().flag_face
129128
for face in bm.faces:
130-
face[layer] = flags_face.get(face[layer], default_flag)
129+
face[layer] = default_flag
131130
else:
131+
flag = flags_face[0]
132132
for face in bm.faces:
133-
face[layer] = default_flag
133+
face[layer] = flags_face.get(face[layer], flag)
134134

135135

136136
def blank_flags_vertex(obj):

Arma3ObjectBuilder/ui/import_export_p3d.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -325,14 +325,18 @@ def execute(self, context):
325325
temp_collection = export_p3d.create_temp_collection(context)
326326

327327
with utils.ExportFileHandler(self.filepath, "wb") as file:
328-
lod_count, exported_count = export_p3d.write_file(self, context, file, temp_collection)
329-
if lod_count == exported_count:
330-
utils.op_report(self, {'INFO'}, "Successfully exported all %d LODs (check the logs in the system console)" % exported_count)
331-
else:
332-
utils.op_report(self, {'WARNING'}, "Only exported %d/%d LODs (check the logs in the system console)" % (exported_count, lod_count))
333-
334-
if not get_prefs().preserve_preprocessed_lods:
335-
export_p3d.cleanup_temp_collection(temp_collection)
328+
# The export needs to be put inside a try-catch block in order to do the temporary object cleanup.
329+
try:
330+
lod_count, exported_count = export_p3d.write_file(self, context, file, temp_collection)
331+
332+
if lod_count == exported_count:
333+
utils.op_report(self, {'INFO'}, "Successfully exported all %d LODs (check the logs in the system console)" % exported_count)
334+
else:
335+
utils.op_report(self, {'WARNING'}, "Only exported %d/%d LODs (check the logs in the system console)" % (exported_count, lod_count))
336+
337+
finally:
338+
if not get_prefs().preserve_preprocessed_lods:
339+
export_p3d.cleanup_temp_collection(temp_collection)
336340

337341
return {'FINISHED'}
338342

Arma3ObjectBuilder/utilities/flags.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,13 +138,14 @@ def assign_group_vertex(obj, group_id):
138138

139139

140140
def select_group_vertex(obj, group_id, select = True):
141+
group_count = len(obj.a3ob_properties_object_flags.vertex)
141142
with utils.edit_bmesh(obj) as bm:
142143
bm.verts.ensure_lookup_table()
143144

144145
layer = get_layer_flags_vertex(bm)
145-
146146
for vertex in bm.verts:
147-
if vertex[layer] == group_id:
147+
value = vertex[layer]
148+
if value == group_id or (group_id == 0 and not (0 <= value < group_count)):
148149
vertex.select = select
149150

150151

@@ -178,13 +179,14 @@ def assign_group_face(obj, group_id):
178179

179180

180181
def select_group_face(obj, group_id, select = True):
182+
group_count = len(obj.a3ob_properties_object_flags.face)
181183
with utils.edit_bmesh(obj) as bm:
182184
bm.faces.ensure_lookup_table()
183185

184186
layer = get_layer_flags_face(bm)
185-
186187
for face in bm.faces:
187-
if face[layer] == group_id:
188+
value = face[layer]
189+
if value == group_id or (group_id == 0 and not (0 <= value < group_count)):
188190
face.select = select
189191

190192

0 commit comments

Comments
 (0)