mirror of
https://github.com/kaosat-dev/Blender_bevy_components_workflow.git
synced 2024-12-23 16:14:10 +00:00
b957f0573b
* restructured component settings to be used instead of the registry * removed settings from registry * fixed data access for the above * added saving of component parameters * added component settings pointer in blenvy core * added loading of both auto_export & component settings in blenvy core's load_settings
150 lines
8.4 KiB
Python
150 lines
8.4 KiB
Python
import bpy
|
|
from .component_values_shuffler import component_values_shuffler
|
|
from ..bevy_components.components.metadata import get_bevy_component_value_by_long_name, get_bevy_components, upsert_bevy_component
|
|
from .setup_data import setup_data
|
|
|
|
def test_shuffler(setup_data):
|
|
registry = bpy.context.window_manager.components_registry
|
|
registry.schema_path = setup_data["schema_path"]
|
|
bpy.ops.object.reload_registry()
|
|
|
|
type_infos = registry.type_infos
|
|
object = bpy.context.object
|
|
|
|
add_component_operator = bpy.ops.object.add_bevy_component
|
|
|
|
long_name = "bevy_example::test_components::BasicTest"
|
|
add_component_operator(component_type=long_name)
|
|
|
|
property_group_name = registry.get_propertyGroupName_from_longName(long_name)
|
|
target_components_metadata = object.components_meta.components
|
|
component_meta = next(filter(lambda component: component["long_name"] == long_name, target_components_metadata), None)
|
|
propertyGroup = getattr(component_meta, property_group_name, None)
|
|
|
|
definition = type_infos[long_name]
|
|
component_values_shuffler(seed= 10, property_group=propertyGroup, definition=definition, registry=registry)
|
|
|
|
assert getattr(propertyGroup, 'a') == 0.5714026093482971
|
|
assert getattr(propertyGroup, 'b') == 54
|
|
assert getattr(propertyGroup, 'c') == "psagopiu"
|
|
|
|
|
|
# Testing a more complex component
|
|
long_name = "bevy_example::test_components::NestingTestLevel2"
|
|
add_component_operator(component_type=long_name)
|
|
|
|
property_group_name = registry.get_propertyGroupName_from_longName(long_name)
|
|
target_components_metadata = object.components_meta.components
|
|
component_meta = next(filter(lambda component: component["long_name"] == long_name, target_components_metadata), None)
|
|
propertyGroup = getattr(component_meta, property_group_name, None)
|
|
|
|
definition = type_infos[long_name]
|
|
component_values_shuffler(seed= 17, property_group=propertyGroup, definition=definition, registry=registry)
|
|
|
|
#print("propertyGroup", object[long_name])
|
|
# cheating / making things easier for us for complex types: we use the custom property value
|
|
assert get_bevy_component_value_by_long_name(object, long_name) == '(basic: (a: 0.5219839215278625, b: 38, c: "ljfywwrv"), color: (Rgba(red:0.2782765030860901, green:0.9174930453300476, blue:0.24890311062335968, alpha:0.815186083316803)), colors_list: ([Rgba(red:0.2523837685585022, green:0.5016026496887207, blue:0.317435085773468, alpha:0.8463277816772461), Rgba(red:0.945193886756897, green:0.4015909433364868, blue:0.9984470009803772, alpha:0.06219279021024704)]), enable: true, enum_inner: Wood, nested: (vec: (Vec3(x:0.1509154736995697, y:0.7055686116218567, z:0.5588918924331665))), text: "vgkrdwuc", toggle: (false))'
|
|
|
|
|
|
# And another complex component
|
|
long_name = "bevy_example::test_components::EnumComplex"
|
|
add_component_operator(component_type=long_name)
|
|
|
|
|
|
property_group_name = registry.get_propertyGroupName_from_longName(long_name)
|
|
target_components_metadata = object.components_meta.components
|
|
component_meta = next(filter(lambda component: component["long_name"] == long_name, target_components_metadata), None)
|
|
propertyGroup = getattr(component_meta, property_group_name, None)
|
|
|
|
definition = type_infos[long_name]
|
|
component_values_shuffler(seed= 17, property_group=propertyGroup, definition=definition, registry=registry)
|
|
|
|
print("propertyGroup", get_bevy_component_value_by_long_name(object, long_name))
|
|
# cheating / making things easier for us for complex types: we use the custom property value
|
|
assert get_bevy_component_value_by_long_name(object, long_name) == 'StructLike(a: 0.41416797041893005, b: 38, c: "ljfywwrv")'
|
|
|
|
# And another complex component
|
|
long_name = "bevy_animation::AnimationPlayer"
|
|
add_component_operator(component_type=long_name)
|
|
|
|
property_group_name = registry.get_propertyGroupName_from_longName(long_name)
|
|
target_components_metadata = object.components_meta.components
|
|
component_meta = next(filter(lambda component: component["long_name"] == long_name, target_components_metadata), None)
|
|
propertyGroup = getattr(component_meta, property_group_name, None)
|
|
|
|
definition = type_infos[long_name]
|
|
component_values_shuffler(seed= 17, property_group=propertyGroup, definition=definition, registry=registry)
|
|
|
|
print("propertyGroup", get_bevy_component_value_by_long_name(object, long_name))
|
|
# cheating / making things easier for us for complex types: we use the custom property value
|
|
assert get_bevy_component_value_by_long_name(object, long_name) == '(animation: "", paused: true)'
|
|
|
|
|
|
|
|
# And another complex component
|
|
long_name = "bevy_example::test_components::VecOfColors"
|
|
add_component_operator(component_type=long_name)
|
|
|
|
|
|
property_group_name = registry.get_propertyGroupName_from_longName(long_name)
|
|
target_components_metadata = object.components_meta.components
|
|
component_meta = next(filter(lambda component: component["long_name"] == long_name, target_components_metadata), None)
|
|
propertyGroup = getattr(component_meta, property_group_name, None)
|
|
|
|
definition = type_infos[long_name]
|
|
component_values_shuffler(seed= 17, property_group=propertyGroup, definition=definition, registry=registry)
|
|
|
|
print("propertyGroup", get_bevy_component_value_by_long_name(object, long_name))
|
|
# cheating / making things easier for us for complex types: we use the custom property value
|
|
assert get_bevy_component_value_by_long_name(object, long_name) == '([Rgba(red:0.8066907525062561, green:0.9604947566986084, blue:0.2896253764629364, alpha:0.766107439994812), Rgba(red:0.7042198777198792, green:0.6613830327987671, blue:0.11016204953193665, alpha:0.02693677879869938)])'
|
|
|
|
|
|
# And another complex component
|
|
long_name = "bevy_example::test_components::VecOfF32s"
|
|
add_component_operator(component_type=long_name)
|
|
|
|
property_group_name = registry.get_propertyGroupName_from_longName(long_name)
|
|
target_components_metadata = object.components_meta.components
|
|
component_meta = next(filter(lambda component: component["long_name"] == long_name, target_components_metadata), None)
|
|
propertyGroup = getattr(component_meta, property_group_name, None)
|
|
|
|
definition = type_infos[long_name]
|
|
component_values_shuffler(seed= 17, property_group=propertyGroup, definition=definition, registry=registry)
|
|
|
|
print("propertyGroup", get_bevy_component_value_by_long_name(object, long_name))
|
|
# cheating / making things easier for us for complex types: we use the custom property value
|
|
assert get_bevy_component_value_by_long_name(object, long_name) == '([0.8066907525062561, 0.9604947566986084])'
|
|
|
|
# And another complex component
|
|
long_name = "bevy_render::mesh::mesh::skinning::SkinnedMesh"
|
|
add_component_operator(component_type=long_name)
|
|
|
|
property_group_name = registry.get_propertyGroupName_from_longName(long_name)
|
|
target_components_metadata = object.components_meta.components
|
|
component_meta = next(filter(lambda component: component["long_name"] == long_name, target_components_metadata), None)
|
|
propertyGroup = getattr(component_meta, property_group_name, None)
|
|
|
|
definition = type_infos[long_name]
|
|
component_values_shuffler(seed= 17, property_group=propertyGroup, definition=definition, registry=registry)
|
|
|
|
print("propertyGroup", get_bevy_component_value_by_long_name(object, long_name))
|
|
# cheating / making things easier for us for complex types: we use the custom property value
|
|
assert get_bevy_component_value_by_long_name(object, long_name) == '(inverse_bindposes: Weak(Uuid(uuid: "73b3b118-7d01-4778-8bcc-4e79055f5d22")), joints: [0, 0])'
|
|
|
|
|
|
# And another complex component
|
|
long_name = "bevy_render::camera::camera::CameraRenderGraph"
|
|
add_component_operator(component_type=long_name)
|
|
|
|
property_group_name = registry.get_propertyGroupName_from_longName(long_name)
|
|
target_components_metadata = object.components_meta.components
|
|
component_meta = next(filter(lambda component: component["long_name"] == long_name, target_components_metadata), None)
|
|
propertyGroup = getattr(component_meta, property_group_name, None)
|
|
|
|
definition = type_infos[long_name]
|
|
component_values_shuffler(seed= 17, property_group=propertyGroup, definition=definition, registry=registry)
|
|
|
|
print("propertyGroup", get_bevy_component_value_by_long_name(object, long_name))
|
|
# cheating / making things easier for us for complex types: we use the custom property value
|
|
assert get_bevy_component_value_by_long_name(object, long_name) == 'None'
|
|
|