Commit Graph

129 Commits

Author SHA1 Message Date
Benoit Bolsee
02132de7aa BGE patch: Add NAND, NOR, XOR, XNOR controllers.
NAND controller is an inverted AND controller: the output is 
     1 if any of the input is 0.
NOR  controller is an inverted OR controller: the output is 0
     if any of the input is 1.
XOR  controller is an exclusive OR: the output is 1 if and only
     if one input is 1 and all the other inputs are 0.
XNOR controller is an inverted XOR: the output is 0 if and only
     if one input is 0 and all the other inputs are 0.
The NAND, NORT and XNOR controllers are very usefull to create
complementary outputs to start and stop actuators synchronously.
MSCV project files updated.
2008-06-23 20:41:18 +00:00
Benoit Bolsee
5372def2b0 BGE patch: add state engine support in the logic bricks.
This patch introduces a simple state engine system with the logic bricks. This system features full
backward compatibility, multiple active states, multiple state transitions, automatic disabling of 
sensor and actuators, full GUI support and selective display of sensors and actuators. 
Note: Python API is available but not documented yet. It will be added asap.

State internals
===============
The state system is object based. The current state mask is stored in the object as a 32 bit value; 
each bit set in the mask is an active state. The controllers have a state mask too but only one bit
can be set: a controller belongs to a single state. The game engine will only execute controllers 
that belong to active states. Sensors and actuators don't have a state mask but are effectively 
attached to states via their links to the controllers. Sensors and actuators can be connected to more
than one state. When a controller becomes inactive because of a state change, its links to sensors 
and actuators are temporarily broken (until the state becomes active again). If an actuator gets isolated, 
i.e all the links to controllers are broken, it is automatically disabled. If a sensor gets isolated, 
the game engine will stop calling it to save CPU. It will also reset the sensor internal state so that
it can react as if the game just started when it gets reconnected to an active controller. For example,
an Always sensor in no pulse mode that is connected to a single state (i.e connected to one or more 
controllers of a single state) will generate a pulse each time the state becomes active. This feature is 
not available on all sensors, see the notes below.

GUI
===
This system system is fully configurable through the GUI: the object state mask is visible under the
object bar in the controller's colum as an array of buttons just like the 3D view layer mask.
Click on a state bit to only display the controllers of that state. You can select more than one state
with SHIFT-click. The All button sets all the bits so that you can see all the controllers of the object. 
The Ini button sets the state mask back to the object default state. You can change the default state 
of object by first selecting the desired state mask and storing using the menu under the State button. 
If you define a default state mask, it will be loaded into the object state make when you load the blend
file or when you run the game under the blenderplayer. However, when you run the game under Blender, 
the current selected state mask will be used as the startup state for the object. This allows you to test
specific state during the game design.

The controller display the state they belong to with a new button in the controller header. When you add
a new controller, it is added by default in the lowest enabled state. You can change the controller state 
by clicking on the button and selecting another state. If more than one state is enabled in the object
state mask, controllers are grouped by state for more readibility. 

The new Sta button in the sensor and actuator column header allows you to display only the sensors and 
actuators that are linked to visible controllers.

A new state actuator is available to modify the state during the game. It defines a bit mask and 
the operation to apply on the current object state mask:

Cpy: the bit mask is copied to the object state mask.
Add: the bits that set in the bit mask will be turned on in the object state mask.
Sub: the bits that set in the bit mask will be turned off in the object state mask.
Inv: the bits that set in the bit mask will be inverted in the objecyy state mask.

Notes
=====
- Although states have no name, a simply convention consists in using the name of the first controller 
  of the state as the state name. The GUI will support that convention by displaying as a hint the name
  of the first controller of the state when you move the mouse over a state bit of the object state mask
  or of the state actuator bit mask.
- Each object has a state mask and each object can have a state engine but if several objects are 
  part of a logical group, it is recommended to put the state engine only in the main object and to
  link the controllers of that object to the sensors and actuators of the different objects.
- When loading an old blend file, the state mask of all objects and controllers are initialized to 1 
  so that all the controllers belong to this single state. This ensures backward compatibility with 
  existing game.
- When the state actuator is activated at the same time as other actuators, these actuators are 
  guaranteed to execute before being eventually disabled due to the state change. This is useful for
  example to send a message or update a property at the time of changing the state.
- Sensors that depend on underlying resource won't reset fully when they are isolated. By the time they
  are acticated again, they will behave as follow:
  * keyboard sensor: keys already pressed won't be detected. The keyboard sensor is only sensitive 
    to new key press.
  * collision sensor: objects already colliding won't be detected. Only new collisions are 
    detected.
  * near and radar sensor: same as collision sensor.
