This was mostly only a problem when using Cycles, where NodeTrees are used to
control the world settings.
Also needed to knock out a few remnants of some bygone attempted optimisation
attempts which were preventing this from working (i.e. if a world block didn't
have any animdata, it's child nodetree would never get seen/tested). These
worked ok in the past, but are not that flexible for extension.
Looks like some codecs depends on valid PTS set for frame to encode
frame in right way. PTS is calculating based on current frame number
appending to stream which is stored in render data.
So use rd.cfra in screenshot_startjob() instead of keeping own variable
for reporting current frame number.
Now codecs should be happy and work nice.
- remove redundant check in new prop operator which is covered by operators poll func.
- use get_ob_property to get the object prop in BL_ConvertTextProperty() rather then looping for it.
don't show the text objects body in the ui - this could be pages of text and even though it only draws part of this, it still allocates and frees the string on every draw.
[I don't think anyone has ever reported those, what makes me slightly sad but carry on ;)]
Those fixes introduce a more generic function to load a font before calling BLF_load.
I think it should move to be part of Blender util routines or BLF itself.
For the time being here will make it. Once we get <builtin> font working we go for this.
Thanks Diego Borghetti for the usual assistance with blf.
Interface:
http://www.pasteall.org/pic/show.php?id=23785
Simple test file:
http://www.pasteall.org/blend/10616
(I'll commit this to the text suite later)
Code Explanation:
---------------
(1) it adds a toggle to add/remove a "Text" gameproperty.
- internally this property is just another game property (so we can find it within the game.properties lookup).
- the property itself has no 'value', the interface shows the content of ob.data.body instead (why? because gameproperties are per object, while the text is per data).
(2) at BGE converter time it sets the current value of the object.data.body to the ["Text"] property.
(3) if you change object.text (bge text property) it automatically convert ["Text"] to a CStringValue.
*** that means if the original property was a CIntegerValue, it will be converted to CStringValue forever ***
* the only to do I can think of is to add a warning at doversion time if user has ["Text"] property for a Font object *
* when that happens we print a warning in console/popup.*
If this object is defined, object with Follow Track constraint would be
projected into surface of this depth object.
If object is not set or there's no projection onto it, projection plane
calculated based on original object position would be used.
This allows to make cheap facial mocap.
Sequencer render context should be as large as the whole frame when rendering
using border without clipping.
Can be implemented in more clear way but it'll require more global refactoring.
- This operators always used to work with tracks for camera
- Properly set camera and object fields to Follow Track constraint
- TrackingObject.tracks is now pointing to actual list of tracks for
camera objects.
[#25834] no color of textobjects in game engine when combined with
textured objects
[#26893] Curruption of displayed text (debug properties/fps info or bgui)
when using animated/tile uv mode
The first bug was beacuse a bad mode on the texture environment, now
we save the current glTexEnvi, set the one that we need, draw and
restore the original at the end.
The second was because a missing call to glLoadIdentity for the
texture matrix and as we do before, now we do a gl-Push/Identity/Pop
for this matrix to.
The first problem was solved by Kanttori and the second by Dalai.