diff --git a/LancerEditUtility.py b/LancerEditUtility.py index cf9dd68..d800aba 100644 --- a/LancerEditUtility.py +++ b/LancerEditUtility.py @@ -1,7 +1,7 @@ bl_info = { "name": "LancerEdit Model Utility Plugin", "author": "Darklighter", - "version": (0, 0, 1), + "version": (0, 0, 2), "blender": (4, 5, 3), "location": "3D-Viewport > Sidebar > FLLancerEdit Utility", "description": "Non-offical LancerEdit Model Utility Plugin for PC-Game Freelancer", @@ -159,6 +159,21 @@ class RenameChildObjectOperator(bpy.types.Operator): self.report({'INFO'}, "Selected child objects renamed successfully") return {'FINISHED'} +class OBJECT_OT_remove_hull_material(bpy.types.Operator): + bl_idname = "object.remove_hull_material" + bl_label = "Remove Hull Material" + bl_description = "Remove materials from selected objects" + + def execute(self, context): + selected_objects = context.selected_objects + + for obj in selected_objects: + if obj.type == 'MESH' and obj.data.materials: + obj.data.materials.clear() + + self.report({'INFO'}, "Materials removed from selected objects") + return {'FINISHED'} + class OBJECT_OT_create_convex(bpy.types.Operator): bl_idname = "object.create_convex" bl_label = "Create Convex" @@ -212,6 +227,30 @@ class OBJECT_OT_create_convex(bpy.types.Operator): self.report({'INFO'}, "Convex hull created") return {'FINISHED'} +class OBJECT_OT_add_parent_component(bpy.types.Operator): + bl_idname = "object.add_parent_component" + bl_label = "Add Parent Component" + bl_description = "Set the parent of the selected object to specified object" + + parent_object_name: bpy.props.StringProperty( + name="Parent Object Name", + description="Name of the object to set as parent", + default="" + ) + + def execute(self, context): + parent_obj = bpy.data.objects.get(self.parent_object_name) + if not parent_obj: + self.report({'WARNING'}, f"Object '{self.parent_object_name}' not found.") + return {'CANCELLED'} + for obj in context.selected_objects: + obj.parent = parent_obj + self.report({'INFO'}, f"Parent set to '{self.parent_object_name}' for selected objects.") + return {'FINISHED'} + + def invoke(self, context, event): + return context.window_manager.invoke_props_dialog(self) + class LancerEditHelpersPanel(bpy.types.Panel): bl_label = "LancerEdit Model Utility Plugin" @@ -242,6 +281,10 @@ class LancerEditHelpersPanel(bpy.types.Panel): layout.prop(scene, "child_object_new_name") # Button for Convert to Hull layout.operator("object.rename_selected_child") + layout.separator() + layout.operator("object.remove_hull_material") + layout.separator() + layout.operator("object.add_parent_component") def register(): @@ -249,6 +292,8 @@ def register(): bpy.utils.register_class(RenameObjectsAndMeshesOperator) bpy.utils.register_class(RenameChildObjectOperator) bpy.utils.register_class(OBJECT_OT_create_convex) + bpy.utils.register_class(OBJECT_OT_remove_hull_material) + bpy.utils.register_class(OBJECT_OT_add_parent_component) bpy.types.Scene.object_names = bpy.props.StringProperty( name="Parent Name", @@ -271,10 +316,13 @@ def unregister(): bpy.utils.unregister_class(RenameObjectsAndMeshesOperator) bpy.utils.unregister_class(RenameChildObjectOperator) bpy.utils.unregister_class(OBJECT_OT_create_convex) + bpy.utils.unregister_class(OBJECT_OT_remove_hull_material) + bpy.utils.register_class(OBJECT_OT_add_parent_component) del bpy.types.Scene.object_names del bpy.types.Scene.new_name del bpy.types.Scene.child_object_new_name + if __name__ == "__main__": register() \ No newline at end of file