Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 8 additions & 7 deletions src/mpfb/services/modifierservice.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""This module contains utility functions for working with modifiers."""

import bpy
from typing import Any
from .logservice import LogService

_LOG = LogService.get_logger("services.modifierservice")
Expand All @@ -14,7 +15,7 @@ def __init__(self):
raise RuntimeError("You should not instance ModifierService. Use its static methods instead.")

@staticmethod
def move_modifier_to_top(blender_object, modifier_name):
def move_modifier_to_top(blender_object: Any, modifier_name: str) -> None:
"""Move a modifier to the top of the stack"""
if not modifier_name or modifier_name not in blender_object.modifiers:
return
Expand All @@ -23,7 +24,7 @@ def move_modifier_to_top(blender_object, modifier_name):
bpy.ops.object.modifier_move_up(modifier=modifier_name)

@staticmethod
def create_modifier(blender_object, modifier_name, modifier_type, move_to_top=False):
def create_modifier(blender_object: Any, modifier_name: str, modifier_type: str, move_to_top: bool = False) -> Any:
"""Create a new modifier for blender_object, of the given type. Optionally place it in the top of the stack."""
if not blender_object:
raise ValueError('Tried to call create_modifier for None object')
Expand All @@ -37,7 +38,7 @@ def create_modifier(blender_object, modifier_name, modifier_type, move_to_top=Fa
return modifier

@staticmethod
def create_armature_modifier(blender_object, armature_object, modifier_name, show_in_editmode=True, show_on_cage=True, move_to_top=True):
def create_armature_modifier(blender_object: Any, armature_object: Any, modifier_name: str, show_in_editmode: bool = True, show_on_cage: bool = True, move_to_top: bool = True) -> Any:
"""Create an armature modifier for an object. Optionally place it in the top of the stack."""
modifier = ModifierService.create_modifier(blender_object, modifier_name, 'ARMATURE', move_to_top=move_to_top)
modifier.object = armature_object
Expand All @@ -46,7 +47,7 @@ def create_armature_modifier(blender_object, armature_object, modifier_name, sho
return modifier

@staticmethod
def create_mask_modifier(blender_object, modifier_name, vertex_group, show_in_editmode=True, show_on_cage=True, move_to_top=False):
def create_mask_modifier(blender_object: Any, modifier_name: str, vertex_group: str, show_in_editmode: bool = True, show_on_cage: bool = True, move_to_top: bool = False) -> Any:
"""Create a mask modifier for blender_object, for the given vertex group. Optionally place it in the top of the stack."""
modifier = ModifierService.create_modifier(blender_object, modifier_name, 'MASK', move_to_top=move_to_top)
modifier.vertex_group = vertex_group
Expand All @@ -55,7 +56,7 @@ def create_mask_modifier(blender_object, modifier_name, vertex_group, show_in_ed
return modifier

@staticmethod
def create_subsurf_modifier(blender_object, modifier_name, levels=0, render_levels=1, show_in_editmode=True, move_to_top=False):
def create_subsurf_modifier(blender_object: Any, modifier_name: str, levels: int = 0, render_levels: int = 1, show_in_editmode: bool = True, move_to_top: bool = False) -> Any:
"""Create a subdiv modifier for blender_object. Optionally place it in the top of the stack."""
modifier = ModifierService.create_modifier(blender_object, modifier_name, 'SUBSURF', move_to_top=move_to_top)
modifier.levels = levels
Expand All @@ -64,7 +65,7 @@ def create_subsurf_modifier(blender_object, modifier_name, levels=0, render_leve
return modifier

@staticmethod
def find_modifiers_of_type(blender_object, modifier_type):
def find_modifiers_of_type(blender_object: Any, modifier_type: str) -> list[Any]:
"""Return a list with all modifiers with a given type for the given object."""
modifiers = []
if not blender_object or not modifier_type:
Expand All @@ -75,7 +76,7 @@ def find_modifiers_of_type(blender_object, modifier_type):
return modifiers

@staticmethod
def find_modifier(blender_object, modifier_type, modifier_name=None):
def find_modifier(blender_object: Any, modifier_type: str, modifier_name: str | None = None) -> Any | None:
"""Return a modifier of the given type, optionally also limited by name"""
if not blender_object:
return None
Expand Down