Revision: 28615
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28615
Author:   dfelinto
Date:     2010-05-06 14:01:44 +0200 (Thu, 06 May 2010)

Log Message:
-----------
Logic UI: actuators - action+rna 100%, sound 100%, constraint+rna 50%

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.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_logic/logic_window.c
    trunk/blender/source/blender/makesdna/DNA_actuator_types.h
    trunk/blender/source/blender/makesrna/intern/rna_actuator.c

Modified: trunk/blender/source/blender/editors/space_logic/logic_window.c
===================================================================
--- trunk/blender/source/blender/editors/space_logic/logic_window.c     
2010-05-06 11:49:26 UTC (rev 28614)
+++ trunk/blender/source/blender/editors/space_logic/logic_window.c     
2010-05-06 12:01:44 UTC (rev 28615)
@@ -3544,7 +3544,32 @@
 
 static void draw_actuator_action(uiLayout *layout, PointerRNA *ptr)
 {
-       //XXXACTUATOR
+       uiLayout *row;
+
+       row= uiLayoutRow(layout, 0);
+       uiItemR(row, ptr, "mode", 0, NULL, 0);
+       uiItemR(row, ptr, "action", 0, NULL, 0);
+       uiItemR(row, ptr, "continue_last_frame", 0, NULL, 0);
+
+       row= uiLayoutRow(layout, 0);
+       if((RNA_enum_get(ptr, "mode") == ACT_ACTION_FROM_PROP))
+               uiItemR(row, ptr, "property", 0, NULL, 0);
+
+       else {
+               uiItemR(row, ptr, "frame_start", 0, NULL, 0);
+               uiItemR(row, ptr, "frame_end", 0, NULL, 0);
+       }
+
+       row= uiLayoutRow(layout, 0);
+       uiItemR(row, ptr, "blendin", 0, NULL, 0);
+       uiItemR(row, ptr, "priority", 0, NULL, 0);
+
+       row= uiLayoutRow(layout, 0);
+       uiItemR(row, ptr, "frame_property", 0, NULL, 0);
+
+#ifdef __NLA_ACTION_BY_MOTION_ACTUATOR
+       uiItemR(row, "stride_length", 0, NULL, 0);
+#endif
 }
 
 static void draw_actuator_armature(uiLayout *layout, PointerRNA *ptr)
