Increasing the tolerance when making intersection comparisons fixed this.
There is also a problem where a pixel aligned quad would get a diagonal line down the face. offset the pixel locations a little to avoid this (crappy I know but will fix most cases).
Modified the behaviour of Clear User Transform so that when there's no action, Clear User Transform now resets the entire pose to the rest pose. However, when there is an action, the pose on selected bones gets cleared to the pose defined in the action, not the rest pose.
Also fixed...
- smear with alpha channels (had to disabled blending modes).
- using uninitialized memory in a few cases.
- negative index in an array bug.
shrinkwrap wasn't using the updated coordinates/normals of vertexs
when the DerivedMesh had been modified by a previous modifier.
before revision 19744, users would only notice a strange behaviour
of shrinkwrap in projection mode (because it was using the wrong normals)
(jpbouza reported this)
after revision 19744 this bug was "bigger".
Anyway it's fixed now :)
Own bug, conversion function to get an orientation from python - PyOrientationTo() ignored user input completely :| (breaking the orientation attribute)
Also made KX_GameObject worldOrientation writable and minor doc fixes.
- print CListValue errors only once.
- bge_api_validate_py.txt now validates modules as well as types.
- added missing functions and consts for epydoc modules. some of these in GameLogic.py still need sorting.
Fixes:
[#18489] Adding (add filter) nested strips
causes Blender VSE to segfault on frame render.
[#18209] 3 VSE crash bugs with .blends
(all left click and move mouse over Metastrip/Blend Mode related)
... and a new segfault I introduced with my last commit.
Also: memcache limiter refcounts are tested now in critical
places, printing an error message,
since doing refcounting right is, well, hard.
This fixes
[#18079] Sequencer color correction does not apply on float image if "make float" is not applied
and closes
[#18582] bug fix#18079
by removing ibuf->rect on image load if ibuf->rect_float is used.
(Don't know, why the OpenEXR loader does that, but I fix this on sequencer
side for now...)
* Enviroment Map implemented (replacing truncated mode 2).
- Now it's possible to pre-bake animated (or static) EnvMaps to use with Cube Map textures.
* Enabling 2DFilter in Dome mode
- no GL_DEPTH_BUFFER supported though.
* Tweaking GameSettings menu (centralizing buttons)
getScreenPosition(obj):
- Gets the position of an object projected on screen space.
getScreenVect(x, y):
- Gets the vector from the camera position in the screen coordinate direction.
getScreenRay(x, y, dist, property):
- Look towards a screen coordinate (x,y) and find first object hit within dist that matches prop.
- The ray is a call to KX_GameObject->rayCastTo from the KX_Camera object.
Patch [#18589] test files can be found there. Patch reviewed by Campbell
CListValue fixes
- Disable changing CValueLists that the BGE uses internally (scene.objects.append(1) would crash when drawing)
- val=clist+list would modify clist in place, now return a new value.
- clist.append([....]), was working like extend.
- clist.append(val) didnt work for most CValue types like KX_GameObjects.
Other changes
- "isValid" was always returning True.
- Set all errors for invalid proxy access to PyExc_SystemError (was using a mix of error types)
- Added PyObjectPlus::InvalidateProxy() to manually invalidate, though if python ever gains access again, it will make a new valid proxy. This is so removing an object from a scene can invalidate the object even if its stored elsewhere in a CValueList for eg.
Armature modifier didn't set amd->prevCos temp variable to NULL
after freeing. Saving this in file will cause error or crash on
reading. Quite weird how it survived so long?
Ray-transparent didn't pass on thread number to shading code, giving
"blothes" in render, when using node materials.
This also rewinds Campbells commit of feb 21, which tackled the error,
but not the cause.
PyObjectPlus::ProcessReplica() is now called when any of its subclasses are replicated.
This is important because PyObjectPlus::ProcessReplica() NULL's the 'm_proxy' python pointer I added recently.
Without this a replicated subclass of PyObjectPlus could have an invalid pointer (crashing the BGE).
This change also means CValue::AddDataToReplica() can be moved into CValue::ProcessReplica() since ProcessReplica is always called.
Some functions used
ProcessReplica(replica);
others
replica->ProcessReplica()
Use the second method everywhere so the PyObjectPlus's ProcessReplica() can be called from its subclasses.
Note that PyObjectPlus's ProcessReplica isnt used yet.