This patch modifies the way the setParent actuator and KX_GameObject::setParent() function
works when parenting to a compound object: the collision shape of the object being parented
is dynamically added to the coumpound shape.
Similarly, unparenting an object from a compound object will cause the child collision shape
to be dynamically removed from the parent shape provided that is was previously added with
setParent.
Note: * This also works if the object is parented to a child of a compound object: the
collision shape is added to the compound shape of the top parent.
* The collision shape is added with the transformation (position, scale and orientation)
it had at the time of the parenting.
* The child shape is rigidly attached to the compound shape, the transformation is not
affected by any further change in position/scale/orientation of the child object.
* While the child shape is added to the compound shape, the child object is removed from
the dynamic world to avoid superposition of shapes (one for the object itself and
one for the compound child shape). This means that collision sensors on the child
object are disabled while the child object is parent to a compound object.
* There is no difference when setParent is used on a non-compound object: the child
object is automatically changed to a static ghost object to avoid bad interaction
with the parent shape; collision sensors on the child object continue to be active
while the object is parented.
* The child shape dynamically added to a compound shape modifies the inertia of the
compound object but not the mass. It participates to collision detection as any other
"static" child shape.
also fixed crashes when incorrect args were used
cross = 13; track= 5; frame = 1 # no effect constants
scene.sequence.new((cross, seq1, seq2), frame, track)
* 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
* pixels with <= the current opacity are not painted onto, speeds up painting especially with low spacing. (only when airbrush is disabled)
* use qsort rather then own crufty sorting function
* grouped projection painting functions together.
#18045] [patch] A patch that exposes the rest of the motion functions of KX_GameObject to Python.
*applyForce => setForce
*applyTorque => setTorque
*applyRotation => setDRot
*applyMovement => setDLoc