@@ -3599,6 +3624,90 @@
 
 static void draw_actuator_constraint(uiLayout *layout, PointerRNA *ptr)
 {
+       uiLayout *row, *subrow, *split;
+
+       uiItemR(layout, ptr, "mode", 0, NULL, 0);
+       switch (RNA_enum_get(ptr, "mode"))
+       {
+               case ACT_CONST_TYPE_LOC:
+                       uiItemR(layout, ptr, "limit", 0, NULL, 0);
+
+                       switch(RNA_enum_get(ptr, "limit")){
+                               case ACT_CONST_LOCX:
+                                       row = uiLayoutRow(layout, 1);
+                                       uiItemR(row, ptr, "limit_loc_min_x", 0, 
NULL, 0);
+                                       uiItemR(row, ptr, "limit_loc_max_x", 0, 
NULL, 0);
+                                       break;
+
+                               case ACT_CONST_LOCY:
+                                       row = uiLayoutRow(layout, 1);
+                                       uiItemR(row, ptr, "limit_loc_min_y", 0, 
NULL, 0);
+                                       uiItemR(row, ptr, "limit_loc_max_y", 0, 
NULL, 0);
+                                       break;
+
+                               case ACT_CONST_LOCZ:
+                                       row = uiLayoutRow(layout, 1);
+                                       uiItemR(row, ptr, "limit_loc_min_z", 0, 
NULL, 0);
+                                       uiItemR(row, ptr, "limit_loc_max_z", 0, 
NULL, 0);
+                                       break;
+                       }
+                       uiItemR(layout, ptr, "damping", UI_ITEM_R_SLIDER, NULL, 
0);
+                       break;
+
+               case ACT_CONST_TYPE_DIST:
+                       uiItemR(layout, ptr, "direction", 0, NULL, 0);//move to 
the right
+                       if(RNA_enum_get(ptr, "direction")!=0)
+                               uiItemR(layout, ptr, "force_distance", 0, NULL, 
0);
+
+                       switch(RNA_enum_get(ptr, "direction")){
+                               case ACT_CONST_DIRPX:
+                               case ACT_CONST_DIRNX:
+                                       row = uiLayoutRow(layout, 0);
+                                       uiItemR(row, ptr, "range_x", 0, NULL, 
0);
+                                       subrow = uiLayoutRow(row, 0);
+                                       uiLayoutSetActive(subrow, 
RNA_boolean_get(ptr, "force_distance")==1);
+                                       uiItemR(subrow, ptr, "distance_x", 0, 
NULL, 0);
+                                       break;
+
+                               case ACT_CONST_DIRPY:
+                               case ACT_CONST_DIRNY:
+                                       row = uiLayoutRow(layout, 0);
+                                       uiItemR(row, ptr, "range_y", 0, NULL, 
0);
+                                       subrow = uiLayoutRow(row, 0);
+                                       uiLayoutSetActive(subrow, 
RNA_boolean_get(ptr, "force_distance")==1);
+                                       uiItemR(subrow, ptr, "distance_y", 0, 
NULL, 0);
+                                       break;
+
+                               case ACT_CONST_DIRPZ:
+                               case ACT_CONST_DIRNZ:
+                                       row = uiLayoutRow(layout, 0);
+                                       uiItemR(row, ptr, "range_z", 0, NULL, 
0);
+                                       subrow = uiLayoutRow(row, 0);
+                                       uiLayoutSetActive(subrow, 
RNA_boolean_get(ptr, "force_distance")==1);
+                                       uiItemR(subrow, ptr, "distance_z", 0, 
NULL, 0);
+                                       break;
+                       }
+                       uiItemR(layout, ptr, "damping", UI_ITEM_R_SLIDER , 
NULL, 0);
+                       split = uiLayoutSplit(layout, 0.15, 0);
+                       uiItemR(split, ptr, "detect_material", 
UI_ITEM_R_TOGGLE, NULL, 0);
+
+                       if (RNA_boolean_get(ptr, "detect_material"))
+                               uiItemR(split, ptr, "material", 0, NULL, 0);
+                       else
+                               uiItemR(split, ptr, "property", 0, NULL, 0);
+
+                       uiItemR(layout, ptr, "damping_rotation", 
UI_ITEM_R_SLIDER, NULL, 0);
+                       break;
+
+               case ACT_CONST_TYPE_ORI:
+                       uiItemL(layout, "to be done", 0);
+                       break;
+
+               case ACT_CONST_TYPE_FH:
+                       uiItemL(layout, "to be done", 0);
+                       break;
+       }
+
        //XXXACTUATOR STILL HAVE TO DO THE RNA
 }
 
@@ -3951,9 +4060,41 @@
 #endif
 }
 
-static void draw_actuator_sound(uiLayout *layout, PointerRNA *ptr)
+static void draw_actuator_sound(uiLayout *layout, PointerRNA *ptr, bContext *C)
 {
-       //XXXACTUATOR
+       uiLayout *row, *box;
+
+       uiTemplateID(layout, C, ptr, "sound", NULL, "SOUND_OT_open", NULL);
+       if (!RNA_pointer_get(ptr, "sound").data)
+       {
+               uiItemL(layout, "Select a sound from the list or load a new 
one", 0);
+               return;
+       }
+       uiItemR(layout, ptr, "mode", 0, NULL, 0);
+
+       row = uiLayoutRow(layout, 0);
+       uiItemR(row, ptr, "volume", 0, NULL, 0);
+       uiItemR(row, ptr, "pitch", 0, NULL, 0);
+
+       uiItemR(layout, ptr, "enable_sound_3d", UI_ITEM_R_TOGGLE, NULL, 0);
+       box = uiLayoutBox(layout);
+       uiLayoutSetActive(box, RNA_boolean_get(ptr, "enable_sound_3d")==1);
+
+       row = uiLayoutRow(box, 0);
+       uiItemR(row, ptr, "minimum_gain_3d", 0, NULL, 0);
+       uiItemR(row, ptr, "maximum_gain_3d", 0, NULL, 0);
+
+       row = uiLayoutRow(box, 0);
+       uiItemR(row, ptr, "reference_distance_3d", 0, NULL, 0);
+       uiItemR(row, ptr, "max_distance_3d", 0, NULL, 0);
+
+       row = uiLayoutRow(box, 0);
+       uiItemR(row, ptr, "rolloff_factor_3d", 0, NULL, 0);
+       uiItemR(row, ptr, "cone_outer_gain_3d", 0, NULL, 0);
+
+       row = uiLayoutRow(box, 0);
+       uiItemR(row, ptr, "cone_outer_angle_3d", 0, NULL, 0);
+       uiItemR(row, ptr, "cone_inner_angle_3d", 0, NULL, 0);
 }
 
 static void draw_actuator_state(uiLayout *layout, PointerRNA *ptr)
@@ -3971,7 +4112,7 @@
        uiItemR(row, ptr, "children", 0, NULL, 0);
 }
 
