mirror of
https://github.com/kaosat-dev/Blender_bevy_components_workflow.git
synced 2024-11-22 11:50:53 +00:00
feat(auto_export): further experiments, looking good !
This commit is contained in:
parent
17248247a3
commit
bde945a093
@ -214,11 +214,14 @@ def analysis_experiment(main_scenes, library_scenes):
|
|||||||
|
|
||||||
collection_category = internal_collection_instances if collection_from_library else external_collection_instances
|
collection_category = internal_collection_instances if collection_from_library else external_collection_instances
|
||||||
if not collection_name in collection_category.keys():
|
if not collection_name in collection_category.keys():
|
||||||
|
print("ADDING INSTANCE OF", collection_name, "object", object.name, "categ", collection_category)
|
||||||
collection_category[collection_name] = [] #.append(collection_name)
|
collection_category[collection_name] = [] #.append(collection_name)
|
||||||
collection_category[collection_name].append(object)
|
collection_category[collection_name].append(object)
|
||||||
# not yet added
|
if not collection_from_library:
|
||||||
#if not collection_name in blueprints:
|
for property_name in object.keys():
|
||||||
|
print("stuff", property_name)
|
||||||
|
for property_name in collection.keys():
|
||||||
|
print("OTHER", property_name)
|
||||||
|
|
||||||
# blueprints[collection_name].instances.append(object)
|
# blueprints[collection_name].instances.append(object)
|
||||||
|
|
||||||
@ -253,7 +256,7 @@ def analysis_experiment(main_scenes, library_scenes):
|
|||||||
blueprint = Blueprint(collection.name)
|
blueprint = Blueprint(collection.name)
|
||||||
blueprint.local = True
|
blueprint.local = True
|
||||||
blueprint.objects = [object.name for object in collection.all_objects if not object.instance_type == 'COLLECTION'] # inneficient, double loop
|
blueprint.objects = [object.name for object in collection.all_objects if not object.instance_type == 'COLLECTION'] # inneficient, double loop
|
||||||
blueprint.nested_blueprints = [object.name for object in collection.all_objects if object.instance_type == 'COLLECTION'] # FIXME: not precise enough, aka "what is a blueprint"
|
blueprint.nested_blueprints = [object.instance_collection.name for object in collection.all_objects if object.instance_type == 'COLLECTION'] # FIXME: not precise enough, aka "what is a blueprint"
|
||||||
blueprint.collection = collection
|
blueprint.collection = collection
|
||||||
blueprint.instances = internal_collection_instances[collection.name] if collection.name in internal_collection_instances else []
|
blueprint.instances = internal_collection_instances[collection.name] if collection.name in internal_collection_instances else []
|
||||||
|
|
||||||
@ -272,9 +275,9 @@ def analysis_experiment(main_scenes, library_scenes):
|
|||||||
blueprint = Blueprint(collection.name)
|
blueprint = Blueprint(collection.name)
|
||||||
blueprint.local = False
|
blueprint.local = False
|
||||||
blueprint.objects = [object.name for object in collection.all_objects if not object.instance_type == 'COLLECTION'] # inneficient, double loop
|
blueprint.objects = [object.name for object in collection.all_objects if not object.instance_type == 'COLLECTION'] # inneficient, double loop
|
||||||
blueprint.nested_blueprints = [object.name for object in collection.all_objects if object.instance_type == 'COLLECTION'] # FIXME: not precise enough, aka "what is a blueprint"
|
blueprint.nested_blueprints = [object.instance_collection.name for object in collection.all_objects if object.instance_type == 'COLLECTION'] # FIXME: not precise enough, aka "what is a blueprint"
|
||||||
blueprint.collection = collection
|
blueprint.collection = collection
|
||||||
blueprint.instances = internal_collection_instances[collection.name] if collection.name in internal_collection_instances else []
|
blueprint.instances = external_collection_instances[collection.name] if collection.name in external_collection_instances else []
|
||||||
|
|
||||||
blueprints[collection.name] = blueprint
|
blueprints[collection.name] = blueprint
|
||||||
|
|
||||||
@ -283,7 +286,23 @@ def analysis_experiment(main_scenes, library_scenes):
|
|||||||
blueprints_from_objects[object.name] = collection.name
|
blueprints_from_objects[object.name] = collection.name
|
||||||
|
|
||||||
|
|
||||||
# then add any nested collections
|
# then add any nested collections at root level
|
||||||
|
for blueprint_name in list(blueprints.keys()):
|
||||||
|
parent_blueprint = blueprints[blueprint_name]
|
||||||
|
for nested_blueprint_name in parent_blueprint.nested_blueprints:
|
||||||
|
if not nested_blueprint_name in blueprints.keys():
|
||||||
|
collection = bpy.data.collections[nested_blueprint_name]
|
||||||
|
blueprint = Blueprint(collection.name)
|
||||||
|
blueprint.local = parent_blueprint.local
|
||||||
|
blueprint.objects = [object.name for object in collection.all_objects if not object.instance_type == 'COLLECTION'] # inneficient, double loop
|
||||||
|
blueprint.nested_blueprints = [object.instance_collection.name for object in collection.all_objects if object.instance_type == 'COLLECTION'] # FIXME: not precise enough, aka "what is a blueprint"
|
||||||
|
blueprint.collection = collection
|
||||||
|
blueprint.instances = external_collection_instances[collection.name] if collection.name in external_collection_instances else []
|
||||||
|
|
||||||
|
blueprints[collection.name] = blueprint
|
||||||
|
|
||||||
|
|
||||||
|
blueprints = dict(sorted(blueprints.items()))
|
||||||
|
|
||||||
print("BLUEPRINTS")
|
print("BLUEPRINTS")
|
||||||
for blueprint_name in blueprints:
|
for blueprint_name in blueprints:
|
||||||
@ -298,11 +317,15 @@ def analysis_experiment(main_scenes, library_scenes):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
changes_test = {'Library': {'Blueprint1_mesh': bpy.data.objects['Blueprint1_mesh']}}
|
changes_test = {'Library': {
|
||||||
|
'Blueprint1_mesh': bpy.data.objects['Blueprint1_mesh'],
|
||||||
|
'Fox_mesh': bpy.data.objects['Fox_mesh'],
|
||||||
|
'External_blueprint2_Cylinder': bpy.data.objects['External_blueprint2_Cylinder']}
|
||||||
|
}
|
||||||
# which main scene has been impacted by this
|
# which main scene has been impacted by this
|
||||||
# does one of the main scenes contain an INSTANCE of an impacted blueprint
|
# does one of the main scenes contain an INSTANCE of an impacted blueprint
|
||||||
for scene in main_scenes:
|
for scene in main_scenes:
|
||||||
changed_objects = list(changes_test["Library"].keys())
|
changed_objects = list(changes_test["Library"].keys()) # just a hack for testing
|
||||||
#bluprint_instances_in_scene = blueprint_instances_per_main_scene[scene.name]
|
#bluprint_instances_in_scene = blueprint_instances_per_main_scene[scene.name]
|
||||||
#print("instances per scene", bluprint_instances_in_scene, "changed_objects", changed_objects)
|
#print("instances per scene", bluprint_instances_in_scene, "changed_objects", changed_objects)
|
||||||
|
|
||||||
@ -311,4 +334,11 @@ def analysis_experiment(main_scenes, library_scenes):
|
|||||||
level_needs_export = len(changed_blueprints_with_instances_in_scene) > 0
|
level_needs_export = len(changed_blueprints_with_instances_in_scene) > 0
|
||||||
if level_needs_export:
|
if level_needs_export:
|
||||||
print("level needs export", scene.name)
|
print("level needs export", scene.name)
|
||||||
|
|
||||||
|
for scene in library_scenes:
|
||||||
|
changed_objects = list(changes_test[scene.name].keys())
|
||||||
|
changed_blueprints = [blueprints_from_objects[changed] for changed in changed_objects if changed in blueprints_from_objects]
|
||||||
|
# we only care about local blueprints/collections
|
||||||
|
changed_local_blueprints = [blueprint_name for blueprint_name in changed_blueprints if blueprint_name in blueprints.keys() and blueprints[blueprint_name].local]
|
||||||
|
print("changed blueprints", changed_local_blueprints)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user