11 years agocmake: apply ADD_SUBDIR patch.
Benoit Bolsee [Sun, 17 May 2009 12:25:06 +0000 (12:25 +0000)]
cmake: apply ADD_SUBDIR patch.

11 years agoBugfix #18676
Ton Roosendaal [Sun, 17 May 2009 10:30:13 +0000 (10:30 +0000)]
Bugfix #18676

Texture "map to" Ambient did work now (previous fix) but not for
ambient occlusion yet.

11 years agoBugfix #18756
Ton Roosendaal [Sun, 17 May 2009 09:56:48 +0000 (09:56 +0000)]
Bugfix #18756

Texture nodes: on file load, the preview render signal was ignored.
Found out it ignores it all the way, inserting refreshes all over, not
using the 'afterqueue'. Will live with that for now, in 2.5 it's nicer
supported anyway.

Just added another refresh line on the proper signal to make it look nice
on file loads.

11 years agoSame tooltip whether snap button is press or not (it used to have a different one...
Martin Poirier [Sat, 16 May 2009 23:47:17 +0000 (23:47 +0000)]
Same tooltip whether snap button is press or not (it used to have a different one when turned on).

11 years agoBugfix: Changing ShadowBufferSize didn't update 3d view - reported by nudelZ via...
Daniel Genrich [Sat, 16 May 2009 21:16:04 +0000 (21:16 +0000)]
Bugfix: Changing ShadowBufferSize didn't update 3d view - reported by nudelZ via IRC (simple update call was missing)

11 years agosetting up the BGE Python sys.path for importing modules wasnt working for library...
Campbell Barton [Sat, 16 May 2009 13:19:23 +0000 (13:19 +0000)]
setting up the BGE Python sys.path for importing modules wasnt working for library paths.

11 years ago* Fix for another OpenAL compile error on MSVC.
Brecht Van Lommel [Sat, 16 May 2009 12:56:09 +0000 (12:56 +0000)]
* Fix for another OpenAL compile error on MSVC.

11 years agoreplace Py_BuildValue("OOO", Py_None, Py_None, Py_None) with a function that makes...
Campbell Barton [Sat, 16 May 2009 06:57:38 +0000 (06:57 +0000)]
replace Py_BuildValue("OOO", Py_None, Py_None, Py_None) with a function that makes and fills the tuple,
since some scripts call rayCast many times in a single logic tick,
contrived benchmark shows this to be about 20% faster.

11 years agoBGE Py API Bugfixes
Campbell Barton [Sat, 16 May 2009 00:49:28 +0000 (00:49 +0000)]
BGE Py API Bugfixes
KX_GameObject.getVelocity() would set an error but nor return an error value when an non vector argument was given.
KX_PythonSeq_Type was not initialized with PyType_Ready which could crash blender when inspecting the type.

11 years agoScripts
Ken Hughes [Fri, 15 May 2009 21:27:13 +0000 (21:27 +0000)]
Fix some typos in script tooltips and descriptions-- no code changes.

11 years agoBGE: fix a compatibility problem since logic patch with YoFrankie (and other games...
Benoit Bolsee [Fri, 15 May 2009 20:51:32 +0000 (20:51 +0000)]
BGE: fix a compatibility problem since logic patch with YoFrankie (and other games I guess). State actuators will now execute before any other actuators to make sure that the actuators link count are up to date when they execute.

11 years ago* Fix for compile error on MSVC.
Brecht Van Lommel [Fri, 15 May 2009 18:21:27 +0000 (18:21 +0000)]
* Fix for compile error on MSVC.
* Remove alut from makefiles and cmake.

11 years agoBug/patch #18714: fix game engine sound on OS X Intel, patch by
Brecht Van Lommel [Fri, 15 May 2009 12:34:01 +0000 (12:34 +0000)]
Bug/patch #18714: fix game engine sound on OS X Intel, patch by
Ken Hursh and myself.

* Get rid of dependency on ALUT. It is really only used to
  load a WAV file, and apparently crashing doing so on OS X Intel,
  (perhaps due to endian issues?). There was already own code
  for doing this on some system, so now it uses that. That code
  had it's own endian issues which are now fixed, along with
  better checks to avoid crashing on corrupt or unsupported files.

* Also get rid of some unecessarily complicate #ifdefs.

* According to the bug report OS X Intel OpenAL only works with
  static openal linking still (WITH_BF_STATICOPENAL for scons).

11 years agoName attributes added since 2.48a more consistently.
Campbell Barton [Fri, 15 May 2009 03:26:53 +0000 (03:26 +0000)]
Name attributes added since 2.48a more consistently.

BL_ActionActuator::blendin -> blendIn
BL_ActionActuator::end -> frameEnd
BL_ActionActuator::property -> propName
BL_ActionActuator::start -> frameStart
BL_ActionActuator::type -> mode
BL_ShapeActionActuator::blendin -> blendIn
BL_ShapeActionActuator::end -> frameEnd
BL_ShapeActionActuator::frameProperty -> framePropName
BL_ShapeActionActuator::property -> propName
BL_ShapeActionActuator::start -> frameStart
BL_ShapeActionActuator::type -> mode
KX_CameraActuator::xy -> useXY
KX_ConstraintActuator::property -> propName
KX_GameActuator::file -> fileName
KX_GameObject::localScaling -> localScaling
KX_GameObject::worldScaling -> worldScaling
KX_IpoActuator::endFrame -> frameEnd
KX_IpoActuator::startFrame -> frameStart
KX_IpoActuator::type -> mode
KX_RaySensor::property -> propName
KX_SCA_DynamicActuator::operation -> mode
KX_Scene::objects_inactive -> objectsInactive
KX_SoundActuator::filename -> fileName
KX_SoundActuator::type -> mode
KX_TouchSensor::objectHit -> hitObject
KX_TouchSensor::objectHitList -> hitObjectList
KX_TouchSensor::property -> propName
KX_TouchSensor::pulseCollisions -> usePulseCollision
KX_VisibilityActuator::occlusion -> useOcclusion
KX_VisibilityActuator::recursion -> useRecursion
SCA_2DFilterActuator::passNb -> passNumber
SCA_PropertyActuator::property -> propName
SCA_PropertyActuator::type -> mode
SCA_PropertySensor::property -> propName
SCA_PropertySensor::type -> mode
SCA_RandomActuator::property -> propName

11 years agominor change - mistake in joystick fix, util function for getting attrs from BGE...
Campbell Barton [Fri, 15 May 2009 02:03:27 +0000 (02:03 +0000)]
minor change - mistake in joystick fix, util function for getting attrs from BGE types

11 years agoBGE PyAPI
Campbell Barton [Thu, 14 May 2009 23:06:05 +0000 (23:06 +0000)]
[#18701] Issues with camera.pointInsideFrustum method
- note in docs that the projection matrix is not correct for first logic tick.

KX_Camera.isViewport -> KX_Camera.useViewport
KX_Lamp.quat_attenuation -> KX_Lamp.quad_attenuation

Deprecated KX_Camera.getProjectionMatrix(), KX_Camera.setProjectionMatrix() for projection_matrix attr

Added most missing docs reported by the doc-checker script

11 years ago[#18749] BGE: Crash on joysticksensor.getAxisValue()
Campbell Barton [Thu, 14 May 2009 21:06:48 +0000 (21:06 +0000)]
[#18749] BGE: Crash on joysticksensor.getAxisValue()
negative index would be used when the joystick was not found, crashing python api, initialize these as 0 now.

11 years agoFix for bug #18622
Martin Poirier [Thu, 14 May 2009 18:32:27 +0000 (18:32 +0000)]
Fix for bug #18622

Snapping has to be reinit after changing mode during transform.

Needs to be fixed in 2.5 too, but a tad differently.

11 years agoBGE modifier: generate correct physic shape, share static derived mesh, share display...
Benoit Bolsee [Thu, 14 May 2009 13:47:08 +0000 (13:47 +0000)]
BGE modifier: generate correct physic shape, share static derived mesh, share display list.

This commit completes the support for modifiers in the BGE.
- The physic shape is generated according to the derived mesh.
  This is true for all types of shapes and all types of
  objects except soft body.
- Optimization for static derived mesh (mesh with modifiers
  but no armature and no shape keys). Replicas will share
  the derived mesh and the display list: less memory and
  faster rendering. With this optimization, the static
  derived mesh will render as fast as if the modifiers were

Known Limits:
- Sharing of mesh and display list is only possible between
  in-game replicas or dupligroup. If you want to instantiate
  multiple objects with modifiers, use dupligroup to ensure
  best memory and GPU utilization.
- rayCast() will interact with the derived mesh as follow:
  Hit position and hit normal are the real values according
  to the derived mesh but the KX_PolyProxy object refers to
  the original mesh. You should use it only to retrieve the
- Dynamic derived mesh have very poor performance:
  They use direct openGL calls for rendering (no support
  for display list and vertex array) and they dont't share
  the derived mesh memory. Always apply modifiers on dynamic
  mesh for best performance.
- Time dependent modifiers are not supported.
- Modifiers are not supported for Bullet soft body.

11 years agoBugfix, sorta :)
Ton Roosendaal [Thu, 14 May 2009 12:36:07 +0000 (12:36 +0000)]
Bugfix, sorta :)

Removed option to choose rendering to yafray. New yafaray is better, and
already is being linked as option on the download page.

11 years agoBugfix #18743
Ton Roosendaal [Thu, 14 May 2009 11:36:52 +0000 (11:36 +0000)]
Bugfix #18743

Render: raytracing materials with transp-shadow + SSS crashed

11 years agoupdated BGE doc checker script for classes now being in
Campbell Barton [Thu, 14 May 2009 10:59:38 +0000 (10:59 +0000)]
updated BGE doc checker script for classes now being in

11 years agoBugfix #18725
Ton Roosendaal [Thu, 14 May 2009 09:32:47 +0000 (09:32 +0000)]
Bugfix #18725

Particles using group-duplication, with Metaballs in group, enter eternal
loop in our code now. This is a non-supported case... metaball code doesn't
support recursions. Added a provision in code to catch this case, and print
an error in console to denote this.

11 years agoBGE Py API
Campbell Barton [Thu, 14 May 2009 07:59:44 +0000 (07:59 +0000)]
scene.active_camera can now be set so you can more easily set the current camera from python scripts without using an actuator.
ConvertPythonToCamera utility function to get a camera from a python string or KX_Camera type.

11 years ago[#18685] dark pixels created when during texture "full baking"
Campbell Barton [Thu, 14 May 2009 02:21:50 +0000 (02:21 +0000)]
[#18685] dark pixels created when during texture "full baking"
fix/workaround - offset by a 500th of a pixel to avoid baking missing pixels that are between 2 faces, its still possible pixels could be between faces but much less likely then it is currently with pixel aligned UVs.

11 years agoprint warnings when python attributes and methods conflict with game properties.
Campbell Barton [Thu, 14 May 2009 00:10:25 +0000 (00:10 +0000)]
print warnings when python attributes and methods conflict with game properties.

11 years ago* More updates to game engine type docs from Roelf de Kock
Campbell Barton [Wed, 13 May 2009 22:52:31 +0000 (22:52 +0000)]
* More updates to game engine type docs from Roelf de Kock

* FBX Bugfix, was exporting all animation curves as 'Constant' type (no docs for this so could only guess), Thanks to Sander Brandenburg for spotting this problem.
Also improved keyframe removal to work on animation curves an angle

11 years agoBGE: 1-liner patch to put the Always sensor in non pulse mode by default. I've seen...
Benoit Bolsee [Wed, 13 May 2009 17:02:39 +0000 (17:02 +0000)]
BGE: 1-liner patch to put the Always sensor in non pulse mode by default. I've seen enough games with Always sensors in pulse mode while they should not; this patch should prevent this common mistake.

11 years agoBGE API cleanup: motion actuator. Apply patch from Moguri.
Benoit Bolsee [Wed, 13 May 2009 16:48:33 +0000 (16:48 +0000)]
BGE API cleanup: motion actuator. Apply patch from Moguri.

11 years agoPython API
Ken Hughes [Wed, 13 May 2009 15:41:33 +0000 (15:41 +0000)]
Python API
Fix problem with ShrinkWrap PROJECT_OVER_NORMAL setting.

11 years agouse epy deprecated field and link to attributes
Campbell Barton [Wed, 13 May 2009 12:26:54 +0000 (12:26 +0000)]
use epy deprecated field and link to attributes

11 years agoMoved game engine types into because every type put into a module giving...
Campbell Barton [Wed, 13 May 2009 10:15:19 +0000 (10:15 +0000)]
Moved game engine types into because every type put into a module giving lots of references to KX_GameObject.KX_GameObject and having to write in links like L{CListValue<CListValue.CListValue>}.

Looked into ways around this but epydoc has no way to import a class without its module and the @include field is maked as 'TODO'.

Also removed the outdated 'WhatsNew' section and linked to the 2.49 release notes.

11 years agoBGE #18691: Blenderplayer fullscreen messes up desktop on OS X Leopard. Applied patch...
Benoit Bolsee [Wed, 13 May 2009 06:53:21 +0000 (06:53 +0000)]
BGE #18691: Blenderplayer fullscreen messes up desktop on OS X Leopard. Applied patch #18705 by sbn. I cannot compile osx but the patch seems perfectly alright to me. Can OSX users confirm that it compiles well on the various OSX version?

11 years agoBGE #18732: Python Light options don't work with GLSL materials. Commited patch from...
Benoit Bolsee [Wed, 13 May 2009 06:42:15 +0000 (06:42 +0000)]
BGE #18732: Python Light options don't work with GLSL materials. Commited patch from dfelinto and moguri, thanks for the good work.

11 years ago[#18694] Added support for Wavefront OBJ groups for both the import and export scripts
Campbell Barton [Wed, 13 May 2009 00:20:14 +0000 (00:20 +0000)]
[#18694] Added support for Wavefront OBJ groups for both the import and export scripts
from Paolo Ciccone (pciccone)

Im not that keen on this functionality since vertex groups in blender are for weight painting and OBJ's groups are more like sub-objects, The conversion between these is a poor approximation (one vertex group per face).
But this is still useful for using blender with poser so accepting these 2 patches.

Made some changes from the patch
- vgroup off by default, since this is mainly useful for corner cases
- findVertexGroupName() - changed how exporting selects a vertex group for a face, use the highest combind weight for each group instead of  the number of checking how many times the verts are in a group because they could have a zero weight.
- findVertexGroupName() - would fail if a faces verts were not in any groups, now return a (null) group
- Allow modifiers to export with vgroups

- disable by default
- ignore (null) groups
- fixed a problem where the patch broke SPLIT_GROUPS
- move the group definition out of global namespace, breaks importing as a module.

--- Patch submission info
The import/export scripts included with Blender 2.48 don't save/preserve groups defined in OBJ file. This presents a
couple of issues: users loading an obj file with groups are not able to use a rather important set of data. When the
file is then saved the groups are lost bringing up both the issue of data loss and loss of functionality as groups are
used for rigging and morph target creation for Poser/DAZ Studio and all compatible applications. Of course other
animation/modeling packages that use OBJ files might be affected.

The solution that I present here simply patches the excellent python scripts written by Campbell Barton and Jiri Hnidek.
The new code implements the preservation of groups by creating Blender vertex groups during import and by re-writing
those groups in the OBJ file during export. Of course group ownership is idetermined at the face/polygon level and not
at the vertex level.

This rather simple solution makes Blender instantly one of the better tools to create Poser Morph targets (Full Body
Morphs) and conforming figures and clothing.  Of course it's also adding a more complete support for the whole OBJ spec.

The patches are fitting well inside the established logic, have a minimal impact and are totally transparent to the
user. See the attached video (about 7 minutes long) for more details.

I noticed that the original scripts are formatted with tabs. I think it would be a good idea to follow the standard
Python recommendation and convert the scripts to use spaces. I didn't want to do it on my side as it would generate
a patch that replaces the whole file, not something that I wanted to do with my first submission :) But it would help
if people with access to SVN could do it.

Here is a short video that demonstrates the updates:


11 years agoMixed declaration and code. That should teach me to ignore warnings.
Martin Poirier [Tue, 12 May 2009 23:53:55 +0000 (23:53 +0000)]
Mixed declaration and code. That should teach me to ignore warnings.

11 years agoFix crash when missing int argument for -s -e and -j.
Martin Poirier [Tue, 12 May 2009 23:41:46 +0000 (23:41 +0000)]
Fix crash when missing int argument for -s -e and -j.

11 years ago[#18735] Particle vertex group API for Python
Campbell Barton [Tue, 12 May 2009 21:41:04 +0000 (21:41 +0000)]
[#18735] Particle vertex group API for Python
from Alberto Santos (dnakhain)

Changed "None" to "" for returning an unset vertex group.
"" is a valid name for a vertex group this is asking for trouble.

11 years ago[#18711] Particle render API for Python
Campbell Barton [Tue, 12 May 2009 21:27:01 +0000 (21:27 +0000)]
[#18711] Particle render API for Python
from Alberto Santos (dnakhain)

11 years ago[#18728] Particle (newtonian) physics API for Python
Campbell Barton [Tue, 12 May 2009 21:13:29 +0000 (21:13 +0000)]
[#18728] Particle (newtonian) physics API for Python
patch from Alberto Santos (dnakhain)

11 years agoBGE performance: allow to create display list on meshes with modifiers but without...
Benoit Bolsee [Tue, 12 May 2009 19:48:18 +0000 (19:48 +0000)]
BGE performance: allow to create display list on meshes with modifiers but without armature and shape keys. These modified meshes are static and can be put safely in a display list. As the rendering of modifiers is done in direct openGL call, it results is a bit performance boost.

11 years agoFix face occlusion for projection paint, (was broken for all RC's but nobody noticed)
Campbell Barton [Tue, 12 May 2009 16:20:23 +0000 (16:20 +0000)]
Fix face occlusion for projection paint, (was broken for all RC's but nobody noticed)
Its still not working right in perspective mode.
For bleed use a faster method then Barycentric weights function since the point is always on the edge.

last commit with memset in readfile.c missed one var.

11 years ago[#13726] Segfault with (Re)Appending objects
Campbell Barton [Tue, 12 May 2009 15:28:07 +0000 (15:28 +0000)]
[#13726] Segfault with (Re)Appending objects
fix this by freeing the lib-file-data after linking or appending, re-appending will be slower now
(as slow as appending for the first time).

Not strictly needed, set the memory for bhead's to zero in readfile.c since comparisons are done later on with this data making valgrind complain.

Added some missing headers too.

11 years agoBGE bug #18596: No ipo dynamics is 2.49rc1.
Benoit Bolsee [Mon, 11 May 2009 23:05:13 +0000 (23:05 +0000)]
BGE bug #18596: No ipo dynamics is 2.49rc1.

11 years agoPython API
Ken Hughes [Mon, 11 May 2009 22:27:06 +0000 (22:27 +0000)]
Python API
Patch by Jean-michel Soler (jms) to support ShrinkWrap and SimpleDeform

11 years agoproblem with unloading modules, py modules would be refreshed but external modules...
Campbell Barton [Mon, 11 May 2009 22:17:58 +0000 (22:17 +0000)]
problem with unloading modules, py modules would be refreshed but external modules that were pyc or pyo's would be kept.

This made it not refresh the module when taking an external BGE Module and making it internal because the external pyc would never be freed so the internal text wouldn't get used until restarting blender.

11 years agoBGE #18724: Modifier cause crash in 2.49RC2. My bad, I was too quick to fix the soft...
Benoit Bolsee [Mon, 11 May 2009 22:07:30 +0000 (22:07 +0000)]
BGE #18724: Modifier cause crash in 2.49RC2. My bad, I was too quick to fix the soft body problem in revision 20119. This time I tested against modifiers, soft body, armatures and replace mesh.

11 years agoBGE Doc updates thanks to Roelf de Kock
Campbell Barton [Mon, 11 May 2009 21:35:38 +0000 (21:35 +0000)]
BGE Doc updates thanks to Roelf de Kock

--- Notes from Roelf, maybe some other BGE devs could help resolve these
Here is what I have so far. I've left "TODO's" were there needs to be some more comments.

The following things also need to be resolved:

-KX_VehicleWrapper.getWheelOrientationQuaternion looks like it should return a quaternion but if I look at the code it looks like it returns a rotation matrix.

-I still need to find out what exactly KX_VehicleWrapper.getWheelRotation is. I've got the return type but I would like to add some explanation for what it actualy means (and units if any).

-BL_Shader.setNumberOfPasses ignores the parameter but from the comment in the code it looks like the parameter that is being set (it is harcoded to be =1) in setNumberOfPasses is not used. So I'm not sure if this method should be documented at all.

11 years agoUgh, yet another try to fix [#18697] 2.49RC1: Keyed Particles fine in viewport but...
Janne Karhu [Mon, 11 May 2009 19:19:36 +0000 (19:19 +0000)]
Ugh, yet another try to fix [#18697] 2.49RC1: Keyed Particles fine in viewport but give me a crash during render.

Hopefully it's now fixed for good.

11 years agoRemove incorrect "w" attribute from Eulers, gave warning in epydocs.
Ken Hughes [Mon, 11 May 2009 16:57:54 +0000 (16:57 +0000)]
Remove incorrect "w" attribute from Eulers, gave warning in epydocs.

11 years agoFix Makefiles for gameengine.
Diego Borghetti [Mon, 11 May 2009 15:34:46 +0000 (15:34 +0000)]
Fix Makefiles for gameengine.

11 years agoBGE: Add MT_Vector3 support for Py attribute macro system. See KX_PYATTRIBUTE_VECTOR_...
Benoit Bolsee [Mon, 11 May 2009 12:41:48 +0000 (12:41 +0000)]
BGE: Add MT_Vector3 support for Py attribute macro system. See KX_PYATTRIBUTE_VECTOR_...

11 years agoAnother Noise Tool svn commit is complaining about mixed line endings so after 16...
Campbell Barton [Mon, 11 May 2009 12:38:24 +0000 (12:38 +0000)]
Another Noise Tool svn commit is complaining about mixed line endings so after 16 attempts I wont include the full message

11 years agoFix for bug #18683: GLSL refresh issue when adding lamp. There's still
Brecht Van Lommel [Mon, 11 May 2009 12:06:53 +0000 (12:06 +0000)]
Fix for bug #18683: GLSL refresh issue when adding lamp. There's still
cases where this goes wrong, as noted in the release logs, this is just
a temporary fix, in 2.5 can solve it properly with notifiers.

11 years agogoing out on a limb and removing this without asking anyone.
Campbell Barton [Mon, 11 May 2009 05:47:14 +0000 (05:47 +0000)]
going out on a limb and removing this without asking anyone.

nobody seriously uses this format for graphics these days, and if they did, the export from blender is unlikely be to be useful, its just different views of the mesh edges projected into a 2D xfig file (quantized to int's too).

11 years ago2D Cutout Image Importer
Campbell Barton [Mon, 11 May 2009 05:35:32 +0000 (05:35 +0000)]
2D Cutout Image Importer
from Kevin Morgan (forTe)

imports images as quads in the 3D view

made some changes
- images that fail to import give an error popup rather then a script error
- extension input is only shown for batch directory importing
- extension comparison is now case insensitive
- importing images from "/" failed, (bug in Blender.sys.dirname), use os.path.dirname since os is needed for batch import in other places.
- disable Esc for quitting because escaping from the file selector would quit the script too.

11 years agobolt wizard from Aaron Keith (Spudmn), edits from Brendon and myself.
Campbell Barton [Mon, 11 May 2009 05:10:09 +0000 (05:10 +0000)]
bolt wizard from Aaron Keith (Spudmn), edits from Brendon and myself.

Minor changes are...
- default size is smaller then it was but still too big IMHO, presets are huge.
- deselect all objects and make the new bolt active
- place the new bolt at the 3D cursor location

11 years agonew script to copy the active object to all other selected objects transformation.
Campbell Barton [Mon, 11 May 2009 00:56:48 +0000 (00:56 +0000)]
new script to copy the active object to all other selected objects transformation.

When turning many assets into DupliGroups there was no way to do this other then manually copying the loc/size/rot for each object manually.

11 years agoupdate script templates for new BGE api attributes
Campbell Barton [Mon, 11 May 2009 00:19:55 +0000 (00:19 +0000)]
update script templates for new BGE api attributes

11 years agouse the same sequence mapping types as CListValue, hopefully this means it will build...
Campbell Barton [Sun, 10 May 2009 22:33:21 +0000 (22:33 +0000)]
use the same sequence mapping types as CListValue, hopefully this means it will build on different python versions

11 years agoLinux compilation problem
Benoit Bolsee [Sun, 10 May 2009 22:06:11 +0000 (22:06 +0000)]
Linux compilation problem

11 years agoLinux compilation problem, better fix
Benoit Bolsee [Sun, 10 May 2009 21:30:30 +0000 (21:30 +0000)]
Linux compilation problem, better fix

11 years agochanges to get benoits logic updates building on scons with gcc
Campbell Barton [Sun, 10 May 2009 21:22:25 +0000 (21:22 +0000)]
changes to get benoits logic updates building on scons with gcc

11 years agoBGE performance, 4th round: logic
Benoit Bolsee [Sun, 10 May 2009 20:53:58 +0000 (20:53 +0000)]
BGE performance, 4th round: logic

This commit extends the technique of dynamic linked list to the logic
system to eliminate as much as possible temporaries, map lookup or
full scan. The logic engine is now free of memory allocation, which is
an important stability factor.

The overhead of the logic system is reduced by a factor between 3 and 6
depending on the logic setup. This is the speed-up you can expect on
a logic setup using simple bricks. Heavy bricks like python controllers
and ray sensors will still take about the same time to execute so the
speed up will be less important.

The core of the logic engine has been much reworked but the functionality
is still the same except for one thing: the priority system on the
execution of controllers. The exact same remark applies to actuators but
I'll explain for controllers only:

Previously, it was possible, with the "executePriority" attribute to set
a controller to run before any other controllers in the game. Other than
that, the sequential execution of controllers, as defined in Blender was
guaranteed by default.

With the new system, the sequential execution of controllers is still
guaranteed but only within the controllers of one object. the user can
no longer set a controller to run before any other controllers in the
game. The "executePriority" attribute controls the execution of controllers
within one object. The priority is a small number starting from 0 for the
first controller and incrementing for each controller.

If this missing feature is a must, a special method can be implemented
to set a controller to run before all other controllers.

Other improvements:
- Systematic use of reference in parameter passing to avoid unnecessary data copy
- Use pre increment in iterator instead of post increment to avoid temporary allocation
- Use const char* instead of STR_String whenever possible to avoid temporary allocation
- Fix reference counting bugs (memory leak)
- Fix a crash in certain cases of state switching and object deletion
- Minor speed up in property sensor
- Removal of objects during the game is a lot faster

11 years agoremove unneeded vars and wasn't returning on some errors
Campbell Barton [Sun, 10 May 2009 15:23:18 +0000 (15:23 +0000)]
remove unneeded vars and wasn't returning on some errors

11 years agodeprecate controller.getActuator(name) and controller.getSensor(name) for
Campbell Barton [Sun, 10 May 2009 01:48:14 +0000 (01:48 +0000)]
deprecate controller.getActuator(name) and controller.getSensor(name) for
controller.actuators[name] and controller.sensors[name]

Made a read-only sequence type for logic brick sensors and actuators which can access single items or be used like a list or dictionary.
We could use a python dictionary or CValueList but that would be slower to create.

So you can do...
 for s in controller.sensors: print s

 print controller.sensors["Sensor"]

 print controller.sensors[0]

 sensors = list(controller.sensors)

This sequence type keeps a reference to the proxy it came from and will raise an error on access if the proxy has been removed.

11 years agoBGE Dome: Reducing FBO size to warped meshes.
Dalai Felinto [Sat, 9 May 2009 21:54:22 +0000 (21:54 +0000)]
BGE Dome: Reducing FBO size to warped meshes.

Commit 20099 started using a FBO way too big.
According to Paul Bourke this is how it's done in other Engines:

Projectors HD:
1920x1050 - buffersize = 1024; FBO size = 2048
1400x1050 - buffersize = 1024; FBO size = 2048

Projectors XGA:
1024x768 - buffersize = 512; FBO size = 1024

Now in Blender Game Engine we are using:

Projectors HD:
1920x1050 - buffersize = 1050; FBO size = 2048
1400x1050 - buffersize = 1050; FBO size = 2048

Projectors XGA:
1024x768 - buffersize = 768; FBO size = 1024

(I guess I should be committing code to the ge_dome branch instead of the trunk. I feel bad doing all those adjustments in a hurry to 2.49 final release in the trunk. That is ok, right?)

11 years agoBGE Dome: Allowing FOV different from 180º for Truncated Domes
Dalai Felinto [Sat, 9 May 2009 21:04:03 +0000 (21:04 +0000)]
BGE Dome: Allowing FOV different from 180º for Truncated Domes

*) a small note:

In the end it turned out that we have upright and downright domes out there.
So I may rearrange the order of the gui later:
(1 = fisheye, 2 = truncated up, 3 = truncated down, 4 = envmap, 5 = spherical panoramic)

I don't plan to do a doVersion() for that, so if you are using it already keep in mind that the modes may change before 249 final release.

11 years agoMethods didn't check for zombies which could crash in the case where a method for...
Campbell Barton [Sat, 9 May 2009 18:18:04 +0000 (18:18 +0000)]
Methods didn't check for zombies which could crash in the case where a method for an object is kept.

 func = ob.getMass
 ...remove ob...
 func() # crash

2 More refcount fixes spotted by Benoit too

11 years agoMore refcount errors spotted by Benoit, one with python getting a list item so scene...
Campbell Barton [Sat, 9 May 2009 17:24:21 +0000 (17:24 +0000)]
More refcount errors spotted by Benoit, one with python getting a list item so scene.objects["OBfoo"] would always mess up refcounts.

11 years agoBGE: repair soft body - include this in RC2 please
Benoit Bolsee [Sat, 9 May 2009 16:59:25 +0000 (16:59 +0000)]
BGE: repair soft body - include this in RC2 please

11 years agorefcounting bugfix, gameOb.getParent() and gameOb.parent both added a reference when...
Campbell Barton [Sat, 9 May 2009 16:29:00 +0000 (16:29 +0000)]
refcounting bugfix, gameOb.getParent() and gameOb.parent both added a reference when they should not have.

11 years agoFix Copy & Paste not working inside Blender.
Diego Borghetti [Fri, 8 May 2009 19:37:14 +0000 (19:37 +0000)]
Fix Copy & Paste not working inside Blender.

My last patch remove the code that check if Blender is the owner
of the selection, that is why stop working.

11 years agoBGE Dome: Truncated Dome are back (Upright and Downright) + GLEW_EXT_framebuffer_obje...
Dalai Felinto [Fri, 8 May 2009 18:59:08 +0000 (18:59 +0000)]
BGE Dome: Truncated Dome are back (Upright and Downright) + GLEW_EXT_framebuffer_object check before generating FBO

After last commit (20099) warping meshes got slower (more quality == less performance). Since we don't need an extra warping for truncated domes, It's better to handle them directly in openGL without the need of warping it.

I'll talk with some Dome owners to see if we need both Upright and Downright modes. I may remove one of them by 2.49 them.

*) also: a proper GLEW_EXT_framebuffer_object check before generating FBO (for warping meshes).

**) next in line (maybe after RC2): tilt option to tilt the camera up to 90º upward.

11 years agoSecond fix for [#18697] 2.49RC1: Keyed Particles fine in viewport but give me a crash...
Janne Karhu [Thu, 7 May 2009 22:31:19 +0000 (22:31 +0000)]
Second fix for [#18697] 2.49RC1: Keyed Particles fine in viewport but give me a crash during render

11 years agoBGE Python owned proxies had a problem being decref'd twice, this would crash on...
Campbell Barton [Thu, 7 May 2009 22:06:27 +0000 (22:06 +0000)]
BGE Python owned proxies had a problem being decref'd twice, this would crash on freeing KX_Vertex/Poly Proxy types when python was compiled with debug options enabled. wasnt tested from update, will go through all edited scripts and test :\

11 years agoBGE Dome: Implementation of FBO to handle warp mesh rendering.
Dalai Felinto [Thu, 7 May 2009 20:00:09 +0000 (20:00 +0000)]
BGE Dome: Implementation of FBO to handle warp mesh rendering.
We are using an image twice as big to render the fisheye before warping.
It'll slow down warping meshes a little, but we get way more resolution.

Therefore I will bring Truncated Dome mode back in order to avoid using warping mesh for that.

11 years agoBGE: unfortunately VA+list still doesn't work on ATI card, so put a specific check...
Benoit Bolsee [Thu, 7 May 2009 19:36:12 +0000 (19:36 +0000)]
BGE: unfortunately VA+list still doesn't work on ATI card, so put a specific check for ATI.

11 years ago[#18645] Texture painting smudge brush darkens images - 2.49RC1
Campbell Barton [Thu, 7 May 2009 14:53:40 +0000 (14:53 +0000)]
[#18645] Texture painting smudge brush darkens images - 2.49RC1
not fixed but the problem is now less bad when projection painting, bilinear interpolation was rounding down.
- added gameOb.attrDict to get the internal gameObject dict.
- mesh.getVertex wasnt setting an exception.

11 years agoBGE performance, 3rd round: culling and rasterizer.
Benoit Bolsee [Thu, 7 May 2009 09:13:01 +0000 (09:13 +0000)]
BGE performance, 3rd round: culling and rasterizer.

This commit extend the technique of dynamic linked list to the mesh
slots so as to eliminate dumb scan or map lookup. It provides massive
performance improvement in the culling and in the rasterizer when
the majority of objects are static.

Other improvements:
- Compute the opengl matrix only for objects that are visible.
- Simplify hash function for GEN_HasedPtr
- Scan light list instead of general object list to render shadows
- Remove redundant opengl calls to set specularity, shinyness and diffuse
  between each mesh slots.
- Cache GPU material to avoid frequent call to GPU_material_from_blender
- Only set once the fixed elements of mesh slot
- Use more inline function

The following table shows the performance increase between 2.48, 1st round
and this round of improvement. The test was done with a scene containing
40000 objects, of which 1000 are in the view frustrum approximately. The
object are simple textured cube to make sure the GPU is not the bottleneck.
As some of the rasterizer processing time has moved under culling, I present
the sum of scenegraph(includes culling)+rasterizer time

Scenegraph+rasterizer(ms)       2.48      1st round       3rd round

All objects static,            323.0           86.0             7.2
all visible, 1000 in
the view frustrum

All objects static,            219.0           49.7             N/A(*)
all invisible.

All objects moving,            323.0          105.6            34.7
all visible, 1000 in
the view frustrum

Scene destruction              40min          40min              4s

(*) : this time is not representative because the frame rate was at 60fps.
      In that case, the GPU holds down the GE by frame sync. By design, the
      overhead of the rasterizer is 0 when the the objects are invisible.

This table shows a global speed up between 9x and 45x compared to 2.48a
for scenegraph, culling and rasterizer overhead. The speed up goes much
higher when objects are invisible.

An additional 2-4x speed up is possible in the scenegraph by upgrading
the Moto library to use Eigen2 BLAS library instead of C++ classes but
the scenegraph is already so fast that it is not a priority right now.

Next speed up in logic: many things to do there...

11 years agopython3 compatibility for the BGE api, this only works with scons when WITH_BF_NOBLEN...
Campbell Barton [Thu, 7 May 2009 05:23:15 +0000 (05:23 +0000)]
python3 compatibility for the BGE api, this only works with scons when WITH_BF_NOBLENDER is enabled.
Mathutils, Geometry and BGL modules are currently disabled with python3

11 years agosmudge on float images crashed
Campbell Barton [Thu, 7 May 2009 01:27:58 +0000 (01:27 +0000)]
smudge on float images crashed

11 years agopython is not being very helpful!
Campbell Barton [Wed, 6 May 2009 22:16:28 +0000 (22:16 +0000)]
python is not being very helpful!
It seems 2.5 gives the version as a string, 2.6 as ints

11 years ago[#18702] FBX exported hemi light crashes maya
Campbell Barton [Wed, 6 May 2009 21:47:24 +0000 (21:47 +0000)]
[#18702] FBX exported hemi light crashes maya
- bugfix, off by 1 when clamping lamp types, caused blender to write an invalid lamp type
- error in last commit (renamed function)

11 years agouse the python version scons is running with by default on linux, will make it easier...
Campbell Barton [Wed, 6 May 2009 21:41:14 +0000 (21:41 +0000)]
use the python version scons is running with by default on linux, will make it easier for people with new distros that only come with python 2.6

11 years ago[#18681] Mousesensor Over doesn't work in ortho mode of 3dview camera
Campbell Barton [Wed, 6 May 2009 12:45:08 +0000 (12:45 +0000)]
[#18681] Mousesensor Over doesn't work in ortho mode of 3dview camera
bugfix, the clip near/far are scaled up for some reason, so use a range between 0 - clipfar for now.

11 years agomoved py controller functions from SCA_PythonController to SCA_IController - the...
Campbell Barton [Wed, 6 May 2009 09:12:08 +0000 (09:12 +0000)]
moved py controller functions from SCA_PythonController to SCA_IController - the base controller class so python can get the sensors & actuators from any controller (not just SCA_PythonController types)

also deprecated getActuators() and getSensors() for 'sensors' and 'actuators' attributes.

an example of getting every sensor connected to an object.
 all_sensors = [s for c in ob.controllers for s in c.sensors]

11 years agoFix for [#18697] 2.49RC1: Keyed Particles fine in viewport but give me a crash during...
Janne Karhu [Wed, 6 May 2009 08:33:40 +0000 (08:33 +0000)]
Fix for [#18697] 2.49RC1: Keyed Particles fine in viewport but give me a crash during render

11 years ago[#18328] FBX exporter not exporting multi-texture materials properly
Campbell Barton [Wed, 6 May 2009 06:01:09 +0000 (06:01 +0000)]
[#18328] FBX exporter not exporting multi-texture materials properly

even though the format allows materials and textures to be written separately the textures wont load right in maya or 3dsmax unless each texture has its own material.

11 years ago- Export hard edge and face info
Campbell Barton [Wed, 6 May 2009 04:24:01 +0000 (04:24 +0000)]
- Export hard edge and face info
- Use Edges field rather then 2 vert faces (worked in some apps but crashed maya)

11 years - modif in POLYLINE class
Remigiusz Fiedler [Wed, 6 May 2009 02:19:16 +0000 (02:19 +0000)] - modif in POLYLINE class

11 years ago[#18690] mesh ripping allowed on multires
Campbell Barton [Wed, 6 May 2009 01:41:04 +0000 (01:41 +0000)]
[#18690] mesh ripping allowed on multires
also fixed uninitialized variable use in the BGE when shaders are not supported.

11 years agoBugfix: Data from hidden objects was still being taken into account for many NLA...
Joshua Leung [Tue, 5 May 2009 23:15:31 +0000 (23:15 +0000)]
Bugfix: Data from hidden objects was still being taken into account for many NLA-editor operations

NOTE for Merging - do not port this commit, since the changes here are utterly irrelevant to the new system

11 years agoFix an undefined variable bug detected by valgrind.
Benoit Bolsee [Tue, 5 May 2009 22:32:15 +0000 (22:32 +0000)]
Fix an undefined variable bug detected by valgrind.

11 years ago[#18695] Replace python errors with useful messages when no full python installation...
Campbell Barton [Tue, 5 May 2009 21:51:54 +0000 (21:51 +0000)]
[#18695] Replace python errors with useful messages when no full python installation is found
from Philipp Oeser (lichtwerk)

11 years agoDXF export with a single nurbs curve failed
Campbell Barton [Tue, 5 May 2009 21:47:58 +0000 (21:47 +0000)]
DXF export with a single nurbs curve failed

11 years agoDisable importing module python controller scripts at conversion time because it...
Campbell Barton [Tue, 5 May 2009 05:57:08 +0000 (05:57 +0000)]
Disable importing module python controller scripts at conversion time because it can run BGE functions and crash since the internal state isnt setup yet.

face-select mode wasnt working when used with projection paint.

11 years agoBGE logic: new sensor "tap" option to generate automatically on/off pulses
Benoit Bolsee [Mon, 4 May 2009 22:21:02 +0000 (22:21 +0000)]
BGE logic: new sensor "tap" option to generate automatically on/off pulses

When enabled, this option converts any positive trigger from the sensor
into a pair of positive+negative trigger, with the negative trigger sent
in the next frame. The negative trigger from the sensor are not passed
to the controller as the option automatically generates the negative triggers.
From the controller point of view, the sensor is positive only for 1 frame,
even if the underlying sensor state remains positive.

The option interacts with the other sensor option in this way:
- Level option: tap option is mutually exclusive with level option. Both
  cannot be enabled at the same time.
- Invert option: tap option operates on the negative trigger of the
  sensor, which are converted to positive trigger by the invert option.
  Hence, the controller will see the sensor positive for 1 frame when
  the underlying sensor state turns negative.
- Positive pulse option: tap option adds a negative trigger after each
  repeated positive pulse, unless the frequency option is 0, in which case
  positive pulse are generated on every frame as before, as long as the
  underlying sensor state is positive.
- Negative pulse option: this option is not compatible with tap option
  and is ignored when tap option is enabled.

- Keyboard "All keys" is handled specially when tap option is set:
  There will be one pair of positive/negative trigger for each new
  key press, regardless on how many keys are already pressed and there
  is no trigger when keys are released, regardless if keys are still
  In case two keys are pressed in succesive frames, there will
  be 2 positive triggers and 1 negative trigger in the following frame.

11 years ago[#18650] fbx export assigning textures to wrong materials...
Campbell Barton [Mon, 4 May 2009 21:49:25 +0000 (21:49 +0000)]
[#18650] fbx export assigning textures to wrong materials...
also fixed an error that made this script fail when python wasnt found.

11 years agoBugFix [#18597] Blender's text editor cant paste from SciTE in linux
Diego Borghetti [Mon, 4 May 2009 18:46:34 +0000 (18:46 +0000)]
BugFix [#18597] Blender's text editor cant paste from SciTE in linux

Commit patch [#18597] Blender's text editor cant paste from SciTE in linux
Submitted by Campbell.

I made some changes to cleanup a little the code, atoms are now in the
System class. The getClipboard_xcout try to convert/request:
1) Request for UTF8, if fail
2) Request for COMPOUND_TEXT, if fail
3) Request for TEXT, if fail
4) Request for STRING

Test here with SciTE Version 1.77, firefox, xterm and text editor working
with both library's gtk/qt and all work fine.