2008-06-22 14:23:57 +00:00
Benoit Bolsee
2bece8dcb5 BGE Patch: Add Shape Action support and update MSCV_7 project file for glew.
Shape Action are now supported in the BGE. A new type of actuator "Shape Action" is available on mesh objects. It can be combined with Action actuator on parent armature. Only relative keys are supported. All the usual action options are available: type, blending, priority, Python API. Only actions with shape channels should be specified of course, otherwise the actuator has no effect. Shape action will still work after a mesh replacement provided that the new mesh has compatible shape keys.
2008-06-18 06:46:49 +00:00
Benoit Bolsee
21c2613622 Update MSVC project files 2008-06-12 21:17:02 +00:00
Benoit Bolsee
1989e757b0 Add support for GLEXT in MSVC project files - continued: also support BlenderPlayer and release config 2008-05-05 21:33:06 +00:00
Benoit Bolsee
da3b15be00 BGE patch: add support for GLEXT in MSVC project files. User must update glext.h in SDK directory: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\gl\glxext.h. Get the latest glext.h from http://www.opengl.org/registry/ 2008-05-04 21:20:22 +00:00
Benoit Bolsee
2740bbc89c Update MSVC project files to support ffmpeg. Make sure you do svn update in lib/windows to link with latest ffmpeg libraries 2008-04-27 15:02:37 +00:00
Benoit Bolsee
e7384c9dd2 Commit patch #8799: Realtime SetParent function in the BGE
This patch consists in new KX_GameObject::SetParent() and KX_GameObject::RemoveParent() functions to create and destroy parent relation during game. These functions are accessible through python and through a new actuator KX_ParentActuator. Function documentation in PyDoc.
The object keeps its orientation, position and scale when it is parented but will further rotate, move and scale with its parent from that point on. When the parent relation is broken, the object keeps the orientation, position and scale it had at that time.
The function has no effect if any of the X/Y/Z scale of the object or its new parent are below Epsilon.
2008-04-06 18:30:52 +00:00
Benoit Bolsee
6615f8b74f BGE correction: AddRef() on source object of property actuator to protect against crash if the source object is deleted (bad game design anyway) 2008-03-22 14:47:42 +00:00
Benoit Bolsee
8cc341a5a4 Add CMP_premulkey.c to Win32 project 2008-03-12 21:31:17 +00:00
Benoit Bolsee
eaec396e0f BlenderPlayer Win project was -again- damaged by the inclusion of libblenkey.lib, now removed 2008-03-09 21:05:05 +00:00
Benoit Bolsee
6b48255e5c _DEBUG defined in release build of node project 2008-03-01 18:41:32 +00:00
Andrea Weikert
0e54475ada == MSVC 7.1 projectfiles ==
- added missing files rev. 13829 (Bevel tools and Bmesh kernel
) commit.
2008-02-26 23:39:52 +00:00
Andrea Weikert
61707fba6c == MSVC 7.1 projectfiles ==
- added missing files rev. 13738 (Transform Orientations) commit.
2008-02-18 17:56:41 +00:00
Benoit Bolsee
13aa413361 patch 8235 8218 8211 added: various gameengine improvements, fixed windows project files 2008-02-15 23:12:03 +00:00
Andrea Weikert
234a5bd969 == MSVC 7.1 projectfiles ==
- added missing files rev. 13556 (game engine 2D filters) commit.
2008-02-04 19:59:31 +00:00
Andrea Weikert
c773988003 == MSVC 7.1 projectfiles ==
- added missing files from cloth sim
2008-01-30 20:19:40 +00:00
Andrea Weikert
1fd856466a == MSVC 7.1 projectfiles ==
- added missing files to projectfiles:
    - source/blender/render/intern/occlusion.c 
    - source/blender/src/radialcontrol.c
2008-01-21 22:29:57 +00:00
Andrea Weikert
52d283d1ab == MSVC 7.1 projectfiles ==
blenkernel needed opennl include (softbodies)
blenderplayer needed linking opennl too now.
replaces powf with pow in multires - MSVC isn't C99 compatible
2008-01-13 15:10:09 +00:00
Andrea Weikert
e06edeb801 == MSVC 7.1 projectfiles ==
- added missing files to projectfiles
- cleaned up thumbnail creation to avoid dependency on BKE_
2007-12-26 19:19:51 +00:00
Martin Poirier
be354c3d09 Merge from Harmonic Skeleton branch
This code adds a basic and simple skeleton generator.

Examples and links are in the wiki, docs will come eventually: http://wiki.blender.org/index.php/User:Theeth/skeletor

