- s/c/a type enum update function replaced by set function
- rna_Sensor_type_itemf and rna_Actuators_type_itemf implemented (but not working ... it was working yesterday before I updated the set func, so need further investigation). Matt, if you have any clue on that ...
Roadmap:
i) I definitively gotta unify the maxloc, minloc rna properties.
the way it's right now (based on 2.49 makes the layout code really clunky
ii) - actuator missing - State Actuator (I'll probably need help on that).
iii) - sensor missing - collision and ray (they are partly implemented, but the enums are a mess there).
iv) - get/set funcs missing (not many) and default values (not many)
v) - have more lookup functions for properties and material (I'll definitively need help on that).
Eventually will fix (iii, iv and v) changing bge and dna code and doing a subversion/do_version.
Notes:
1) I had to pass Context to the draw_actuator_sound in order to access the open_sound_operator
uiTemplateID(layout, C, ptr, "sound", NULL, "SOUND_OT_open", NULL);
According to Campbell they are better ways to do that (mdef bind for reference). but for now it works.
2) for the record: action actuator is equal to shape actuator (but runs in armature)
3) in Constraint Actuator I think I should unify all the limit_loc_max_, loc_min, ... properties. I was thinking about replacing it with a single limit_loc_max, limit_loc_min, range, distance, and use get/set funcs to find the correct one.
* Re-structured code (can delete the old function entirely when this is done)
* Fixed links/inlinks
* Fixed some bugs in add and remove controller/actuator
* Cleaned up some ui layouts
* Use key event types in keyboard sensor
* Implemented object controller 'state' in RNA/layout engine (still needs tweaks)
* Matt, I'm marking some "property" rna properties that will need some speacial lookup.
Talking with Campbell we thought that it will be nice to have the lookup with autocomplete for the properties, but giving you the freedom to type whatever prop_name you want (so you can use python created properties).
That way we would still store it as a string.
Whenever the property doesn't exist (or was renamed, therefore can't be found) the property name tints in red ...
Is that possible?
* Matt: in draw_actuator_random I used a uiItemL for one of the modes. Is there another way to do that (having the label in the rna file?). I noticed draw_nodes has some cases of that as well.
* Andrea, the actuator_game property filename (in rna_actuator) is the one that needs to open the filebrowser but saving the result as relative path (or to have relative path as the default in this case)
To test use debug mode > 0 (Ctrl+Alt+D)
* primarly the goal is to put all the bricks there, and then to worry about the proper layout
* sensor header added (need to be more compressed). Also checkbox will not work that well here in my opinion.
we need to see what can be used instead (icons?)
* sensors, and actuators in alphabetical order
* a lot of sensors using the rna (//XXXSENSOR in the ones not using it)
* the logic_window.c code for controller and actuator is there only to display the draw functions for controller and actuators. But the code it's a really bad copy of the sensor code, so it will be fixed later (Matt? :)
* I would love if the non-expanded mode were more compact, more like in 2.49 (the name non-editable).
but this is the kind of think we can worry in the end.
Also instead of "move up/move down" it would be nice to drag/drop the sensors/controllers/actuators
* to do: rna_actuators: to rename type to mode for the enum
This commit puts the ground work in place, swapping out the crusty old Logic Editor
UI code for the new RNA-based layout engine. It's disabled with ifdefs at the moment
because it's incomplete, but Dalai can now do the grunt work to fill it all out and get it running.
Also includes a bug fix to LINK buttons, and two new logic operators to add and delete sensors.
Dalai, just switch the #if 0 and #if 1 in logic_window.c:3412 and 3469
Only source/blender/editors/ dir, should not give errors on different platforms
Only removing: UI_*.h, ED_*.h, WM_*.h, DNA_*.h, IMB_*.h, RNA_*.h, PIL_*.h
New Actuators done:
* OBJECT (aka MOTION)
* SOUND
* PROPERTY
* CONSTRAINT
* EDIT_OBJECT
* ACTION
* STATE
* ARMATURE
Actuators to be done:
* CONSTRAINT
* EDIT_OBJECT
* SHAPE_ACTION
Actuators done already:
* IPO
* CAMERA
* SCENE
* RANDOM
* MESSAGE
* GAME
* VISIBILITY
* TWODFILTER
* PARENT
once again: feedback is appreciated.
+ some typos
+ some DNA padding
Thanks for Mitchell Stokes (Moguri) for his patch on that. It saved me some time on the ENUMs and some actuator descriptions :)
* utility function BLI_findstring to avoid listbase lookup loops everywhere.
eg:
ListBase *lb= objects= &CTX_data_main(C)->object;
Object *ob= BLI_findstring(lb, name, offsetof(ID, name) + 2);
* made some more math functions use const's, (fix warnings I made in previous commits)
* Removed some legacy code which is not needed anymore now.
* Move some test_*poin_but functions to logic space code,
since that's the only place using it still.
* uiIconFromID now uses RNA info to lookup the icon, to avoid
code duplication, and means it works for more ID types.
- 'center', while Ctrl is held select objects from their center location
- 'enumerate', while Alt is held, give a list of objects under the mouse
- Object selection menu now uses icons with names
- operator object.select_name(name, extend=False)
- keybindings so combinations of Ctrl/Alt/Shift can be used (like in 2.4x)
- logic text input field was using deprecated ID_SCRIPT rather then ID_TXT
details
- added comments to DNA_ID.h ID types
- removed unused ID types Sector and Life
- added uiIconFromID() to get an icon from the object.
- using name for selection is weak but currently there isnt a really good way to do this.
- made actuators and sensors 300 wide (like they were in 2.4x, someone must have changed that). The layout didnt take advantage of the extra width and it looked odd.
Logic editing back!
Test screenie:
http://download.blender.org/institute/rt9.jpg
I gave the buttons a bit more width, added nicer linkline draw.
Not working yet:
- theme colors for sensor/actuator types (was old button colors)
- moving sensors up/down (used bad pupmenu... better is icons like
used for modifiers)
- Linkline mouse-over select. Currently deleting a link goes by
drawing the same line again.
Needs to be fully tested for functionality too, leave that to the GE
department. :)
I noted there's bad button hacking with reading button values,
like check_state_mask(). uiBut structure was not meant to be exported
outside of interface module.