12 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

12 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

12 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.

12 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?)

12 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.

12 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

12 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.

12 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

12 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.

12 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.

12 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.

12 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

12 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 :\

12 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.

12 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.

12 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.

12 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...

12 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

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

12 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

12 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)

12 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

12 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.

12 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]

12 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

12 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.

12 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)

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

12 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.

12 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

12 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.

12 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)

12 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

12 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.

12 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.

12 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.

12 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.

12 years agoFix some spelling errors.
Ken Hughes [Mon, 4 May 2009 16:03:54 +0000 (16:03 +0000)]
Fix some spelling errors.

12 years agoFix crash because XSetInputFocus fail.
Diego Borghetti [Mon, 4 May 2009 15:31:28 +0000 (15:31 +0000)]
Fix crash because XSetInputFocus fail.

Some WM send a WM_TAKE_FOCUS event before the window is really mapped
(for example, change from virtual desktop), because of this, the call
to XSetInputFocus fail and close Blender.

12 years agoFix for msvc compile error reported by Wahooney - thanks
Daniel Genrich [Mon, 4 May 2009 14:41:25 +0000 (14:41 +0000)]
Fix for msvc compile error reported by Wahooney - thanks

12 years agopython geometry function Geometry.BezierInterp(vec_knot_1, vec_handle_1, vec_handle_2...
Campbell Barton [Mon, 4 May 2009 13:01:18 +0000 (13:01 +0000)]
python geometry function Geometry.BezierInterp(vec_knot_1, vec_handle_1, vec_handle_2, vec_knot_2, resolution)
can use 2D-4D vectors

Also made 3ds import give a message when no python installed

12 years agoprint BGE Py api warnings only once to avoid flooding the terminal and slowing the...
Campbell Barton [Mon, 4 May 2009 08:55:54 +0000 (08:55 +0000)]
print BGE Py api warnings only once to avoid flooding the terminal and slowing the game down too much, resets on loading scenes/blendfiles and restarting the game engine.

12 years agogcc4.4 needed this to build
Campbell Barton [Mon, 4 May 2009 08:17:18 +0000 (08:17 +0000)]
gcc4.4 needed this to build

12 years agoBGE performance: second round of scenegraph improvement.
Benoit Bolsee [Sun, 3 May 2009 22:29:00 +0000 (22:29 +0000)]
BGE performance: second round of scenegraph improvement.

Use dynamic linked list to handle scenegraph rather than dumb scan
of the whole tree. The performance improvement depends on the fraction
of moving objects. If most objects are static, the speed up is
considerable. The following table compares the time spent on
scenegraph before and after this commit on a scene with 10000 objects
in various configuratons:

Scenegraph time (ms)              Before         After
(includes culling)

All objects static,               8.8            1.7
all visible but small fraction
in the view frustrum

All objects static,               7,5            0.01
all invisible.

All objects moving,               14.1           8.4
all visible but small fraction
in the view frustrum

This tables shows that static and invisible objects take no CPU at all
for scenegraph and culling. In the general case, this commit will
speed up the scenegraph between 2x and 5x. Compared to 2.48a, it should
be between 4x and 10x faster. Further speed up is possible by making
the scenegraph cache-friendly.

Next round of performance improvement will be on the rasterizer: use
the same dynamic linked list technique for the mesh slots.

12 years agoBGE performance: use inline function as much as possible in scenegraph and logic...
Benoit Bolsee [Sun, 3 May 2009 21:51:57 +0000 (21:51 +0000)]
BGE performance: use inline function as much as possible in scenegraph and logic to avoid function call.

12 years agoBGE: fix a crash with previous scene destruction speed up commit when sensors and...
Benoit Bolsee [Sun, 3 May 2009 21:42:39 +0000 (21:42 +0000)]
BGE: fix a crash with previous scene destruction speed up commit when sensors and controllers are cross connected between objects.

12 years agofix for a problem with setUV2 reported by cthames on blenderartist
Campbell Barton [Sun, 3 May 2009 20:47:29 +0000 (20:47 +0000)]
fix for a problem with setUV2 reported by cthames on blenderartist
there was an undocumented second arg but may as well allow a single vector arg like setUV()

12 years agoon second thought its less trouble to make a python script that makes all the getset...
Campbell Barton [Sun, 3 May 2009 19:47:13 +0000 (19:47 +0000)]
on second thought its less trouble to make a python script that makes all the getset's in the array, apologies to Alex for suggesting this be dynamic :/

included python script to print out getsets as a comment

12 years ago[#18678] Swizzle properties for Mathutils.Vector
Campbell Barton [Sun, 3 May 2009 17:52:03 +0000 (17:52 +0000)]
[#18678] Swizzle properties for Mathutils.Vector
patch from Alex Fraser (z0r)

  - = vec.zyx
  - vec.xy =
  - vec.xxy = vec.wzz
  - vec.yzyz = vec.yxyx


made some minor modifications to this patch.

tested access times and adding 336 attributes to vectors doesn't make a noticeable differences to speed of existing axis attributes (x,y,z,w) - thanks to python dict lookups.

12 years agoBugfix #17929
Ton Roosendaal [Sun, 3 May 2009 17:48:32 +0000 (17:48 +0000)]
Bugfix #17929

Old bug (2.42): when using node material, transparent shadow did not work.
It was missing to set the proper 'pass flag'.

Do note an important difference with non-node materials for 'transparent shadow'.
If there are no nodes, it uses the color from the unshaded material. When it has
nodes, it uses the color output from the entire node tree, which is typically
from shaded materials. The latter is because node shaders have no support for
shade passes yet (it only outputs rgb + a).

12 years agoBugfix 18671 revisted
Ton Roosendaal [Sun, 3 May 2009 13:22:26 +0000 (13:22 +0000)]
Bugfix 18671 revisted

Node editor didn't support editing non-material texture node trees.
Campbell pointed me to fact it's been used already, like for brush
painting. However, this only worked via linking the texture to a
material... hackish stuff.

Now the Node Editor supports all other Textures too, with three extra
icon buttons to define which.

- Active Object: for textures linked to Materials or Lamps
- World: textures from Scene world.
- Brush: textures from active Brush

The latter can only be set and used when in Paint or Sculpt mode:

- Paint mode: in Image window, Paint Tool panel, set active brush
- Sculpt mode: in EditButtons, Texture panel, select empty slot, add texture.

Note that refreshes of previews in Node Editor is not always happening on
switching contextes. Just click a socket to refresh view.

12 years agoFix for bug #18659: glsl math material node, "tangent" option didn't work.
Brecht Van Lommel [Sun, 3 May 2009 13:17:37 +0000 (13:17 +0000)]
Fix for bug #18659: glsl math material node, "tangent" option didn't work.

12 years agoBugfix #18676
Ton Roosendaal [Sun, 3 May 2009 12:06:43 +0000 (12:06 +0000)]
Bugfix #18676

Map a texture to Material Ambient factor didn't work.
Probably not since 2.42 or so... :)

12 years agoBugfix #18671
Ton Roosendaal [Sun, 3 May 2009 11:25:09 +0000 (11:25 +0000)]
Bugfix #18671

Texture Nodes: the option to use nodes was also visible for textures
on world, lamp, brush. Since it only works for Materials now, I've made
the button disappear then.

12 years agofixes for bugs submitted by BGE users, fixes by myself and Mitchell Stokes
Campbell Barton [Sun, 3 May 2009 09:21:58 +0000 (09:21 +0000)]
fixes for bugs submitted by BGE users, fixes by myself and Mitchell Stokes
- when the attribute check function failed it didnt set an error raising a SystemError instead
- Rasterizer.getMaterialMode would never return KX_BLENDER_MULTITEX_MATERIAL
- PropertySensor value attribute checking function was always returning a fail.
- Vertex Self Shadow python script didnt update for meshes with modifiers.

12 years ago[#18492] Old 3dView painting does't work anymore.
Campbell Barton [Sun, 3 May 2009 09:03:47 +0000 (09:03 +0000)]
[#18492] Old 3dView painting does't work anymore.
use flag the wrong way

12 years ago[#18191] VSE: when moving a project containing a relative path Audio RAM strip, it...
Campbell Barton [Sat, 2 May 2009 21:11:48 +0000 (21:11 +0000)]
[#18191] VSE: when moving a project containing a relative path Audio RAM strip, it is still pointing old file
Its a bit silly its not using the name from the file selector alredy (which has been made relative), but this fixes the bug.

12 years agofix for a painting bug where disabled culling & occlusion would not paint onto backfaces
Campbell Barton [Sat, 2 May 2009 19:46:54 +0000 (19:46 +0000)]
fix for a painting bug where disabled culling & occlusion would not paint onto backfaces
also use the math floating point functions sqrt -> sqrtf, fmod -> fmodf etc.

12 years agoBGE PyController module type.
Campbell Barton [Sat, 2 May 2009 15:09:06 +0000 (15:09 +0000)]
BGE PyController module type.
- Added support for any number of attributes, this means packages are supported automatically.
 so as well as "myModule.myFunc" you can do "myPackage.myModule.myFunc", nested packages work too.
- pass the controller to the python function as an argument for functions that take 1 arg, this check is only done at startup so it wont slow things down.

added support for

12 years agoBGE Py API patch from Mitchell Stokes, add distance attribute to the radar sensor...
Campbell Barton [Sat, 2 May 2009 04:53:01 +0000 (04:53 +0000)]
BGE Py API patch from Mitchell Stokes, add distance attribute to the radar sensor, dont use 'continue' because its a python keyword.
removed (ssizeobjargproc) it breaks py2.3

12 years agoBGE Py API patch from Mitchell Stokes, adds extra attributes and docs
Campbell Barton [Sat, 2 May 2009 02:40:11 +0000 (02:40 +0000)]
BGE Py API patch from Mitchell Stokes, adds extra attributes and docs

12 years agoBGE performance:
Benoit Bolsee [Fri, 1 May 2009 20:34:23 +0000 (20:34 +0000)]
BGE performance:

- Vast performance increase when removing scene containing large number of
  objects: the sensor/controller map was updated for each deleted object,
  causing massive slow down when the number of objects was large (O(n^2)).
- Use reference when scanning the sensor map => avoid useless copy.
- Remove dynamically the object bounding box from the DBVT when the object
  is invisible => faster culling.

12 years agoBGE: work around a problem with DBVT culling when graphic objects are rescaled. This...
Benoit Bolsee [Fri, 1 May 2009 19:02:23 +0000 (19:02 +0000)]
BGE: work around a problem with DBVT culling when graphic objects are rescaled. This happens when objects with very diverse scale are instantiated with dupligroup. The problem remains when the objects are rescaled during the game. The effect of the problem is an inefficient culling: objects can have a bounding box larger than needed. Patch to fix the problem is filed at Bullet forum.

12 years agoBGE: New function GameLogic.setMaxLogicFrame() to allow better control over the time...
Benoit Bolsee [Fri, 1 May 2009 16:35:06 +0000 (16:35 +0000)]
BGE: New function GameLogic.setMaxLogicFrame() to allow better control over the time spent on logic.

This function sets the maximum number of logic frame executed per render frame.
Valid values: 1..5

This function is useful to control the amount of processing consumed by logic.
By default, up to 5 logic frames can be executed per render frame. This is fine
as long as the time spent on logic is negligible compared to the render time.
If it's not the case, the default value will drag the performance of the game
down by executing unnecessary logic frames that take up most of the CPU time.

You can avoid that by lowering the value with this function.
The drawback is less precision in the logic system to physics and I/O activity.

Note that it does not affect the physics system: physics will still run
at full frame rate (actually up to 5 times the ticrate).
You can further control the render frame rate with GameLogic.setLogicTicRate().

12 years agoFix linking issue with gameplayer.
Kent Mein [Fri, 1 May 2009 15:19:47 +0000 (15:19 +0000)]
Fix linking issue with gameplayer.


12 years ago[#18654] different behaviour if script is called from (1) Menu (2) TextEditor (3...
Campbell Barton [Fri, 1 May 2009 14:19:56 +0000 (14:19 +0000)]
[#18654] different behaviour if script is called from (1) Menu (2) TextEditor (3) ScriptsWindow [including crash!]
bugfix, simple NULL check

12 years agoadd blendfile dirs to the sys.path without the scripts subdir
Campbell Barton [Fri, 1 May 2009 04:55:40 +0000 (04:55 +0000)]
add blendfile dirs to the sys.path without the scripts subdir

12 years agoBGE bug fix: when a dynamic object is parented to a compound shape and then unparente...
Benoit Bolsee [Thu, 30 Apr 2009 20:02:22 +0000 (20:02 +0000)]
BGE bug fix: when a dynamic object is parented to a compound shape and then unparented, it jumps at the position it had before the parenting.

12 years agoBGE bug #18091: Hitbox of object X doesn't move along when object X is parented to...
Benoit Bolsee [Thu, 30 Apr 2009 19:00:17 +0000 (19:00 +0000)]
BGE bug #18091: Hitbox of object X doesn't move along when object X is parented to object Y.

12 years agosupporting warp data files with tabs instead of spaces.
Dalai Felinto [Thu, 30 Apr 2009 15:27:38 +0000 (15:27 +0000)]
supporting warp data files with tabs instead of spaces.

12 years agoadded Geometry as a BGE module, removed its dependency on gen_utils.c
Campbell Barton [Thu, 30 Apr 2009 12:45:13 +0000 (12:45 +0000)]
added Geometry as a BGE module, removed its dependency on gen_utils.c

12 years agoenable game engine and player by default
Campbell Barton [Thu, 30 Apr 2009 10:41:39 +0000 (10:41 +0000)]
enable game engine and player by default

12 years agoSCons
Nathan Letwory [Thu, 30 Apr 2009 10:18:50 +0000 (10:18 +0000)]
* add missing arguments

12 years agoSecond trial to get an OK menu work to allow people to decide whether
Ton Roosendaal [Thu, 30 Apr 2009 10:11:37 +0000 (10:11 +0000)]
Second trial to get an OK menu work to allow people to decide whether
or not to use a 2.5+ saved file in 2.49. Apparently the msvc linker
was choking on it?

12 years agoBGE fux #17796: Glsl + bones + set smooth = bug on vertext groups.
Benoit Bolsee [Thu, 30 Apr 2009 08:02:26 +0000 (08:02 +0000)]
BGE fux #17796: Glsl + bones + set smooth = bug on vertext groups.

12 years agoBGE Python sys.path for the blenderplayer and blender
Campbell Barton [Thu, 30 Apr 2009 08:01:31 +0000 (08:01 +0000)]
BGE Python sys.path for the blenderplayer and blender
sys.path is the search path for python modules. This is useful so people making games can put all their scripts in a folder and be sure they will always load into the BGE.

for each blend file a scripts directory is added to the path
will look for modules in...

It could also default to look for modules in the same directory as the blend file but I think this is messy.
Added a note in the tooltip about //scripts so its not such a hidden feature.

This works by storing the original sys.path, then adding the paths for the blendfile and all its libs,
when a new blendfile is loaded, the original sys.path is restored before adding the blendfiles paths again so the sys.path wont get junk in it.

One problem with this - when using linked libs the module names must be unique else it will load the wrong module for one of the controllers.

also fixed 2 bugs
- sys.path in the blenderplayer was growing by 1 for every file load in blenderplayer
- the relative path (gp_GamePythonPath), wasnt being set when loading files in the blenderlayer (as I wrongly said in the last commit).

12 years agoBGE 2dFilters: Revert of part of own commit [rev. 19687]
Dalai Felinto [Thu, 30 Apr 2009 03:46:31 +0000 (03:46 +0000)]
BGE 2dFilters: Revert of part of own commit [rev. 19687]

Therefore we still need to find a better way to solve this problem:
[#18154] 2dFilter and motion blur should run only once to all the scenes:

12 years agoBGE Dome update. Spurious black seams (finally) fixed.
Dalai Felinto [Thu, 30 Apr 2009 02:41:07 +0000 (02:41 +0000)]
BGE Dome update. Spurious black seams (finally) fixed.
The solution is a hack. It's a workaround for another bug (#18655).
Now it's working in all modes: fullscreen, maximized screen and gameplayer.

* small change to always set the perspective mode as true during dome mode.

12 years ago2 BGE bugs from 2.48 fixed
Campbell Barton [Thu, 30 Apr 2009 02:07:08 +0000 (02:07 +0000)]
2 BGE bugs from 2.48 fixed
- the gp_GamePythonPath relative path variable wasnt updated when loading new files.
- missing NULL check for scene crashed blender when it failed to load a file.
Both problems dont affect blenderplayer

12 years agoNot sure why this INCREF is needed since making a replica wont use the m_bytecode...
Campbell Barton [Thu, 30 Apr 2009 00:51:11 +0000 (00:51 +0000)]
Not sure why this INCREF is needed since making a replica wont use the m_bytecode so why should it add a user?
Removed in 19974 but that crashes YoFrankie so adding back in for now.

12 years agoerror in last commit
Campbell Barton [Wed, 29 Apr 2009 23:59:59 +0000 (23:59 +0000)]
error in last commit

12 years agouse BLO_sys_types.h instead, it's windows proof
Martin Poirier [Wed, 29 Apr 2009 23:43:12 +0000 (23:43 +0000)]
use BLO_sys_types.h instead, it's windows proof

12 years agopython modules in the game engine could point to builtin modules like GameLogic that...
Campbell Barton [Wed, 29 Apr 2009 23:39:27 +0000 (23:39 +0000)]
python modules in the game engine could point to builtin modules like GameLogic that was cleared.
I added module clearing before there was checks for invalid python objects, so now its not needed for BGE Builtin types at least.

also made the builtin modules get re-used if they already exist and clear all user modules when the game engine finishes so with Module-Py-Controllers the referenced modules are at least up to date when pressing Pkey.

12 years agomissing stdint.h include
Martin Poirier [Wed, 29 Apr 2009 23:33:04 +0000 (23:33 +0000)]
missing stdint.h include

12 years ago* instead of using okee() (breaking builds) use error() in 250 subversion handling...
Nathan Letwory [Wed, 29 Apr 2009 22:09:28 +0000 (22:09 +0000)]
* instead of using okee() (breaking builds) use error() in 250 subversion handling in 2.49

12 years ago* make sure header file agrees with editfont.c (unsigned long -> uintptr_t), followin...
Nathan Letwory [Wed, 29 Apr 2009 20:56:27 +0000 (20:56 +0000)]
* make sure header file agrees with editfont.c (unsigned long -> uintptr_t), following commit by Genscher r19983

12 years ago* fix linking problem for mingw with setenv/_putenv_s, here we use putenv("key=val");
Nathan Letwory [Wed, 29 Apr 2009 20:09:08 +0000 (20:09 +0000)]
* fix linking problem for mingw with setenv/_putenv_s, here we use putenv("key=val");

12 years agoPossible fix for bug #18648: one armature disappears when joining
Brecht Van Lommel [Wed, 29 Apr 2009 19:33:05 +0000 (19:33 +0000)]
Possible fix for bug #18648: one armature disappears when joining
armatures. Not sure it actually fixes the problem because I can't
test this on Win 64, but this fixes use of unitialized memory at
least. Mat4MulMat34 only sets the 3x3 part of the 4x4 matrix, which
may lead to a NaN bone roll value.

12 years agoWin64 fixes - I don't think that they introduced any bugs yet, but I want to be sure...
Daniel Genrich [Wed, 29 Apr 2009 19:13:32 +0000 (19:13 +0000)]
Win64 fixes - I don't think that they introduced any bugs yet, but I want to be sure. Please report problems.

12 years agoBugfix #18632
Ton Roosendaal [Wed, 29 Apr 2009 17:41:41 +0000 (17:41 +0000)]
Bugfix #18632

Duplicating an armature, with constraints having a local Ipo, didn't
make a copy of this Ipo too, frustrating its drivers too.

12 years agowas testing this, didnt mean to commit.
Campbell Barton [Wed, 29 Apr 2009 17:01:35 +0000 (17:01 +0000)]
was testing this, didnt mean to commit.

12 years agoifdef's for future py3 support, after this adding py3 can mostly be done with defines...
Campbell Barton [Wed, 29 Apr 2009 16:54:45 +0000 (16:54 +0000)]
ifdef's for future py3 support, after this adding py3 can mostly be done with defines or batch renaming funcs (with the exception of CListValue slicing)
No changes for py2.x.

12 years agoattempt to fix for py2.3
Campbell Barton [Wed, 29 Apr 2009 16:48:00 +0000 (16:48 +0000)]
attempt to fix for py2.3

12 years agoBug, reported by venomgfx:
Ton Roosendaal [Wed, 29 Apr 2009 16:41:18 +0000 (16:41 +0000)]
Bug, reported by venomgfx:

Scrub frames in Sequencer image window stopped working. Was in a commit
from Joshua last july, with greasepencil fixes. No idea why he disabled
it, doesn't seem to harm gpencil at all (not in sequencer supported).

12 years agoBugfix #18649
Ton Roosendaal [Wed, 29 Apr 2009 16:16:08 +0000 (16:16 +0000)]
Bugfix #18649

Grease pencil, floating panel, "Delete last stroke" crashed when there
were no strokes. Simple NULL check added.

12 years agoBugfix from own testing:
Ton Roosendaal [Wed, 29 Apr 2009 16:07:10 +0000 (16:07 +0000)]
Bugfix from own testing:

Blender crashed, when started in debug -d, with compositor, after render.
Reason was the BKE_image_print_memlist() which reads the ibuf->rect from
all images, but for Image types "VIEWER" that's not valid, this data is
coming from other sources.

12 years ago2.5+ file read provision for 2.49
Ton Roosendaal [Wed, 29 Apr 2009 15:25:13 +0000 (15:25 +0000)]
2.5+ file read provision for 2.49

I've managed to find a basic fail-safe method to prevent using the read
data with an OK popup. I then still will read the file, but wait for user
confirmation to continue, or just free the database.

The pupup tells the user that at least animation data will be lost.

For background renders of 2.5+ things are more tricky, so here I've added
a default failure to read, returning 0, which will typically gracefully
quit blender.

12 years agoBGE alternative run mode for python controllers.
Campbell Barton [Wed, 29 Apr 2009 12:43:09 +0000 (12:43 +0000)]
BGE alternative run mode for python controllers.
Option to run a function in a module rather then a script from a python controller, this has a number of advantages.

- No allocating and freeing the namespace dictionary for every time its triggered
  (hard to measure the overhead here, but in a test with calling 42240 scripts a second each defining 200 vars, using modules was ~25% faster)

- Ability to use external python scripts for game logic.

- Convenient debug option that lets you edit scripts while the game engine runs.

12 years agobugfix #18609
Ton Roosendaal [Wed, 29 Apr 2009 11:20:07 +0000 (11:20 +0000)]
bugfix #18609

This fixes a commit from Peter, revision 12931, Dec 17 2007
He added quick image scaling code, derived from ppmqscale,

This implementation gave ugly banding. especially visible on
dark colors or byte images with very close colors.

Solution is to add correct rounding, seems to me normal for such
fixed point magic. Optimizing code and keeping quality is tricky
dudes! Results for scaling down in sequencer were bad for over a
year (2.47 and 2.48 both wrong).

12 years agoneeded this minor change to build on gcc
Campbell Barton [Wed, 29 Apr 2009 11:16:26 +0000 (11:16 +0000)]
needed this minor change to build on gcc