Blender_bevy_components_wor.../tools/bevy_components/TODO.md

6.7 KiB

Basics

  • add panel

  • add a "create blueprint" button

    • when clicked:
      • create collection
      • add an empty inside collection and name it <COLLECTION_NAME>_components
      • add a AutoExport Boolean property to collection
      • add name imput(popup for name input ?)
  • add a list of existing components/custom properties

  • add an "edit blueprint" section

    • only filled when there is ONE selection, and that selection is a collection
    • add a dropdown of possible components
    • add a checkbox for enabling disabling a component (enabled by default)
    • add a button for copying a component
    • add a button for pasting a component

UI:

  • filterable list of components to DISPLAY for selection : ComponentDefinitionsList

  • Filter out invalid objects for components that have no _components suffix ? (that is too limiting I think)

  • -How to deal with pre-existing custom properties that have NO metadata

    • if there is one without metadata: find if there is an available component with the same name & type ?
    • if there is , insert metadata
    • otherwise, mark it in some way visually ?
  • for OBJECT enums: add two ui pieces

    • one for selecting the TYPE to choose (ie normal enum)
    • one for setting the VALUE inside that
  • vecs => (not vec2, vec3 etc) more complex UI to add items in a list

    • generate contained CollectionGroup
    • CollectionProperty => type = the above
  • find ways to "collapse" the different levels of nested data of structs/tupples into a single custom property (ideally on the fly, but we can do without)

  • for single tupple components that represent a single unit type, re_use the base type's UIPropertyGroup instead of creating specific ones (ie TuppleTestF32_ui...) => will not work, would cause overriden "update callback"

  • pre_generate default values/values for each main type

  • fix issues with vec2 etc not having the correct number of items

  • fix bad defaults in ui group

  • fix object enums handling on updates (??)

  • fix issues with lambads in loops

  • object enum should be (params) ie *Collider: * Cuboid(Vec3) * Sphere(radius)

  • deal with enums variants that do not have any data: ex { "title": "Mesh" }

  • remove / change use of ComponentDefinitionsList

    • when filling the list, use the long_name as index ie items.append((str(index), item.name, item.long_name)) => items.append((item.long_name, item.name, item.long_name))
  • when removing a component, reset the value of the attribute in the property group (or not ? could be a feature)

  • deal correctly with fields of types that are NOT in the schema.json (for ex PlayingAnimation in AnimationPlayer)

  • deal correctly with complex types CascadeShadowConfig: has an array/list ClusterConfig: one of the enum variants is an object

  • possibly allow Color to be an enum as it should be ?

  • for sub items , the update functions "Name" should be the one of the root object

  • fix copy & pasting

    • it actually works, but the value of the custom property are not copied back to the UI, need to implement property_group_value_from_custom_property_value
  • we need a notion of "root propertyGroup" =?

  • notify user of missing entries in schema (ie , unregistered data types)

  • clarify propgroup_ui vs named nested fields

  • fix basic enums handling

  • add a list of not found components to the registry, add to them on the fly

  • add configuration panel (open the first time, closed on further user once configured)

  • add limits to ixxx types vs utypes

  • only display the "generate components xx" when relevant ie:

    • go through list of custom properties in current object
      • if one does not have metadata and / or propgroup: break
  • remove custom property of disabled component ? => NOpe, as we need custom properties to iterate over

  • what to do with components with n/a fields ? perhaps disable the component ? add a "invalid" field to meta ?

  • format output as correct RON

    • fix issue with empty strings
  • change custom property => propGroup to convert RON => Json first => obsolete

  • cleanup process_lists

  • fix issues with enum variants with only a title

  • display single item enums inline, others in a seperate row

  • add button to "apply all" (in configuration), to apply/update all custom properties to ALL objects where relevant

  • add button to "apply to current" to do the same with current

  • add warning sign to the above

  • what about metadata ?

  • only upgrade custom properties to metadata when asked/relevant

  • implement move list up/down

  • change property_group_value_from_custom_property_value => just disregard it for now, its point is very limited (helping people with old custom properties by attempting to generate real values) and give the change to a real ron format, it is too limiting

  • fix reload registry clearing list of missing types

  • clean up metadata module, a lot of repeated code

  • some fields when original is 0 or 0.0 are not copyable ? (seems like a bad boolean check )

  • fix issues with object variants in enums (see clusterconfig)

  • perhaps directly export default values within the schema.json ? - for most types , it is straighforward, but others, not so much: like the default color in Bevy , etc

  • change default schema.json to registry.json

  • pasted components do not get updated value in custom_property

  • finish documentation

  • add storage of registry path

    • save after setting the data (browse for)
    • load after each reload ?

Additional

- [x] check if output "string" in custom properties are correct

- gltf_auto_export
    - [ ] add support for "enabled" flag
    - [ ] add special components 
            - "AutoExport" => Needed
            - "Dynamic" ? naah wait that should be exported by the Bevy side
    - [ ] filter out Components_meta ??
    - [x] add legacy mode to the persisted parameters

- bevy_gltf_components:
    - [x] first release patch for current issues
    - [x] make configurable 
    - [x] add "compatibility mode" and deprecation warnings for the current hack-ish conversion of fake ron
    - [x] update docs to show we need to use ComponentsFromGltfPlugin::default

- bevy_gltf_blueprints
    - [x] update dependency
    - [x] update version
    - [x] add ability to set legacy mode for bevy_gltf_components ? 

- [ ] release all versions
- [ ] update main documentation, add compatibility version grid