mirror of
https://github.com/kaosat-dev/Blender_bevy_components_workflow.git
synced 2024-11-29 22:57:00 +00:00
197 lines
7.1 KiB
Python
197 lines
7.1 KiB
Python
|
bl_info = {
|
||
|
"name": "blenvy",
|
||
|
"author": "kaosigh",
|
||
|
"version": (0, 1, 0, "alpha.1"),
|
||
|
"blender": (3, 4, 0),
|
||
|
"location": "File > Import-Export",
|
||
|
"description": "tooling for the Bevy engine",
|
||
|
"warning": "",
|
||
|
"wiki_url": "https://github.com/kaosat-dev/Blenvy",
|
||
|
"tracker_url": "https://github.com/kaosat-dev/Blenvy/issues/new",
|
||
|
"category": "Import-Export"
|
||
|
}
|
||
|
|
||
|
import bpy
|
||
|
from bpy.app.handlers import persistent
|
||
|
from bpy.props import (StringProperty)
|
||
|
|
||
|
|
||
|
# components management
|
||
|
from .add_ons.bevy_components.components.operators import BLENVY_OT_component_copy, BLENVY_OT_component_fix, BLENVY_OT_component_rename_component, BLENVY_OT_component_remove_from_all_items, BLENVY_OT_component_remove, BLENVY_OT_component_from_custom_property, BLENVY_OT_component_paste, BLENVY_OT_component_add, RenameHelper, BLENVY_OT_component_toggle_visibility, BLENVY_OT_components_refresh_custom_properties_all, BLENVY_OT_components_refresh_custom_properties_current, BLENVY_OT_components_refresh_propgroups_all, BLENVY_OT_components_refresh_propgroups_current
|
||
|
from .add_ons.bevy_components.registry.registry import ComponentsRegistry,MissingBevyType
|
||
|
from .add_ons.bevy_components.registry.operators import (BLENVY_OT_components_registry_reload, BLENVY_OT_components_registry_browse_schema)
|
||
|
from .add_ons.bevy_components.registry.ui import (BLENVY_PT_components_missing_types_panel, BLENVY_UL_components_missing_types)
|
||
|
from .add_ons.bevy_components.components.metadata import (ComponentMetadata, ComponentsMeta)
|
||
|
from .add_ons.bevy_components.components.lists import BLENVY_OT_component_list_actions
|
||
|
from .add_ons.bevy_components.components.maps import BLENVY_OT_component_map_actions
|
||
|
from .add_ons.bevy_components.components.ui import BLENVY_PT_components_panel, BLENVY_PT_component_tools_panel
|
||
|
from .add_ons.bevy_components.settings import ComponentsSettings
|
||
|
from .add_ons.bevy_components.utils import BLENVY_OT_item_select
|
||
|
|
||
|
# auto export
|
||
|
from .add_ons.auto_export import gltf_post_export_callback
|
||
|
from .add_ons.auto_export.common.tracker import AutoExportTracker
|
||
|
from .add_ons.auto_export.settings import AutoExportSettings
|
||
|
|
||
|
# asset management
|
||
|
from .assets.ui import BLENVY_PT_assets_panel
|
||
|
from .assets.assets_registry import Asset, AssetsRegistry
|
||
|
from .assets.operators import BLENVY_OT_assets_browse, BLENVY_OT_assets_add, BLENVY_OT_assets_remove, BLENVY_OT_assets_generate_files
|
||
|
|
||
|
# levels management
|
||
|
from .levels.ui import BLENVY_PT_levels_panel
|
||
|
from .levels.operators import BLENVY_OT_level_select
|
||
|
|
||
|
# blueprints management
|
||
|
from .blueprints.ui import BLENVY_PT_blueprints_panel
|
||
|
from .blueprints.blueprints_registry import BlueprintsRegistry
|
||
|
from .blueprints.operators import BLENVY_OT_blueprint_select
|
||
|
|
||
|
# blenvy core
|
||
|
from .core.blenvy_manager import BlenvyManager
|
||
|
from .core.operators import BLENVY_OT_tooling_switch, BLENVY_OT_configuration_switch, BLENVY_OT_configuration_reset
|
||
|
from .core.ui.ui import (BLENVY_PT_SidePanel)
|
||
|
from .core.ui.scenes_list import BLENVY_OT_scenes_list_actions
|
||
|
from .core.ui.menus_and_shortcuts import BLENVY_OT_ui_blueprint_create, BLENVY_OT_ui_blueprint_edit_start, BLENVY_OT_ui_blueprint_edit_end, BLENVY_OT_ui_blueprint_create_or_edit, edit_or_create_blueprint_menu
|
||
|
from .assets.assets_folder_browser import BLENVY_OT_assets_paths_browse
|
||
|
|
||
|
|
||
|
# this needs to be here, as it is how Blender's gltf exporter callbacks are defined, at the add-on root level
|
||
|
def glTF2_post_export_callback(data):
|
||
|
gltf_post_export_callback(data)
|
||
|
|
||
|
|
||
|
classes = [
|
||
|
# common/core
|
||
|
BLENVY_OT_scenes_list_actions,
|
||
|
BLENVY_OT_assets_paths_browse,
|
||
|
|
||
|
# blenvy
|
||
|
BLENVY_PT_SidePanel,
|
||
|
|
||
|
# bevy components
|
||
|
ComponentsSettings,
|
||
|
BLENVY_OT_component_add,
|
||
|
BLENVY_OT_component_copy,
|
||
|
BLENVY_OT_component_paste,
|
||
|
BLENVY_OT_component_remove,
|
||
|
BLENVY_OT_component_remove_from_all_items,
|
||
|
BLENVY_OT_component_fix,
|
||
|
BLENVY_OT_component_rename_component,
|
||
|
RenameHelper,
|
||
|
BLENVY_OT_component_from_custom_property,
|
||
|
BLENVY_OT_component_toggle_visibility,
|
||
|
|
||
|
ComponentMetadata,
|
||
|
ComponentsMeta,
|
||
|
MissingBevyType,
|
||
|
ComponentsRegistry,
|
||
|
|
||
|
BLENVY_OT_components_registry_browse_schema,
|
||
|
BLENVY_OT_components_registry_reload,
|
||
|
BLENVY_OT_components_refresh_custom_properties_all,
|
||
|
BLENVY_OT_components_refresh_custom_properties_current,
|
||
|
BLENVY_OT_components_refresh_propgroups_all,
|
||
|
BLENVY_OT_components_refresh_propgroups_current,
|
||
|
|
||
|
BLENVY_OT_item_select,
|
||
|
|
||
|
BLENVY_PT_components_panel,
|
||
|
BLENVY_PT_component_tools_panel,
|
||
|
BLENVY_UL_components_missing_types,
|
||
|
BLENVY_PT_components_missing_types_panel,
|
||
|
|
||
|
BLENVY_OT_component_list_actions,
|
||
|
BLENVY_OT_component_map_actions,
|
||
|
|
||
|
# gltf auto export
|
||
|
AutoExportTracker,
|
||
|
AutoExportSettings,
|
||
|
|
||
|
# blenvy
|
||
|
BlenvyManager,
|
||
|
BLENVY_OT_tooling_switch,
|
||
|
BLENVY_OT_configuration_switch,
|
||
|
BLENVY_OT_configuration_reset,
|
||
|
|
||
|
Asset,
|
||
|
AssetsRegistry,
|
||
|
BLENVY_OT_assets_add,
|
||
|
BLENVY_OT_assets_remove,
|
||
|
BLENVY_OT_assets_generate_files,
|
||
|
BLENVY_OT_assets_browse,
|
||
|
BLENVY_PT_assets_panel,
|
||
|
|
||
|
BLENVY_PT_levels_panel,
|
||
|
BLENVY_OT_level_select,
|
||
|
|
||
|
BlueprintsRegistry,
|
||
|
BLENVY_OT_blueprint_select,
|
||
|
BLENVY_PT_blueprints_panel,
|
||
|
|
||
|
BLENVY_OT_ui_blueprint_create,
|
||
|
BLENVY_OT_ui_blueprint_edit_start,
|
||
|
BLENVY_OT_ui_blueprint_edit_end,
|
||
|
BLENVY_OT_ui_blueprint_create_or_edit
|
||
|
]
|
||
|
|
||
|
|
||
|
@persistent
|
||
|
def post_update(scene, depsgraph):
|
||
|
bpy.context.window_manager.auto_export_tracker.deps_post_update_handler( scene, depsgraph)
|
||
|
|
||
|
@persistent
|
||
|
def post_save(scene, depsgraph):
|
||
|
bpy.context.window_manager.auto_export_tracker.save_handler( scene, depsgraph)
|
||
|
|
||
|
@persistent
|
||
|
def post_load(file_name):
|
||
|
blenvy = bpy.context.window_manager.blenvy
|
||
|
if blenvy is not None:
|
||
|
blenvy.load_settings()
|
||
|
|
||
|
def init_keymaps():
|
||
|
window_manager = bpy.context.window_manager
|
||
|
if window_manager.keyconfigs.addon:
|
||
|
km = window_manager.keyconfigs.addon.keymaps.new(name='3D View', space_type='VIEW_3D')
|
||
|
kmi = [
|
||
|
km.keymap_items.new(BLENVY_OT_ui_blueprint_create_or_edit.bl_idname, "F", "PRESS", shift=True),
|
||
|
]
|
||
|
return km, kmi
|
||
|
|
||
|
addon_keymaps = []
|
||
|
|
||
|
def register():
|
||
|
for cls in classes:
|
||
|
bpy.utils.register_class(cls)
|
||
|
bpy.app.handlers.load_post.append(post_load)
|
||
|
# for some reason, adding these directly to the tracker class in register() do not work reliably
|
||
|
bpy.app.handlers.depsgraph_update_post.append(post_update)
|
||
|
bpy.app.handlers.save_post.append(post_save)
|
||
|
|
||
|
bpy.types.VIEW3D_MT_object.append(edit_or_create_blueprint_menu)
|
||
|
bpy.types.VIEW3D_MT_object_context_menu.append(edit_or_create_blueprint_menu)
|
||
|
|
||
|
if not bpy.app.background:
|
||
|
km, kmi = init_keymaps()
|
||
|
for k in kmi:
|
||
|
k.active = True
|
||
|
addon_keymaps.append((km, k))
|
||
|
|
||
|
|
||
|
def unregister():
|
||
|
for cls in classes:
|
||
|
bpy.utils.unregister_class(cls)
|
||
|
bpy.app.handlers.load_post.remove(post_load)
|
||
|
bpy.app.handlers.depsgraph_update_post.remove(post_update)
|
||
|
bpy.app.handlers.save_post.remove(post_save)
|
||
|
|
||
|
|
||
|
for km, kmi in addon_keymaps:
|
||
|
km.keymap_items.remove(kmi)
|
||
|
addon_keymaps.clear()
|
||
|
|
||
|
|
||
|
bpy.types.VIEW3D_MT_object.remove(edit_or_create_blueprint_menu)
|
||
|
bpy.types.VIEW3D_MT_object_context_menu.remove(edit_or_create_blueprint_menu)
|