-void draw_brick_actuator(uiLayout *layout, PointerRNA *ptr)
+void draw_brick_actuator(uiLayout *layout, PointerRNA *ptr, bContext *C)
 {
        uiLayout *box;
        
@@ -4027,7 +4168,7 @@
                        draw_actuator_shape_action(box, ptr);
                        break;
                case ACT_SOUND:
-                       draw_actuator_sound(box, ptr);
+                       draw_actuator_sound(box, ptr, C);
                        break;
                case ACT_STATE:
                        draw_actuator_state(box, ptr);
@@ -4287,7 +4428,7 @@
                                draw_actuator_header(col, &ptr);
                                
                                /* draw the brick contents */
-                               draw_brick_actuator(col, &ptr);
+                               draw_brick_actuator(col, &ptr, C);
                                
                        }
                }

Modified: trunk/blender/source/blender/makesdna/DNA_actuator_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_actuator_types.h  2010-05-06 
11:49:26 UTC (rev 28614)
+++ trunk/blender/source/blender/makesdna/DNA_actuator_types.h  2010-05-06 
12:01:44 UTC (rev 28615)
@@ -351,6 +351,7 @@
 #define ACT_PROP_TOGGLE                3
 
 /* constraint flag */
+#define ACT_CONST_NONE         0
 #define ACT_CONST_LOCX         1
 #define ACT_CONST_LOCY         2
 #define ACT_CONST_LOCZ         4

Modified: trunk/blender/source/blender/makesrna/intern/rna_actuator.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_actuator.c 2010-05-06 
11:49:26 UTC (rev 28614)
+++ trunk/blender/source/blender/makesrna/intern/rna_actuator.c 2010-05-06 
12:01:44 UTC (rev 28615)
@@ -27,7 +27,7 @@
 #include "RNA_define.h"
 
 #include "rna_internal.h"
-
+#include "DNA_object_types.h"
 #include "DNA_actuator_types.h"
 #include "DNA_scene_types.h" // for MAXFRAME
 
@@ -54,6 +54,14 @@
        {ACT_VISIBILITY, "VISIBILITY", 0, "Visibility", ""},
        {0, NULL, 0, NULL, NULL}};
 
+EnumPropertyItem edit_object_type_items[] ={
+       {ACT_EDOB_ADD_OBJECT, "ADDOBJECT", 0, "Add Object", ""},
+       {ACT_EDOB_END_OBJECT, "ENDOBJECT", 0, "End Object", ""},
+       {ACT_EDOB_REPLACE_MESH, "REPLACEMESH", 0, "Replace Mesh", ""},
+       {ACT_EDOB_TRACK_TO, "TRACKTO", 0, "Track to", ""},
+       {ACT_EDOB_DYNAMICS, "DYNAMICS", 0, "Dynamics", ""},
+       {0, NULL, 0, NULL, NULL} };
+
 #ifdef RNA_RUNTIME
 
 #include "BKE_sca.h"
