Commit Graph

17728 Commits

Author SHA1 Message Date
Matt Ebb
c26adeea55 * Fix for compiling with cmake on OS X. Hopefully this goes ok for other platforms too. 2009-07-03 09:23:12 +00:00
Campbell Barton
b0f19ea7ca set the PYTHONPATH to BLI_gethome_folder("python") if it exists.
This lets us distribute blender with our own python module directory (next to ui and io), and avoids the need for a shell script to start blender.
2009-07-03 04:38:55 +00:00
Campbell Barton
fb5f9273eb cmake support for building without fluidsim 2009-07-02 22:22:35 +00:00
Brecht Van Lommel
093ff8202c 2.5: Physics Buttons
All kinds of changes to get it ready for UI layouts. This means RNA
and operators should be working correct, but most buttons are still
not actually there yet.

* Added near empty soft body, fluid, field and collision panels,
  tweaks to cloth panels.
* Fluid bake works, but without escape or showing any progress.
* Fluid/Softbody/Cloth/Collision can now be both added as modifiers
  or in the physics panels.
* Missing: fields & soft body for particles.
* Missing: proper updating softbodies, guess this code still needs
  updates after pointcache refactor?
2009-07-02 19:41:31 +00:00
Ton Roosendaal
5a0896e1a3 2.5
Cleanup of scroller drawing in 2D windows.

Before:
http://download.blender.org/institute/rt11.jpg
After:
http://download.blender.org/institute/rt12.jpg

Will add 'zoom' widget circles later, as mockupped here:
http://www.reynish.com/files/blender25/fcurve_scrollbar.png

Also note the scale values are inside scroller; drawing it
on top conflicts with current frame item and markers.

Currently scroller disappear entirely when view is total.

For Joshua:
To make sliders behave nicely, the boundbox (v2d->tot) has to
be refreshed on each change. I've added it in graph drawing
now, but it could be notifier based I guess... not sure what
the correct anim api call would be. Can discuss tomorrow!

On todo:
Layout config hints so people can make scroller positions swap.
2009-07-02 18:12:46 +00:00
Campbell Barton
aefa7b626a out own Py_GetPath() function to replace pythons, so we can bundle python modules with blender, #if 0'd for now but having it is useful for testing.
This works by copying /usr/lib/python3.1 to a dir called "python", next to blenders "ui" and "io" dirs.
2009-07-02 12:11:20 +00:00
Ton Roosendaal
d44b341be6 2.5
Python definition of view3d context-depending toolbar. Feel free to edit
it into anything useful. :)
2009-07-02 11:24:27 +00:00
Ton Roosendaal
c7bd0d1248 2.5
More toolbar functionality for workflow review.

- Split the region in two parts, bottom has the Tool Properties, the
  top part shows 2 panels, one for python defined tools, other for a
  "tool shelf" which (later) will get saved in files.
- Added a full context driven framework for this toolbar, showing 
  the tools depending on 3D window 'mode'. Both python defined tools
  as the shelf respect this. So - for example - you will see different
  tools in editmode mesh, as in vertex paint mode, etc.
- First template for the python tools will be committed after this commit;
  it has placeholder tools to just show/test functioning.

NOTE: if you had saved a layout that shows tools region, open/close it
once to get the new region created for properties.

TODO:

- Moving paint properties to tool settings
- Test a layout with horizontal toolbar (without properties)
- Bring back floating panels, and put tool-properties here. (as option)
2009-07-02 11:23:19 +00:00
Brecht Van Lommel
421f44278c 2.5: Lists for vertex groups, shape keys, uvs, vertex colors.
RNA
* Added the relevant active_*_index properties, with proper
  get/set/range, updates and notifiers.
* Context.tool_settings.
* ToolSettings.vertex_group_weight.

Operators
* MESH_OT_uv_texture_add/remove
* MESH_OT_vertex_color_add/remove
* MESH_OT_sticky_add/remove
* OBJECT_OT_vertex_group_add/remove/assign/remove_from/
  select/deselect/copy/copy_to_linked
* OBJECT_OT_shape_key_add/remove

UI
* Some updates and cleanups in list template code.

Known issue: when going in & out of editmode, uv textures and vertex
colors dissappear. I thought me->edit_mesh would be NULL when not in
edit mode but it is not?
2009-07-01 22:25:49 +00:00
Brecht Van Lommel
cda566d646 2.5: Fix a case of using freed memory in event handling. 2009-07-01 22:16:16 +00:00
Campbell Barton
666ce6de80 needed for building with py2 2009-07-01 20:55:32 +00:00
Elia Sarti
594c8802d7 Added support for collection parameters also for RNA_function_call_direct family of functions. The syntax for passing collection parameters is similar to passing pointers where you pass first the RNA type and then the ListBase representing the collection. The format specifier is "C" instead of "O", e.g.
RNA_function_call_direct_lookup(C, reports, ptr, "do_something", "sC", "some string value", &RNA_SomeItemType, listbase); 

