Added new python module 'bparticles' for implementing a full python API
to define particle states. This is necessary because otherwise the RNA
can only refer to data that already exists in the DNA library (bpy.data)
but not create temporary structs. The state should be defined separately
before replacing a particle system's state with it. This is similar to
how bmesh works.
Basic submodule 'types' in bparticles, defining a PyObject type for
the particle state.
Added python type for particle attribute state in the bparticles module.
A bit shorter internal names for bparticles structs and functions.
Added "name" property (read-only) for attribute states.
Added 'attributes' sequence property in the state type.
Added particles sequence in state bpy api.
Store the particle ID alongside the particle iterator in the python
particle wrapper type, so it can be used to automatically create missing
particles later on.
Custom get/set methods for the "Particle" type. This supports particle
attributes directly as python properties in the particle wrapper type.
If a particle identifier has no corresponding data in the state yet it
will be automatically created when writing.
Fix for particle iterator validity check: also check for negative index,
this is used for indicating an invalid particle iterator.
Add particle sequence as a state attribute in the API.
New API function for replacing the current particle system's state. ATM
this creates a full copy of the given state, so the reference can be
used further. This may need some more thought.
bpy particle objects are still valid if the particle id does not yet
exist. This allows a create-on-write feature, where a particle is
automatically added to the state if the pid does not yet exist.
Added a __dir__ method for particles to return the list of available
attributes.
Fix for particle getattro: Throw an exception if iterator is not valid,
otherwise expect to find a correct void *data (assert is used to as a
sanity check, should never fail).
Include the standard type attributes in the dir function for particles.