The advantage with this is that global property definitions are not needed to add a property to an object.
to avoid confusion these are accessed like a dictionary (closely matching how the BGE accesses properties)
ob["mySetting"] = 1.0
bone["foo"] = {"one":1, "two":2.1, "three":"Three"}
if "foo" in bone: print("prop found...")
At the moment these can also be accessed as attributes, will be changed shortly. eg.
bone.foo == bone["foo"]
* Removing duplicate api functions
* Shuffled around newly added api functions to make the ordering more consistent
* Fixes for a few bugs in the api functions as I checked over them
* Replaced most of the #defines for flags and modes with enums
- renamed .add() to .new() for rna collection functions since they dont add an existing item.
- remove 'name' as an argument from the new driver target function, better to keep the api minimal and let scripters use the data api for editing values after.
- added some api functions to keep rna api from becoming a mess.
This bug was introduced after commit # 24102 (BGE: when letterbox is enabled use the camera framing as a clipping area) reported in IRC by Pete Carss (domejunky)
*) an extra stub fix for recent commit. By the way: we want to have blenderplayer running in blender 2.5 beta0. Therefore if you are doing big changes in the last minutes (Friday, Saturday??) It would help a lot if you could enable blenderplayer in your builds. links problems are really easy to fix)
**) an typo I spotted in recent mesh dynamic load in bge.
1) SetDisplayArea was created in Blender but we forgot to set it in the player
2) Fix some SCons incs (using lists instead of strings)
3) added more nasty stubs calls (this file is getting big)
* typo fix from last commit
**) it's raining with bolts here and I have to turn the internet off. I couldnt hard test this commit but it looks like working. sorry if sometihng go wrong
Fixing/Missing RNA properties:
- "virtual" property for "ANY" modifier for keymapitem
- modal property for keymap
- Look up modal_items in usermaps too
Lazy init usermaps needs to init modal_items too.
New function to initialize a user keymap (fill in modal_item and poll pointers).
Operator modal keymaps now look up if there's a user defined keymap that overwrites it.
Full Event UI buttons now show "Any" when modifier is set to that (instead of listing all of them).
Note: Having the modifiers as boolean still doesn't express the full breath of values possible for them. There is commented code in this commit to represent them as enum, which would solve this, but make the keymap editor more cryptic.
I'm not 100% happy with the dome mode description ("physical" doesn't really match the difference between all modes). But for the time being let's leave like this.
from Mitchell Stokes (moguri)
--- from the patch
With f-curves there are 3 rotation modes, rotation_euler, rotation_axis_angle, and rotation_quaternion. The IPO converter
was still simply looking for "rotation" f-curves instead of specific ones. This patch fixes that and also
fixes bug #19873 ( http://projects.blender.org/tracker/index.php?func=detail&aid=19873&group_id=9&atid=306
).
Added some more methods for the Red-Black Tree implementation in Blender (used for runtime viewing and searching of keyframes) which abstract away some of the lower-level handling of the BST (i.e. adding nodes without balancing and searching for nodes).
Also, improved the implementation of the jump next/prev keyframe operator so that it pops up an error message when the last keyframe in whatever direction is encountered.
- more api like functions for adding movie, sound & images (easier to use from pyrna api)
- operators share more settings
- renamed get_last_seq() to active_seq_get() - same for set.
Action Constraints were failing when the rotation mode was non-default. Fixed this by copying over the current rotation mode when creating temp elements to evaluate with.
eg.
scene.objects.link()
object.constraints.new()
mesh.verts.transform(...)
mesh.faces.active
PropertyRNA stores an StructRNA pointer where these can be defined.
- bpy is now a python package, this makes it easier to add utility modules and adjust python startup which was previously using verbose Py/C api. Access should not be any slower since both C and Python modules use dictionary access.
- loop over scripts and load via python (currently F8 reload isnt working, will add back shortly)
- the C module is kept but renamed to _bpy and not meant for direct access from anything but the bpy package.
- bpy_types.py is an exception since it runs before the bpy package is initialized.
* Updating dependencies for drivers now clears the disabled status of the relevant Driver FCurve too
* Changing the type of ID-block used for Driver Targets and Keying Set Paths will now clear the pointer to the ID-block if it is of the wrong type.
It's still very irritating that the active bone pointer doesn't get cleared when this happens, but at least it's more consistent with how Objects work...
With help from Patch [#19757] by Michael Jefferies.
-------------
Also, following talks with Matt and Campbell, make pressing Ctrl in transform toggle snap/gears instead of having to hold it down.
Important note: holding it down will no longer work correctly because of key repeats (it will toggle it constantly). It's possible to edit the modal keymap to bring back the old behavior (perhaps it should even be default).
For some reason, adding a keymap entry with KM_SHIFT didn't work, had to use KM_ANY and passthrough invalid modifiers.
Left a note to investigate later.
* no more holes in imported meshes (I hope so) - test/fix face indices with test_index_face on mesh import. Thanks Brecht for pointing this out!
* cleanup triangulation code. Polygon triangulation (using filldisplist) can result in flipped faces (for example http://www.pasteall.org/pic/117 (textured shading) and http://www.pasteall.org/pic/118 (solid shading)). Don't know how to fix this (flipping the order of produced triangles results in other faces being flipped)...