Extra comments related bugs:
1)"actuators_show_active_states" doesn't seem to produce any effect (maybe because PIN is not implemented yet? therefore it's always on?
2)If you set the name to be bigger than 32 it will crashes blender (somehow for s/c/a the get function instead of using the defined 32 maxlen it's using 160 (from UserPrerencesFilePaths_python_scriptsdirectory_get ),
3)properties currently can have the same name as s/c/a and they shouldn't.
4)we need an option to show and/or set the STATE of a given controller (in 2.49 it's the number by the controller name)
http://www.pasteall.org/pic/show.php?id=3255
New design, with an option to hide/unhide it.
Matt:
1) the way I managed to have the I selected is kind of nasty :) but I think it will have to wait for proper icons.
2) the ALL is so far only working visually, It's still have to change the code to make all sensors and actuators visible when ALL is on. I think this is better than actually marking all states as before (2.49). Maybe it's even nicer nice to have not only have the states disactivated (in gray as they are now), but also to show them as temporary marked. Is that interesting/possible?
3) Can't centralize it :(
4) I think you are right, the icons are nice, but uninformative ... for someone else curious:
http://www.pasteall.org/pic/show.php?id=3254
Also: extra set funcs, layout adjustments
The patch for the subversion commit was getting too big, and it will be hard to distinguish what was essentially do_version + DNA changes and what was layout adjustments.
So this is the first part of the commit. The next may take a bit more because I'm not so confident in my readfile changes.
I based this code on drawnode, so I hope this is the right way of doing this.
Working Sensors:
- keyboard
- property
Working Actuators:
- property (partly)
- ipo
- action
- shape action
- message
- random
Need help with:
- actuator sensor
- property actuator (for the second object)
- touch/ray/collision sensors + constraint actuator
(for the material lookup, not the property one)
maybe a doversion + changing the type to material work better here
(as we have in touch sensor)
+ added notifier for the game property.
there are some cases (i.e. Constraint Actuator) where the same DNA property is being used by different RNAs with different ranges.
It's easy to change (reset the values to their default in the set func of the constrant type rna).
Not sure it's necessary though.
* get/set funcs
* unifying rna_props for Constraint Actuator
* Collision sensor
* Ray sensor
* State Actuator
* We need icons! at least one for Sensor, one for Controller and one for Actuator
* Layout artists:
Keyboard sensor really need some help :)
The other as well. I mainly copied the layout from 2.49 with some adjustments here and there.
* some get/set functions in rna_actuator.c are exactly the same (e.g. rna_ConstraintActuator_range_get, rna_ConstraintActuator_spring_get) and other could be easily distributed. maybe something for later.
- 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.