* Value clamping to min/max is now supported as an option for integer, float
and string attribute (for string clamping=trim to max length)
* Post check function now take PyAttributeDef parameter so that more
generic function can be written.
* Definition of SCA_ILogicBrick::CheckProperty() function to check that
a string attribute contains a valid property name of the parent game object.
* Definition of enum attribute vi KX_PYATTRIBUTE_ENUM... macros.
Enum are handled just like integer but to be totally paranoid, the sizeof()
of the enum member is check at run time to match integer size.
* More bricks updated to use the framework.
The principle is to replace most get/set methods of logic bricks by direct property access.
To make porting of game code easier, the properties have usually the same type and use than
the return values/parameters of the get/set methods.
More details on http://wiki.blender.org/index.php/GameEngineDev/Python_API_Clean_Up
Old methods are still available but will produce deprecation warnings on the console:
"<method> is deprecated, use the <property> property instead"
You can avoid these messages by turning on the "Ignore deprecation warnings" option in Game menu.
PyDoc is updated to include the new properties and display a deprecation warning
for the get/set methods that are being deprecated.
On a 64bit system I assume this would set 8 chars of a 4 char array.
Turns out this isnt such a problem since BLO_setversionnumber isn't used anymore but way as well commit.
- Instead of defining such defines for the entire codebase in Blender.py, add
the right checks and definitions to the places where it matters.
- Only check+set WITH_BULLET instead of also GAMEBLENDER=1
- NOTE: No global defines allowed in BlenderLib.
with OpenEXR in the CMake system. This is a compilation fix from
Miguel A. Figueroa Villanueva for building Debug versions of Blender
using OpenEXR (thanks!).
* BarycentricWeightsPersp2f was calling BarycentricWeights2f, and re-weighting. Changed so the re-weighting isnt needed.
* replaced tri_depth_2d with VecZDepthOrtho and VecZDepthPersp
* project_paint_occlude_ptv_clip now calls project_paint_occlude_ptv to remove duplicate code.
Additions/Features...
- Painting onto multiple images at once.
- Clone with an offset similar to the gimp, also an option to clone between UV layers, (not both offset and between layers atm)
- Stencil layer, similar to The Gimp's quickmask.
- Face mask mode - (painting onto only selected faces).
- Texture brushes (so image and texture-node brushes too)
- Seam bleed so you don't see gaps when painting over UV seams (new option set in the panit panel)
- Occlusion (only point onto the first face under the paintbrush, can also be used for masking out parts of the model to paint onto) - (new option set in the paint panel)
- Muti-threaded, each thread operates on its own bucket.
- Support partial updates to speedup OpenGL texture refreshing.
- Support tile based multiple undo's
- Support float image buffers.
- Backface culling (new option set in the paint panel)
- All color blending modes - Add/Multiply.. etc.
- Airbrush rate. (used to be broken)
- Improve the way paint is mixed when painting, so painting with 0.2 alpha will not accumulate above 0.2 alpha on the image as you paint.
- Option to use normals to fade out strokes on the edge of a surface to avoid ugly edges. (same as Vertex Paints "Normal" option)
Known Problems
- Not directly related to painting but changes in selection flags are not updated on the final derived mesh.
- Smear tool has some distortion when in perspective mode.
- While in perspective view any faces with 1 vert behind the viewpoint, will be completely ignored.
- Painting can be initially slow while buckets are being initialized, a number of solutions exist.
- Size 1 brushes don't work yet.
- When painting onto large faces its still possible to get artifacts.
- Spatial optimizations are needed to skip occluded faces and test pixel occlusion. (will look into using blenders BVH )
* Renamed view_autodist to view_mouse_depth
* Accept args for mouse location and pixel distance around the hotspot used to lookup the depth.
* removed persp(PERSP_VIEW) within this function, since it didnt set the view back.
imagepaint.c
* normal falloff now works as Brecht suggests. Normal limit of 80 will blend between 80 and 85deg, 70deg limit blends between 70-80deg.
* convert normal falloff to radians on initializing rather then on every comparison.
* Ctrl+Click setting the cursor in its own function.
* projection painting wasnt accounting for an exception for too high pressure values on first touch in windows for some tablets.
* removed grease pencil benchmark function
* Improved compatibility with VRML files
* Extract strings so they dont get modified for parsing, filename URL's with {} [] dont break importing anymore.
* Cameras were rotated incorrectly
* inline files were not opened with GZip
* Animation Support - currently only loc/scale/rot (scale untested)
* Lists of image URLs now use the first image from the list since there is no support for dynamic switching.
* use imagemagick to convert GIF's so they load in linux. (WIP - could be extended, At least it should not break anything)
BPyMathutils angle2ToLength function could be simplified (pointed out by brecht)