mirror of
https://github.com/kaosat-dev/Blender_bevy_components_workflow.git
synced 2024-11-22 11:50:53 +00:00
feat(blenvy):
* overhauled selection * made adding/removing assets specific to collections/scenes (blueprints/levels) * ui tweaks & improvements * etc
This commit is contained in:
parent
e42719daf7
commit
53d432fc77
@ -1,4 +1,5 @@
|
||||
import os
|
||||
import json
|
||||
import bpy
|
||||
from bpy_types import (Operator)
|
||||
from bpy.props import (StringProperty, EnumProperty)
|
||||
@ -29,7 +30,26 @@ class OT_add_bevy_asset(Operator):
|
||||
) # type: ignore
|
||||
|
||||
def execute(self, context):
|
||||
context.window_manager.assets_registry.add_asset(self.asset_name, self.asset_type, self.asset_path, False)
|
||||
assets_list = []
|
||||
blueprint_assets = False
|
||||
if context.collection is not None and context.collection.name == 'Scene Collection':
|
||||
assets_list = json.loads(context.scene.get('assets'))
|
||||
blueprint_assets = False
|
||||
else:
|
||||
if 'assets' in context.collection:
|
||||
assets_list = json.loads(context.collection.get('assets'))
|
||||
blueprint_assets = True
|
||||
|
||||
in_list = [asset for asset in assets_list if (asset["path"] == self.asset_path)]
|
||||
in_list = len(in_list) > 0
|
||||
if not in_list:
|
||||
assets_list.append({"name": self.asset_name, "type": self.asset_type, "path": self.asset_path, "internal": False})
|
||||
|
||||
if blueprint_assets:
|
||||
context.collection["assets"] = json.dumps(assets_list)
|
||||
else:
|
||||
context.scene["assets"] = json.dumps(assets_list)
|
||||
#context.window_manager.assets_registry.add_asset(self.asset_name, self.asset_type, self.asset_path, False)
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
@ -46,5 +66,20 @@ class OT_remove_bevy_asset(Operator):
|
||||
) # type: ignore
|
||||
|
||||
def execute(self, context):
|
||||
context.window_manager.assets_registry.remove_asset(self.asset_path)
|
||||
assets_list = []
|
||||
blueprint_assets = False
|
||||
if context.collection is not None and context.collection.name == 'Scene Collection':
|
||||
assets_list = json.loads(context.scene.get('assets'))
|
||||
blueprint_assets = False
|
||||
else:
|
||||
if 'assets' in context.collection:
|
||||
assets_list = json.loads(context.collection.get('assets'))
|
||||
blueprint_assets = True
|
||||
|
||||
assets_list = [asset for asset in assets_list if (asset["path"] != self.asset_path)]
|
||||
if blueprint_assets:
|
||||
context.collection["assets"] = json.dumps(assets_list)
|
||||
else:
|
||||
context.scene["assets"] = json.dumps(assets_list)
|
||||
#context.window_manager.assets_registry.remove_asset(self.asset_path)
|
||||
return {'FINISHED'}
|
@ -1,4 +1,5 @@
|
||||
import bpy
|
||||
import json
|
||||
|
||||
class GLTF_PT_auto_export_assets(bpy.types.Panel):
|
||||
bl_space_type = 'VIEW_3D'
|
||||
@ -34,8 +35,15 @@ class GLTF_PT_auto_export_assets(bpy.types.Panel):
|
||||
row.label(text="Type")
|
||||
row.label(text="Path")
|
||||
row.label(text="Remove")
|
||||
|
||||
for asset in asset_registry.assets_list:
|
||||
#print("FOO", json.dumps([{"name":"foo", "type":"MODEL", "path":"bla", "internal":True}]))
|
||||
# [{"name": "trigger_sound", "type": "AUDIO", "path": "assets/audio/trigger.mp3", "internal": true}]
|
||||
assets_list = []
|
||||
if context.collection is not None and context.collection.name == 'Scene Collection':
|
||||
assets_list = json.loads(context.scene.get('assets')) #asset_registry.assets_list
|
||||
else:
|
||||
if 'assets' in context.collection:
|
||||
assets_list = json.loads(context.collection.get('assets'))
|
||||
for asset in assets_list:
|
||||
row = layout.row()
|
||||
row.label(text=asset["name"])
|
||||
row.label(text=asset["type"])
|
||||
@ -45,3 +53,5 @@ class GLTF_PT_auto_export_assets(bpy.types.Panel):
|
||||
remove_asset.asset_path = asset["path"]
|
||||
else:
|
||||
row.label(text="")
|
||||
|
||||
#
|
@ -25,19 +25,22 @@ class BLENVY_PT_SidePanel(bpy.types.Panel):
|
||||
active_mode = blenvy.mode
|
||||
world_scene_active = False
|
||||
library_scene_active = False
|
||||
active_collection = context.collection
|
||||
|
||||
current_auto_settings = bpy.data.texts[".gltf_auto_export_settings"] if ".gltf_auto_export_settings" in bpy.data.texts else None
|
||||
current_gltf_settings = bpy.data.texts[".gltf_auto_export_gltf_settings"] if ".gltf_auto_export_gltf_settings" in bpy.data.texts else None
|
||||
|
||||
if current_auto_settings is not None:
|
||||
current_auto_settings = json.loads(current_auto_settings.as_string())
|
||||
print("current_auto_settings", current_auto_settings)
|
||||
#print("current_auto_settings", current_auto_settings)
|
||||
main_scene_names = current_auto_settings["main_scene_names"]
|
||||
library_scene_names = current_auto_settings["library_scene_names"]
|
||||
|
||||
world_scene_active = context.scene.name in main_scene_names
|
||||
library_scene_active = context.scene.name in library_scene_names
|
||||
|
||||
layout.label(text="Active Blueprint: "+ active_collection.name.upper())
|
||||
|
||||
|
||||
# Now to actual drawing of the UI
|
||||
target = row.box() if active_mode == 'COMPONENTS' else row
|
||||
|
@ -360,6 +360,7 @@ def inject_blueprints_list_into_main_scene(scene, blueprints_data, addon_prefs):
|
||||
|
||||
assets_list_name = f"assets_{scene.name}"
|
||||
assets_list_data = {"blueprints": json.dumps(blueprint_assets_list), "sounds":[], "images":[]}
|
||||
scene["assets"] = json.dumps(blueprint_assets_list)
|
||||
|
||||
print("blueprint assets", blueprint_assets_list)
|
||||
add_scene_property(scene, assets_list_name, assets_list_data)
|
||||
|
Loading…
Reference in New Issue
Block a user