@@ -63,6 +71,8 @@
        bActuator *actuator= (bActuator*)ptr->data;
 
        switch(actuator->type) {
+               case ACT_ACTION:
+                       return &RNA_ActionActuator;
                case ACT_OBJECT:
                        return &RNA_ObjectActuator;
                case ACT_IPO:
@@ -101,6 +111,18 @@
                        return &RNA_Actuator;
        }
 }
+//
+//static StructRNA* rna_ActionActuator_refine(struct PointerRNA *ptr)
+//{
+//     bActuator *actuator= (bActuator*)ptr->data;
+//
+//     switch(actuator->type) {
+//             case ACT_ACTION:
+//                     return &RNA_ActionActuator;
+//             case ACT_SHAPEACTION:
+//                     return &RNA_ShapeActionActuator;
+//     }
+//}
 
 static void rna_Actuator_type_update(Main *bmain, Scene *scene, PointerRNA 
*ptr)
 {
@@ -118,7 +140,65 @@
        oa->forcerot[0] = 60.0f*oa->forcerot[1];
 }
 
+static EnumPropertyItem *rna_EditObjectActuator_mode_itemf(bContext *C, 
PointerRNA *ptr, int *free)
+{
+       EnumPropertyItem *item= NULL;
+       Object *ob = (Object *)ptr->id.data;
 
+       int totitem= 0;
+       if (ob->type!=OB_ARMATURE)
+       {
+               RNA_enum_items_add_value(&item, &totitem, 
edit_object_type_items, ACT_EDOB_REPLACE_MESH);
+               RNA_enum_items_add_value(&item, &totitem, 
edit_object_type_items, ACT_EDOB_DYNAMICS);
+       }
+
+       RNA_enum_items_add_value(&item, &totitem, edit_object_type_items, 
ACT_EDOB_ADD_OBJECT);
+       RNA_enum_items_add_value(&item, &totitem, edit_object_type_items, 
ACT_EDOB_END_OBJECT);
+       RNA_enum_items_add_value(&item, &totitem, edit_object_type_items, 
ACT_EDOB_TRACK_TO);
+       
+       RNA_enum_item_end(&item, &totitem);
+       *free= 1;
+       
+       return item;
+}
+
+static EnumPropertyItem *rna_Actuator_type_itemf(bContext *C, PointerRNA *ptr, 
int *free)
+{
+       EnumPropertyItem *item= NULL;
+       Object *ob = (Object *)ptr->id.data;
+
+       int totitem= 0;
+       if (ob->type==OB_ARMATURE)
+       {
+               RNA_enum_items_add_value(&item, &totitem, actuator_type_items, 
ACT_ACTION);
+               RNA_enum_items_add_value(&item, &totitem, actuator_type_items, 
ACT_ARMATURE);
+       }
+       else
+               RNA_enum_items_add_value(&item, &totitem, actuator_type_items, 
ACT_SHAPEACTION);
+
+       RNA_enum_items_add_value(&item, &totitem, actuator_type_items, 
ACT_CAMERA);
+       RNA_enum_items_add_value(&item, &totitem, actuator_type_items, 
ACT_CONSTRAINT);
+       RNA_enum_items_add_value(&item, &totitem, actuator_type_items, 
ACT_EDIT_OBJECT);
+       RNA_enum_items_add_value(&item, &totitem, actuator_type_items, 
ACT_2DFILTER);
+       RNA_enum_items_add_value(&item, &totitem, actuator_type_items, 
ACT_GAME);
+       RNA_enum_items_add_value(&item, &totitem, actuator_type_items, ACT_IPO);
+       RNA_enum_items_add_value(&item, &totitem, actuator_type_items, 
ACT_MESSAGE);
+       RNA_enum_items_add_value(&item, &totitem, actuator_type_items, 
ACT_OBJECT);
+       RNA_enum_items_add_value(&item, &totitem, actuator_type_items, 
ACT_PARENT);
+       RNA_enum_items_add_value(&item, &totitem, actuator_type_items, 
ACT_PROPERTY);
+
+       RNA_enum_items_add_value(&item, &totitem, actuator_type_items, 
ACT_RANDOM);

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to