Note that from python you could in theory pass collections of items each of a different type while using this API you can't. I don't think this should be a problem as RNA supports collections this way anyway (i.e. where items are all of the same type or inherit from the same base type).

Also a small fix for pointer parameters.
2009-07-01 19:56:50 +00:00
Campbell Barton
1a86cd6dcd slice support working in py3 for Vector and Matrix types.
Added slice to PyRNA collections and arrays (py3 only).

eg.
some_verts = mesh.verts[0:10]
some_rna_array[4:-1] = [0,1,2,3]

Collections dont support assignment, when assigning slices, resizing the array isnt support like with python lists.
2009-07-01 13:31:36 +00:00
Brecht Van Lommel
82055c8217 RNA
* Mesh.add_geometry, Mesh.update and make indices editable. This
  is without checking if they are valid still, no time now to
  implement this.
* Also fix warnings in rna_ui.c, and a bug in CDDM_calc_edges.

Example code:

co = [0.0, 0.0, 0.0] + [1.0, 0.0, 0.0] + [0.0, 1.0, 0.0] + [1.0, 1.0, 0.0]
faces = [0, 1, 2, 0] + [1, 3, 2, 0]

mesh.add_geometry(4, 0, 2)

mesh.verts.foreach_set("co", co)
mesh.faces.foreach_set("verts", faces)

mesh.update()
2009-07-01 12:19:00 +00:00
Nicholas Bishop
0fabb2039b 2.5/Sculpt:
== Re-added smooth stroke ==

UI: toggle is just in the sculpt menu for now. Also changes the sculpt paint cursor slightly, draws a line between previous and current locations.

It's a different implementation than in 2.4, works like this:

The stroke interpolates between the last mouse location and the current location, weighted towards the previous location. If the stroke gets within a certain radius of the current mouse location, the stroke stops. This radius allows for sharp turns in the stroke.

Todo: there are two hard-coded parameters that should become user settable, that's the weighting between previous and current locations, and most important, the no-update radius.

Note also that this option was added as a per-brush flag, worth discussing whether that's the correct place, or whether it should be a sculpt setting like symmetry?

== Improved stroke spacing ==
The previous implementation of stroke spacing simply guaranteed that stroke dots would not occur any closer than the space setting. It now forces stroke dots to always be the specified distance apart.

Todo: Performance gets pretty awful with a small spacing setting, this needs optimization.
2009-06-30 23:06:50 +00:00
Campbell Barton
5403edf8ff disabling foreach_get/set for python2.x, since it uses new buffer api. 2009-06-30 21:59:21 +00:00
Andrea Weikert
60c2599a1a 2.5 filebrowser
* show only name of the last directory for the bookmark
* small fix of projectfile: header BLI_fileops.h was moved
Note: full path should appear in tool tip later, also for renaming bookmarks later on.
2009-06-30 20:34:00 +00:00
Andrea Weikert
406b16e7d1 2.5 MSVC projectfiles
* small maintenance: editors/info_header.c removed, editors/info_ops.c added
2009-06-30 20:31:58 +00:00
Tom Musgrove
03e11e1e55 Reverting changes made for laptop/two button mice - will make the changes available as a patch. 2009-06-30 20:14:53 +00:00
Shaul Kedem
a50dfe7ce4 second part of python2.6 upgrade in cmake, now it will copy the dlls too 2009-06-30 19:29:40 +00:00
Brecht Van Lommel
37864a4273 2.5
Image Window
* Unpack operator now works.
* Some small layout code tweaks.

Info Window Header
* Moved to python UI code.
* template_running_jobs, template_operator_search added.
* Ported external data operators: pack/unpack all, make
  paths relative/absolute, find/report missing files.

Also
* Report RPT_INFO too, not only warnings and errors.
* Run UI handle functions after RNA and Operators.
* Rename particle system add/remove operators, to not
  include "slot", that's only there for materials because
  that's what they are called now in RNA.
