----------
Particle patch from Cédric Paille: bugfixes and child-particles export improvements for .getLoc(), part.getRot() part.getSize(), part.getAge() methods.
Also fix a bug with part.randemission getter (was using PART_BOIDS_2D instead of PART_TRAND), plus typos and duplications in API documentation.
from Luca Bonavita (mindrones)
- adds the method "rebuildProxy()" useful to rebuild all the strips at once: the user can do
- adds a BlendModes dictionary under the Blender.Scene.Sequence module: the user can see the blending option with
- adds the getter/setter "blendMode"
- adds a function seq_can_blend in sequence.c as requested by Peter, useful for these purposes but also to solve a bug
after
- the bug is you can apply blend modes to an audio strip that doesn't make sense: changed the test and now you cannot
assign blend mode other than Replace to audio strips
Omitted DNA cleanup part since its only whitespace and Id prefer to have a useful "svn blame" output.
* 2 returning errors without exception set another return None instead of NULL.
* a missing check for parent relation
* BPY matrix length was incorrect in matrix.c, this change could break some scripts, however when a script expects a list of lists for a matrix, the len() function is incorrect and will give an error. This was the only thing stopping apricot game logic running in trunk.
Also added a function for GameObjects - getAxisVect(vec), multiplies the vector be the objects worldspace rotation matrix. Very useful if you want to know what the forward direction is for an object and dont want to use Blender.Mathutils which is tedious and not available in BlenderPlayer yet.
Martin Sell (thanks!) reported that threading via scripts was not working in the game engine with Blender 2.46 and later. My fault, to make pynodes work properly with threads > 1 I disabled Python's "check interval", preventing threads created via scripts from receiving time to run.
Now only during rendering check interval is disabled (set to max int). Still experimental, I added the calls in BPY_do_all_scripts, since it's called in BIF_do_render, but will probably move the code to its own function after more testing & feedback.
* OB prefix is needed when specifying the object for the Message Actuator, this is very bad since other object fields in the BGE dont need this prefix - a real fix would need do_versions to keep old files running.
* RotationMatrix was all nans if the rotation vector axis was 0,0,0, Changed so in this case just return a matrix that doesn't rotate anything,
spent some angry hours to find these issues, maybe this will save others the hassle ;)
- duplicated script spaces would keep a pointer to the PyObject button list. (causing python errors with negative reference counts when freeing spaces)
- Exiting blender would crash when a UI was open because the ScriptSpaces button PyList was being free'd after python Py_Finalize was called.
* python Blender.GetPaths() - absolute=0 wasnt working
* BLI_cleanup_file and BLI_cleanup_file were treating the // prefix as a duplicate path, now ignores //
* BLI_convertstringcode was removing the trailing slash from a path
(tested these path functions didnt mess up with some of the peach files and with pointcache)
button input didnt
work. narrow down this test to the part of the pydriver module init that uses a blender textblock as a module. This should
should reload the pydriver dict whenever the "EnableScriptlinks" state changes. but for now working numbuttons is priority.
Originally the only way to run scripts automatically was with scriptlinks, which could be disabled for loading untrusted blend files.
Since then PyDrivers and PyConstraints would run even when G.f&G_DOSCRIPTLINKS was disabled.
Gensher, Theeth and Ianwill agree its acceptable to reuse the flag for other areas python runs automatically.
PyNodes still have no way to be disabled, (todo before 2.46a)
a script error with a script that has an interface would not stop the interface from running again immediately, causing an annoying
error message loop.
Bug #13277, reported by Juho (bebraw) Vepsalainen (thanks!) - a typo made pynodes w/o input socket definitions fail with an out of range error when accessing the output sockets in the script.
* scene.object.context and scene.object.selected had broken get_item
funcs so scene.object.context[i] returned the wrong object.
* aligning the view to an object (numpad*key), did not disable the
ortho view grid.
* long standing problem where opening a relative image would fail with
no message. BLI_convertstringcode was returning a path with /../../'s
that need to be cleaned before the path could be read, the path was also
invalid from unix shell so its not a blender path reading problem.
* python api render() would clamp the endframe to a short.
* python api's render() and renderAnim() would not render compositing because the name they gave to RE_NewRender was NOT G.scene->id.name, added comments to
G.scene->id.name
Patch from Jean-Michel Soler (with slight modifs)
Small BPy feature to help script writers deal with armatures and vertex groups (calls the bone heat method to create and assign groups)
fixing [#11362] Blender.Draw.Image() method does not clip properly
also return silently on zero zoomlevel rather then raising an error, only raise an error on negative values.
- "Memoryblock free: attempt to free NULL pointer" messages related to the Material node (Add->Input->Material). Deleting it and quitting Blender would bring 2 or 3 of these warnings. Trivial fix (check if NULL) in blenkernel/intern/node.c, though Nodes devs may be interested. Found while testing to fix the following bug:
== PyNodes ==
- Bug #11715 reported by Alexanter Feterman:
http://projects.blender.org/tracker/?func=detail&atid=125&aid=11715&group_id=9
Adding a Dynamic node and setting it to a pynode script would crash Blender if no Material Node (MatNode) was present.
Thanks Alexander for reporting and Brecht for assigning it to me.