+15
@@ -0,0 +1,15 @@
|
||||
import bpy
|
||||
from . import ui
|
||||
from .core.register import order_classes
|
||||
|
||||
def register():
|
||||
print("Registering Avatar Toolkit")
|
||||
# Order the classes before registration
|
||||
order_classes()
|
||||
# Register the UI classes
|
||||
ui.register()
|
||||
|
||||
def unregister():
|
||||
print("Unregistering Avatar Toolkit")
|
||||
# Unregister the UI classes
|
||||
ui.unregister()
|
||||
@@ -0,0 +1,16 @@
|
||||
# blender_manifest.toml
|
||||
|
||||
schema_version = "1.0.0"
|
||||
|
||||
id = "avatar_toolkit"
|
||||
version = "0.0.1"
|
||||
name = "Avatar Toolkit"
|
||||
tagline = "A modern tool for importing and optimizing models for VRChat, Resonite, and other similar games."
|
||||
maintainer = "Your Name <your.email@example.com>"
|
||||
type = "add-on"
|
||||
|
||||
blender_version_min = "4.3.0"
|
||||
|
||||
license = [
|
||||
"SPDX:GPL-3.0-or-later",
|
||||
]
|
||||
@@ -0,0 +1,3 @@
|
||||
# core/__init__.py
|
||||
|
||||
from .register import register_wrap
|
||||
@@ -0,0 +1,24 @@
|
||||
import bpy
|
||||
import typing
|
||||
|
||||
# List to store the classes to register
|
||||
__bl_classes = []
|
||||
# List to store the ordered classes for registration
|
||||
__bl_ordered_classes = []
|
||||
|
||||
def register_wrap(cls):
|
||||
# Check if the class has a 'bl_rna' attribute (indicating it's a Blender class)
|
||||
if hasattr(cls, 'bl_rna'):
|
||||
# Add the class to the list of classes to register
|
||||
__bl_classes.append(cls)
|
||||
return cls
|
||||
|
||||
def order_classes():
|
||||
global __bl_ordered_classes
|
||||
# Create a copy of the classes list to store the ordered classes
|
||||
__bl_ordered_classes = __bl_classes.copy()
|
||||
|
||||
def iter_classes_to_register():
|
||||
# Iterate over the ordered classes and yield each class for registration
|
||||
for cls in __bl_ordered_classes:
|
||||
yield cls
|
||||
@@ -0,0 +1,23 @@
|
||||
if "bpy" not in locals():
|
||||
import bpy
|
||||
from . import panel, quick_access, optimization
|
||||
else:
|
||||
import importlib
|
||||
# Reload the modules to reflect changes during development
|
||||
importlib.reload(panel)
|
||||
importlib.reload(quick_access)
|
||||
importlib.reload(optimization)
|
||||
|
||||
def register():
|
||||
print("UI register called")
|
||||
from ..core.register import iter_classes_to_register
|
||||
# Iterate over the classes to register and register them
|
||||
for cls in iter_classes_to_register():
|
||||
bpy.utils.register_class(cls)
|
||||
|
||||
def unregister():
|
||||
print("UI unregister called")
|
||||
from ..core.register import iter_classes_to_register
|
||||
# Iterate over the classes to unregister in reverse order and unregister them
|
||||
for cls in reversed(list(iter_classes_to_register())):
|
||||
bpy.utils.unregister_class(cls)
|
||||
@@ -0,0 +1,16 @@
|
||||
import bpy
|
||||
from ..core.register import register_wrap
|
||||
|
||||
@register_wrap
|
||||
class AvatarToolkitOptimizationPanel(bpy.types.Panel):
|
||||
bl_label = "Optimization"
|
||||
bl_idname = "OBJECT_PT_avatar_toolkit_optimization"
|
||||
bl_space_type = 'VIEW_3D'
|
||||
bl_region_type = 'UI'
|
||||
bl_category = "Avatar Toolkit"
|
||||
bl_parent_id = "OBJECT_PT_avatar_toolkit"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.label(text="Optimization Options")
|
||||
# Add optimization options here
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
import bpy
|
||||
from ..core.register import register_wrap
|
||||
|
||||
@register_wrap
|
||||
class AvatarToolkitPanel(bpy.types.Panel):
|
||||
bl_label = "Avatar Toolkit"
|
||||
bl_idname = "OBJECT_PT_avatar_toolkit"
|
||||
bl_space_type = 'VIEW_3D'
|
||||
bl_region_type = 'UI'
|
||||
bl_category = "Avatar Toolkit"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.label(text="Welcome to Avatar Toolkit!")
|
||||
print("Avatar Toolkit Panel is being drawn")
|
||||
@@ -0,0 +1,16 @@
|
||||
import bpy
|
||||
from ..core.register import register_wrap
|
||||
|
||||
@register_wrap
|
||||
class AvatarToolkitQuickAccessPanel(bpy.types.Panel):
|
||||
bl_label = "Quick Access"
|
||||
bl_idname = "OBJECT_PT_avatar_toolkit_quick_access"
|
||||
bl_space_type = 'VIEW_3D'
|
||||
bl_region_type = 'UI'
|
||||
bl_category = "Avatar Toolkit"
|
||||
bl_parent_id = "OBJECT_PT_avatar_toolkit"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.label(text="Quick Access Options")
|
||||
# Add quick access options here
|
||||
Reference in New Issue
Block a user