In a nutshell, select a vertex at the top of the head and press "Generate Skeleton". UI Panel is in the Editing buttons in Edit Mode, tooltips and semi-useful.
2007-12-10 21:14:19 +00:00
Andrea Weikert
3b95767cf1 == MSVC 7.1 project files ==
- added file strand.c to render lib
2007-12-09 18:42:44 +00:00
Andrea Weikert
ab2e2ec34b == MSVC 7.1 projectfiles ==
- update for new particle system
- made blenderplayer.exe compile again (DDS library missing)
- exchanged a few float math functions (logf, sinf, cosf, expf, powf) with their double counterparts in CMP_nodes 
  (MSVC chokes on them, because the compiler is not C99 compliant)
2007-11-27 21:48:14 +00:00
Brecht Van Lommel
7da56f4a9b Particles
=========

Merge of the famous particle patch by Janne Karhu, a full rewrite
of the Blender particle system. This includes:

- Emitter, Hair and Reactor particle types.
- Newtonian, Keyed and Boids physics.
- Various particle visualisation and rendering types.
- Vertex group and texture control for various properties.
- Interpolated child particles from parents.
- Hair editing with combing, growing, cutting, .. .
- Explode modifier.
- Harmonic, Magnetic fields, and multiple falloff types.

.. and lots of other things, some more info is here:

http://wiki.blender.org/index.php/BlenderDev/Particles_Rewrite
http://wiki.blender.org/index.php/BlenderDev/Particles_Rewrite_Doc

The new particle system cannot be backwards compatible. Old particle
systems are being converted to the new system, but will require
tweaking to get them looking the same as before.

Point Cache
===========

The new system to replace manual baking, based on automatic caching
on disk. This is currently used by softbodies and the particle system.

See the Cache API section on:
http://wiki.blender.org/index.php/BlenderDev/PhysicsSprint

Documentation
=============

These new features still need good docs for the release logs, help
for this is appreciated.
2007-11-26 22:09:57 +00:00
Andrea Weikert
7ade814141 Bugfix #7510: Doesn't save .blend file name with [
* Added Windows specific implementation for fnmatch taken from GNU/MINGW/MSYS C library
* behaviour should now be the same as under Linux and other OSs
* changed filename for fnmatch.h to ensure we include the correct one if we link with the included implementation
* tested compile with MSVC 7.1 and gcc(MinGW-5.1.3) on Windows.
2007-11-19 20:13:14 +00:00
Martin Poirier
bc76315823 Adding new files to MSVC 7.0 projects (have to work on win32 at school) 2007-11-07 17:09:26 +00:00
Martin Poirier
0de103c1cd Filling in branch from trunk 2007-11-06 22:29:20 +00:00
Andrea Weikert
8d10ab61c6 == MSVC 7.1 projectfiles ==
- added missing CMP_crop.c
2007-11-05 20:16:23 +00:00
Andrea Weikert
5315f368cd == imagebrowser ==
* added support for .dds image files
* added support for .int, .inta and .rgba image files

== MSVC 7.1 project files ==
* added WITH_DDS to support .dds files when compiling with the project files by default
* added the dds source files to imbuf project
* also added CMP_glare, CMP_lensdist, CMP_tonemap nodes to nodes.vcproj
2007-10-27 10:06:03 +00:00
Andrea Weikert
c4218a810c added missing include dir from stampinfo patch to msvc project files and SConscript file. 2007-10-21 16:17:33 +00:00
Peter Schlaile
df46549325 == Sequencer ==
Added include compiler switches for windows to make pthread.h accessible
and reverted Joshua's patch.
(Joshua: the prefetch buffering has _nothing_ to do with FFMPEG!)

If this still does not fix the problem, please send an email to me!

I also fixed 
source\blender\src\sequence.c(1405) : error C2275: 'PrefetchThread'

GCC is way to gracefully in latest versions... :)
2007-10-02 12:36:53 +00:00
Andrea Weikert
356ab94373 == imagebrowser ==
Initial commit of imagebrowser in trunk.
BIG COMMIT!

Main changes:
* completely reworked imasel space
* creation and storage of the preview images for materials, textures, world and lamp
* thumbnails of images and movie files when browsing in the file system
* loading previews from external .blend when linking or appending
* thumbnail caching according to the Thumbnail Managing Standard: http://jens.triq.net/thumbnail-spec/
* for now just kept imasel access mostly as old imgbrowser (CTRL+F4, CTRL+F1) a bit hidden still.
* filtering of file types (images, movies, .blend, py,...)
* preliminary managing of bookmarks ('B' button to add, XKEY while bookmark active to delete)