2009-06-30 19:20:45 +00:00
Brecht Van Lommel
80ee09bb9a RNA
* Add Image.dirty boolean.
* Added Window struct, with editable Window.screen.
* Make Screen.scene editable.
2009-06-30 19:10:14 +00:00
Andrea Weikert
538da84de0 2.5 filebrowser
* Hide dot operator (HKEY) for theeth
2009-06-30 18:29:30 +00:00
Andrea Weikert
3b0fafa393 2.5 MSVC projectfiles
* moving projectfiles to python 2.6 to avoid recurring issues with python migration
2009-06-30 18:20:45 +00:00
Shaul Kedem
d37a8fb5bf windows cmake uses python26 now, make sure your lib/windows is up to date (requires an additional svn update, in lib/windows 2009-06-30 18:20:12 +00:00
Campbell Barton
30dcada24d python access to RNA arrays.
coords = array.array('f', [0.0]) * len(me.verts) * 3
m.verts.foreach_get('co', coords)

the reverse works with set also.
currently works for python buffers or sequences (slower)

Quick speed test with 1,179,654 verts.

*foreach_get*
list 0.377
array 0.032
py 10.29

*foreach_set*
list 0.184
array 0.028
py 9.79


where python was done like this...
----
 i= 0
 for v in m.verts:
   co = v.co
   l[i] = co[0]; l[i+1] = co[0]; l[i+2] = co[0]
   i+=3
----

some of the error checking here needs to be cleaned up to account for different invalid bad inputs.
2009-06-30 12:52:16 +00:00
Andrea Weikert
0c14be3b58 2.5 file browser
* adding GPL copyright header.
2009-06-30 06:27:48 +00:00
Campbell Barton
f60760e2e2 Python API
Mathutils support for subclassing Vector, Quat, Euler and Matrix types.

Removed C docstrings, prefer to make sure our epydocs are well maintained rather then duplicate, vague doc strings.
Will convert scripts to detect missing docs from the BGE.
2009-06-30 00:42:17 +00:00
Andrea Weikert
da32a0594b 2.5 file browser
* remove '.' and '..' from file browser list. sigh!
* removed delete buttons from automatically added bookmarks (Desktop and Documents)
Note: please check on non-Windows platforms
2009-06-29 23:21:11 +00:00
Andrea Weikert
17d5bfd970 2.5 file browser
* bookmark operators: add and delete bookmark
* first start at menus in file browser: Directory and Bookmarks
* Adding a bookmark via menu or via CTRL+B
* Remove a bookmark with the X button next to it.
2009-06-29 22:16:48 +00:00
Tom Musgrove
84cd5a6cfb This commit adds Alt-LMB as an alternative to MMB, and CTRL-ALT-LMB as an alternative to CTRL-MMB so that laptop users can use 2.5 2009-06-29 21:07:33 +00:00
Andrea Weikert
5e20f57431 2.5 filebrowser
* start of filebrowser RNA 
* system files, bookmarks, etc. now nicely inside panels to allow collapsing etc.
* filebrowser header now defined in space_filebrowser.py

TODO:
* button type for bookmarks etc. not final yet, at least should get centered still. Suggestions welcome here.
2009-06-29 20:23:40 +00:00
Guillermo S. Romero
5d491681e0 Fix compiler warning, make for body explicit. 2009-06-29 19:46:28 +00:00
Brecht Van Lommel
d9b74dcbc9 2.5: fix for compile error after recent search menu commit. 2009-06-29 19:37:09 +00:00
Brecht Van Lommel
e7928dd4b4 RNA
Implementation of RNA side of foreach_get/foreach_set,
Campbell will do python code.

Three functions for efficiently setting some property for all
items in a collection. RNA_property_collection_raw_array gives
access to the properties as an array with length, stride, and
type specified, if this is possible, i.e. not when it uses a
ListBase, or if a manual get/set function is implemented.

Two other functions take a C array pointer and get/set it
using the a collection + property name, using efficient array
access if possible, and otherwise using slower RNA iterator.

RNA_property_collection_raw_get
RNA_property_collection_raw_set

The number of type conversion required here got a bit out of
hand, it could be more efficient still if checking for more
cases, but function is already long enough.


Example: http://www.pasteall.org/6362/c
2009-06-29 19:15:51 +00:00
Campbell Barton
9a7ea9664e BGE PyAPI support for subclassing any BGE game type from python, scripters define extra functions on gameObjects.
Adding a UI to set the type on startup can be added easily.

# ----
class myPlayer(GameTypes.KX_GameObject):
  def die(self):
    # ... do stuff ...
    self.endObject()

# make an instance
player = myPlayer(gameOb) # gameOb is made invalid now.
player.die()

# ----

One limitation (which could also be an advantage), is making the subclass instance will return that subclass everywhere, you cant have 2 different subclasses of the same BGE data at once.
2009-06-29 12:06:46 +00:00
Ton Roosendaal
7ca31bb171 2.5
Search Menu: added feature that on opening, it shows the 
current ID block, and selects it. Same can be used for other
searches, just pass on pointer to active item for the search
callback.

Also fixed arrow triangle draw for search.
2009-06-29 11:29:52 +00:00
Campbell Barton
c50bbe5ae7 BGE Py API using python3 c/api calls. include bpy_compat.h to support py2.x 2009-06-29 02:25:54 +00:00
Ton Roosendaal
bb1f24ac44 2.5
Make include to make GE compile.

Py 2.3 doesnt compile expressions/Value.cpp btw... 
Value.cpp:616: error: 'class PyObjectPlus' has no member named 'ob_type'

Probably need to wait for py 3.1 :)
2009-06-28 18:09:19 +00:00
Ton Roosendaal
13ec1fbfa4 2.5
Starting GE should initialize opengl for the 3d region.
2009-06-28 16:31:20 +00:00
Elia Sarti
5d6485f06e 2.5 / RNA
Return right size for PROP_COLLECTION parameters
2009-06-28 13:41:50 +00:00
Campbell Barton
1b5851b4f9 PyNumberMethods needed ifdefs for python3.x and some other corrections. 2009-06-28 13:27:06 +00:00
Ton Roosendaal
7d88981a24 2.5
Menu usage: enabled arrow-key based browsing, especially for open and
close sublevels. Only thing missing is to prevent sublevel to open
on creating menu (like SHIFT+A now), this is design conflict in code.
(It sends fake mouse move events causing it)

