Development Guidelines

The Sedaia Rig Interfaces extension follows strict development guidelines to maintain its modular structure and ensure compatibility across multiple versions of Sakura’s Character Rigs.

Modular Registration

When adding a new module with multiple Blender classes, use the following classes list and loop-based register()/unregister() functions:

from .lib import blender_utils as U

classes = [
    MY_CLASS_PT_panel_1,
    MY_CLASS_PT_panel_2,
    MY_OT_operator_1
]

def register():
    for cls in classes:
        U.register_class(cls)

def unregister():
    for cls in classes:
        U.unregister_class(cls)

Naming Conventions (Prefixer)

All classes must follow the Prefixer system. This system ensures unique ID names within the Blender environment and incorporates major versioning.

  • Format: Prefixer(“sacr_<sacr_version>_ui_<ui_version>_<category>”).<type>

  • Example: Prefixer(“sacr_7_ui_2_global”).panel results in a bl_idname like SEDAIA_RIGS_PT_sacr_7_ui_2_global.

Property Storage

Follow Guideline 3.1: Property Storage to prevent property pollution and ensure rig-specific configurations.

  • Rule: Never store UI properties in the global bpy.types.Scene.

  • Standard: Attach all UI state properties to a PropertyGroup on bpy.types.Object.

  • Access: Use self.id_data within property accessors to ensure you are modifying the correct rig instance.

Changelog Style

CHANGELOG.md must maintain a consistent hierarchical structure:

  • Level 1 (#): For the major Version (e.g., # Version 4.0.0).

  • Level 2 (##): For high-level Categories or Summaries (e.g., ## Rig UI Changes).

  • Level 3 (###): For Specific Features or Technical details (e.g., ### Prefixer System).

  • Horizontal Rules (—): Used as separators between major versions.

  • Bullet Points (-): For individual change descriptions.