More detailed info which will be updated here: http://wiki.blender.org/index.php/User:Elubie/PreviewImageBrowser

Places that need special review (and probably fixes):
* BLO_blendhandle_get_previews in readblenentry
* readfile.c: do_version and refactorings of do_library_append
* UI integration

TODO and known issues still:
* Accented characters do not display correctly with international fonts
* Crash was reported when browsing in directory with movie files
* Bookmark management still needs some UI work (second scrollbar?), feedback here is welcome!

Credits:
Samir Bharadwaj (samirbharadwaj@yahoo.com) for the icon images.

Many thanks to everyone who gave feedback and helped so far!
2007-09-02 17:25:03 +00:00
Andrea Weikert
176a385ff7 == MSVC 7.1 projectfiles ==
added SHD_hueSatVal.c
2007-09-02 09:50:09 +00:00
Andrea Weikert
ca5c21e180 * updated MSVC projectfiles with SHD_sepcombRGB.c shader nodes.vcproj
* fix for possible double free.
2007-08-30 20:32:43 +00:00
Andrea Weikert
b1c47f4159 - fix for missing include dir in MSVC 7 project files
- small warning fix for unreferenced variable.
2007-08-19 11:15:33 +00:00
Joilnen Leite
443a64135e Font preview 2007-07-30 15:59:16 +00:00
Andrea Weikert
0281bdac76 == MSVC 7.1 projectfiles ==
- new files rayshade.c and raytrace.c replace ray.c
- new file meshlaplacian.c
2007-07-28 16:28:40 +00:00
Andrea Weikert
e64e6ae3a3 == MSVC compilation ==
two small fixes in this commit:
- added new file for nodes 
- fixed compile error in readfile.c, as reported by Jean-Michel Soler here:
  http://lists.blender.org/pipermail/bf-committers/2007-July/018849.html
2007-07-15 14:55:09 +00:00
Andrea Weikert
ddc68225c2 ==== MSVC 7.1 projectfiles ====
- bullet update to version 2.53 cleanup
- added file sculptmode-stroke.c
2007-06-25 17:51:37 +00:00
Andrea Weikert
5c941fb42e ==== MSVC 7.1 projectfiles ====
- adding verse_method.c to blenkernel.vcproj
2007-06-13 19:25:15 +00:00
Andrea Weikert
f1992aeb65 ==== MSVC 7.1 projectfiles ====
- small update for missing nodes.vcproj
- also first commit to svn
2007-06-06 19:09:45 +00:00
Andrea Weikert
ad886183e3 ==== MSVC 7.1 projectfiles ====
- small maintenance, added sss.c and sss.h
(does not affect release build)
2007-05-05 10:15:07 +00:00
Andrea Weikert
94b7743dd3 ==== MSVC 7.1 project files ====
- cleanup of the python included files
- update for some recently added files
2007-04-20 16:53:57 +00:00
Andrea Weikert
15b4dfba58 ==== MSVC 7.1 Projectfiles ====
- small maintenance: added two new node files to project
2007-04-13 17:16:23 +00:00
Andrea Weikert
8f9d243532 ==== MSVC 7.1 project files ====
- update for nodes_util.c and nodes_util.h
2007-04-05 20:28:07 +00:00
Andrea Weikert
0d19c13c93 ==== MSVC 7.1 projectfiles ====
- Python API changes: removed Main.c, added BPyModule.c
2007-03-27 18:04:51 +00:00
Andrea Weikert
4de22c2374 ==== MSVC 7.1 projectfiles ====
maintenance work:
- internally renamed nodes lib to BL_nodes to follow naming of other libs, renaming of
  actual projectfile will follow after move to svn.
- added missing include dirs for new BL_nodes lib
- removed hardcoded include dir in nodes lib
- changed nodes lib to not 'compile as C++', but as default, so .c as C, .cpp as C++
- still found PHY_Ode dependency in ActiveX plugin which I removed
summary:
All should compile fine again now, let me know of any problems.
2007-03-26 18:34:25 +00:00
Robert Holcomb
40a47e29e4 Has the nodes in it. I'm not a windows guru, so please review. 2007-03-24 18:42:38 +00:00
Robert Holcomb
1dcb99dce3 Still not part of the solution file, so shouln't affect the build. This version is complete, but won't compile until I commit the new BKE_node.h and drawnode.c files (plus a couple of others) 2007-03-24 07:18:26 +00:00
Andrea Weikert
059ea9359d ==== MSVC 7.1 projectfiles ====
- added BLI_boxpack2d files
2007-03-21 20:36:14 +00:00