Merge branch 'Current' into Alpha-3

This commit is contained in:
Onan Chew
2025-07-15 18:11:58 -04:00
committed by GitHub
17 changed files with 22 additions and 10 deletions
+3 -3
View File
@@ -23,11 +23,11 @@ If you like what we do and want to help support the development of cats you can
## Blender version support policies. ## Blender version support policies.
You can find them on the wiki here [HERE](https://avatartoolkit.xyz/wiki.html?version=0.2.0#what-is-avatar-toolkits-version-support-policy) You can find them on the wiki here [HERE](https://avatartoolkit.xyz/legacywiki.html?version=0.2.1#what-is-avatar-toolkits-version-support-policy)
## Features ## Features
See everything Avatar Toolkit has ot offer [here](https://avatartoolkit.xyz/wiki.html) See everything Avatar Toolkit has ot offer [here](https://avatartoolkit.xyz/legacywiki.html)
## Requirements ## Requirements
@@ -48,7 +48,7 @@ See everything Avatar Toolkit has ot offer [here](https://avatartoolkit.xyz/wiki
Currently None. Currently None.
## Installation ## Installation
You can find out how to install Avatar Toolkit [here](https://avatartoolkit.xyz/wiki.html?version=0.2.0#how-to-install-avatar-toolkit) You can find out how to install Avatar Toolkit [here](https://avatartoolkit.xyz/legacywiki.html?version=0.2.0#how-to-install-avatar-toolkit)
## Help ## Help
+4 -3
View File
@@ -16,9 +16,10 @@ from bpy.types import (Context, Object, Modifier, EditBone, Operator, Material,
from functools import lru_cache from functools import lru_cache
from bpy.props import PointerProperty, IntProperty, StringProperty from bpy.props import PointerProperty, IntProperty, StringProperty
from bpy.utils import register_class from bpy.utils import register_class
from .logging_setup import logger from ..core.logging_setup import logger
from .translations import t from ..core.translations import t
from .dictionaries import reverse_bone_lookup, simplify_bonename from ..core.dictionaries import bone_names
from .dictionaries import reverse_bone_lookup, bone_names, simplify_bonename
class SceneMatClass(PropertyGroup): class SceneMatClass(PropertyGroup):
mat: PointerProperty(type=Material) mat: PointerProperty(type=Material)
+1 -1
View File
@@ -18,7 +18,7 @@ logger: logging.Logger = logging.getLogger(__name__)
import importlib.util import importlib.util
if importlib.util.find_spec("io_scene_valvesource") is not None: if importlib.util.find_spec("io_scene_valvesource") is not None:
from io_scene_valvesource.import_smd import SmdImporter from io_scene_valvesource.import_smd import SmdImporter # type: ignore
class ImportProgress: class ImportProgress:
"""Tracks and logs the progress of multi-file imports""" """Tracks and logs the progress of multi-file imports"""
+1 -1
View File
@@ -33,7 +33,7 @@ def configure_logging(enabled: bool = False, level: str = "WARNING") -> None:
logger.addHandler(handler) logger.addHandler(handler)
def error_with_traceback(msg, *args, **kwargs): def error_with_traceback(msg, *args, **kwargs):
if kwargs.get('exc_info', False) or isinstance(msg, Exception): if isinstance(kwargs.get('exception', None), Exception):
full_msg = f"{msg}\n{traceback.format_exc()}" full_msg = f"{msg}\n{traceback.format_exc()}"
_original_error(full_msg, *args, **{**kwargs, 'exc_info': False}) _original_error(full_msg, *args, **{**kwargs, 'exc_info': False})
else: else:
+1
View File
@@ -1,3 +1,4 @@
import traceback
from types import FrameType from types import FrameType
import bpy import bpy
import bpy_extras import bpy_extras
@@ -1,3 +1,4 @@
import traceback
import bpy import bpy
import numpy as np import numpy as np
from typing import List, Optional, Dict, Set, Tuple, Any from typing import List, Optional, Dict, Set, Tuple, Any
@@ -1,3 +1,4 @@
import traceback
import bpy import bpy
from bpy.types import Operator, Context, Object, ArmatureModifier, VertexGroup from bpy.types import Operator, Context, Object, ArmatureModifier, VertexGroup
from mathutils import Vector from mathutils import Vector
@@ -1,3 +1,4 @@
import traceback
import bpy import bpy
import re import re
from typing import Set, Dict, List, Optional, Tuple from typing import Set, Dict, List, Optional, Tuple
@@ -121,6 +122,7 @@ class AvatarToolkit_OT_CombineMaterials(Operator):
try: try:
num_cleaned = self.clean_material_slots(meshes) num_cleaned = self.clean_material_slots(meshes)
except Exception: except Exception:
logger.error(f"Material slot cleanup failed: {traceback.format_exc()}") logger.error(f"Material slot cleanup failed: {traceback.format_exc()}")
self.report({'ERROR'}, t("Optimization.error.slot_cleanup")) self.report({'ERROR'}, t("Optimization.error.slot_cleanup"))
+1
View File
@@ -1,3 +1,4 @@
import traceback
import bpy import bpy
from typing import Set, List, Tuple, ClassVar from typing import Set, List, Tuple, ClassVar
from bpy.types import Operator, Context, Object from bpy.types import Operator, Context, Object
-1
View File
@@ -122,7 +122,6 @@ class AvatarToolkit_OT_RemoveDoubles(Operator):
except Exception: except Exception:
logger.error(f"Error in execute: {traceback.format_exc()}") logger.error(f"Error in execute: {traceback.format_exc()}")
return {'CANCELLED'} return {'CANCELLED'}
def modal(self, context: Context, event: Event) -> set[ModalReturnType]: def modal(self, context: Context, event: Event) -> set[ModalReturnType]:
"""Modal operator execution""" """Modal operator execution"""
try: try:
+1
View File
@@ -1,3 +1,4 @@
import traceback
import bpy import bpy
from typing import Set, Dict, List, Tuple, Optional, Any from typing import Set, Dict, List, Tuple, Optional, Any
from bpy.props import StringProperty from bpy.props import StringProperty
+1
View File
@@ -1,3 +1,4 @@
import traceback
import bpy import bpy
import numpy as np import numpy as np
from bpy.types import Operator, Context from bpy.types import Operator, Context
+1 -1
View File
@@ -1,3 +1,4 @@
import traceback
import bpy import bpy
import re import re
from bpy.types import Operator, Context, EditBone, Object, Armature, Mesh from bpy.types import Operator, Context, EditBone, Object, Armature, Mesh
@@ -86,7 +87,6 @@ class AvatarToolKit_OT_CreateDigitigradeLegs(Operator):
except Exception as e: except Exception as e:
self.report({'ERROR'}, t("Tools.digitigrade_error", error=traceback.format_exc())) self.report({'ERROR'}, t("Tools.digitigrade_error", error=traceback.format_exc()))
return False return False
def execute(self, context: Context) -> set[str]: def execute(self, context: Context) -> set[str]:
+1
View File
@@ -1,3 +1,4 @@
import traceback
import bpy import bpy
import math import math
from typing import Set, List from typing import Set, List
+1
View File
@@ -1,3 +1,4 @@
import traceback
import bpy import bpy
from bpy.types import Operator, Context from bpy.types import Operator, Context
from ...core.translations import t from ...core.translations import t
+1
View File
@@ -1,3 +1,4 @@
import traceback
import bpy import bpy
from typing import Dict, List, Set, Optional, Tuple, Any from typing import Dict, List, Set, Optional, Tuple, Any
from bpy.types import Operator, Context, Object, PoseBone, EditBone, Bone, Constraint from bpy.types import Operator, Context, Object, PoseBone, EditBone, Bone, Constraint
+1
View File
@@ -1,6 +1,7 @@
# This code was taken from Cats Blender Plugin Unoffical, some of this code is by the original developers, however was improved by myself. # This code was taken from Cats Blender Plugin Unoffical, some of this code is by the original developers, however was improved by myself.
# Didn't think it was necessary to re-make something that works well. # Didn't think it was necessary to re-make something that works well.
import traceback
import bpy import bpy
from typing import Dict, List, Optional, Tuple, Any, Set, Union from typing import Dict, List, Optional, Tuple, Any, Set, Union
from bpy.types import Operator, Context, Object, ShapeKey from bpy.types import Operator, Context, Object, ShapeKey