Implementation note; the 'auto open sublevel' feature gets triggered
with new state var, that checks if mouse was used or not.

Also: on render in editmode, editmode result gets stored, as usual for 2.4x.
2009-06-28 12:30:50 +00:00
Elia Sarti
8bf355533e Zeroing listbase result for context data collection get when no data is found.
Caused crash for uninitialized pointers when getting collection data for editors not supporting that member, e.g. "deselect all" operator in non-3dview editors.
2009-06-28 11:37:45 +00:00
Campbell Barton
6b9f3b5f5c BGE Python API
Remove the last of the odd C++/python wrapper code from http://www.python.org/doc/PyCPP.html (~1998)

* Use python subclasses rather then having fake subclassing through get/set attributes calling parent types.
* PyObject getset arrays are created while initializing the types, converted from our own attribute arrays. This way python deals with subclasses and we dont have to define getattro or setattro functions for each type.
* GameObjects and Scenes no longer have attribute access to properties. only dictionary style access - ob['prop']
* remove each class's get/set/dir functions.
* remove isA() methods, can use PyObject_TypeCheck() in C and issubclass() in python.
* remove Parents[] array for each C++ class, was only used for isA() and wasnt correct in quite a few cases.
* remove PyTypeObject that was being passed as the last argument to each class (the parent classes too).

TODO -
* Light and VertexProxy need to be converted to using attributes.
* memory for getset arrays is never freed, not that bad since its will only allocates once.
2009-06-28 11:22:26 +00:00
Ton Roosendaal
6998a0f47b 2.5
Bugfixes:

- Preview Icon for render result crashed, there was still need for a scene
  pointer to be passed on.

- Added quick fix for preventing shaded drawmode to call render while
  rendering is in progress. It crashes badly.
  Rendering while UI is alive is still in probation, most UI stuff will
  probably get blocked, with exception from inspecting buttons and using
  the image window.
2009-06-28 09:35:37 +00:00
Andrea Weikert
2fac3f3550 2.5 MSVC 9 projectfiles
* added missing include to KX_blenderhook project
2009-06-28 07:26:16 +00:00
Campbell Barton
7271f86be5 removed un-needed hack, something weired was going on when debugging that made the pointers to these functions change after initialization. 2009-06-28 02:47:49 +00:00
Campbell Barton
388e59a768 BGE Fix for no redrawing.
Was caused by un-initialized engine ticrate, do_versions was working on 2.4x but isnt in 2.5 so just add a zero check when getting from the world.
2009-06-28 02:37:07 +00:00
Campbell Barton
aa933d2c9f BGE Redraw problem:
at the moment only files from blender 2.4x will display in 2.5x, compared area and window structs in both cases and dont see any differences.

This doesnt fix the problem but corrects a few things related to window drawing with the BGE,
also adds a hack because I noticed the window and area pointers in the KX_BlenderCanvas were offset after initialized, maybe need to use <static cast> ?
2009-06-27 23:54:20 +00:00