diff options
Diffstat (limited to 'source/blender/editors/space_logic')
-rw-r--r-- | source/blender/editors/space_logic/logic_window.c | 86 |
1 files changed, 60 insertions, 26 deletions
diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index 4ab2511fcd2..005ebfb5b88 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -678,7 +678,7 @@ static char *actuator_name(int type) case ACT_OBJECT: return "Motion"; case ACT_IPO: - return "Ipo"; + return "F-Curve"; case ACT_LAMP: return "Lamp"; case ACT_CAMERA: @@ -706,7 +706,7 @@ static char *actuator_name(int type) case ACT_VISIBILITY: return "Visibility"; case ACT_2DFILTER: - return "2D Filter"; + return "Filter 2D"; case ACT_PARENT: return "Parent"; case ACT_STATE: @@ -912,8 +912,15 @@ static ID **get_selected_and_linked_obs(bContext *C, short *count, short scavisf ob= G.main->object.first; nr= 0; + + /* make the active object always the first one of the list */ + if (obact) { + idar[0]= (ID *)obact; + nr++; + } + while(ob) { - if( ob->scavisflag ) { + if( (ob->scavisflag) && (ob != obact)) { idar[nr]= (ID *)ob; nr++; } @@ -3178,13 +3185,19 @@ static int is_sensor_linked(uiBlock *block, bSensor *sens) static void draw_sensor_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *logic_ptr) { uiLayout *box, *row, *subrow; + bSensor *sens= (bSensor *)ptr->data; box= uiLayoutBox(layout); row= uiLayoutRow(box, 0); uiItemR(row, ptr, "expanded", UI_ITEM_R_NO_BG, "", 0); - uiItemR(row, ptr, "type", 0, "", 0); - uiItemR(row, ptr, "name", 0, "", 0); + if(RNA_boolean_get(ptr, "expanded")) { + uiItemR(row, ptr, "type", 0, "", 0); + uiItemR(row, ptr, "name", 0, "", 0); + } else { + uiItemL(row, sensor_name(sens->type), 0); + uiItemL(row, sens->name, 0); + } subrow= uiLayoutRow(row, 0); uiLayoutSetActive(subrow, ((RNA_boolean_get(logic_ptr, "sensors_show_active_states") @@ -3192,8 +3205,9 @@ static void draw_sensor_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *lo uiItemR(subrow, ptr, "pinned", UI_ITEM_R_NO_BG, "", 0); if(RNA_boolean_get(ptr, "expanded")==0) { - uiItemEnumO(row, "LOGIC_OT_sensor_move", "", ICON_TRIA_UP, "direction", 1); // up - uiItemEnumO(row, "LOGIC_OT_sensor_move", "", ICON_TRIA_DOWN, "direction", 2); // down + subrow= uiLayoutRow(row, 1); + uiItemEnumO(subrow, "LOGIC_OT_sensor_move", "", ICON_TRIA_UP, "direction", 1); // up + uiItemEnumO(subrow, "LOGIC_OT_sensor_move", "", ICON_TRIA_DOWN, "direction", 2); // down } uiItemO(row, "", ICON_X, "LOGIC_OT_sensor_remove"); @@ -3518,27 +3532,35 @@ void draw_brick_sensor(uiLayout *layout, PointerRNA *ptr, bContext *C) } /* Controller code */ -static void draw_controller_header(uiLayout *layout, PointerRNA *ptr) +static void draw_controller_header(uiLayout *layout, PointerRNA *ptr, int xco, int width, int yco) { - uiLayout *box, *row; + uiLayout *box, *row, *subrow; + bController *cont= (bController *)ptr->data; + char name[3]; //XXX provisorly for state number box= uiLayoutBox(layout); row= uiLayoutRow(box, 0); uiItemR(row, ptr, "expanded", UI_ITEM_R_NO_BG, "", 0); - uiItemR(row, ptr, "type", 0, "", 0); - uiItemR(row, ptr, "name", 0, "", 0); + if(RNA_boolean_get(ptr, "expanded")) { + uiItemR(row, ptr, "type", 0, "", 0); + uiItemR(row, ptr, "name", 0, "", 0); + } else { + uiItemL(row, controller_name(cont->type), 0); + uiItemL(row, cont->name, 0); + } - /* XXX provisory: state number */ - sprintf(name, "%d", RNA_int_get(ptr, "state_number")); - uiItemL(row, name, 0); + /* XXX provisory for Blender 2.50Beta */ + sprintf(name, "%d", RNA_int_get(ptr, "state")); + uiDefBlockBut(uiLayoutGetBlock(layout), controller_state_mask_menu, cont, name, (short)(xco+width-44), yco, 22+22, UI_UNIT_Y, "Set controller state index (from 1 to 30)"); uiItemR(row, ptr, "priority", 0, "", 0); if(RNA_boolean_get(ptr, "expanded")==0) { - uiItemEnumO(row, "LOGIC_OT_controller_move", "", ICON_TRIA_UP, "direction", 1); // up - uiItemEnumO(row, "LOGIC_OT_controller_move", "", ICON_TRIA_DOWN, "direction", 2); // down + subrow= uiLayoutRow(row, 1); + uiItemEnumO(subrow, "LOGIC_OT_controller_move", "", ICON_TRIA_UP, "direction", 1); // up + uiItemEnumO(subrow, "LOGIC_OT_controller_move", "", ICON_TRIA_DOWN, "direction", 2); // down } uiItemO(row, "", ICON_X, "LOGIC_OT_controller_remove"); } @@ -3606,13 +3628,19 @@ void draw_brick_controller(uiLayout *layout, PointerRNA *ptr) static void draw_actuator_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *logic_ptr) { uiLayout *box, *row, *subrow; + bActuator *act= (bActuator *)ptr->data; box= uiLayoutBox(layout); row= uiLayoutRow(box, 0); uiItemR(row, ptr, "expanded", UI_ITEM_R_NO_BG, "", 0); - uiItemR(row, ptr, "type", 0, "", 0); - uiItemR(row, ptr, "name", 0, "", 0); + if(RNA_boolean_get(ptr, "expanded")) { + uiItemR(row, ptr, "type", 0, "", 0); + uiItemR(row, ptr, "name", 0, "", 0); + } else { + uiItemL(row, actuator_name(act->type), 0); + uiItemL(row, act->name, 0); + } subrow= uiLayoutRow(row, 0); uiLayoutSetActive(subrow, ((RNA_boolean_get(logic_ptr, "actuators_show_active_states") @@ -3620,8 +3648,9 @@ static void draw_actuator_header(uiLayout *layout, PointerRNA *ptr, PointerRNA * uiItemR(subrow, ptr, "pinned", UI_ITEM_R_NO_BG, "", 0); if(RNA_boolean_get(ptr, "expanded")==0) { - uiItemEnumO(row, "LOGIC_OT_actuator_move", "", ICON_TRIA_UP, "direction", 1); // up - uiItemEnumO(row, "LOGIC_OT_actuator_move", "", ICON_TRIA_DOWN, "direction", 2); // down + subrow= uiLayoutRow(row, 1); + uiItemEnumO(subrow, "LOGIC_OT_actuator_move", "", ICON_TRIA_UP, "direction", 1); // up + uiItemEnumO(subrow, "LOGIC_OT_actuator_move", "", ICON_TRIA_DOWN, "direction", 2); // down } uiItemO(row, "", ICON_X, "LOGIC_OT_actuator_remove"); } @@ -4249,7 +4278,7 @@ static void draw_actuator_sound(uiLayout *layout, PointerRNA *ptr, bContext *C) { uiLayout *row, *col; - uiTemplateID(layout, C, ptr, "sound", NULL, "SOUND_OT_open", NULL); + uiTemplateID(layout, C, ptr, "sound", NULL, "SOUND_OT_open", NULL, NULL); if (!RNA_pointer_get(ptr, "sound").data) { uiItemL(layout, "Select a sound from the list or load a new one", 0); @@ -4377,6 +4406,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar) { SpaceLogic *slogic= CTX_wm_space_logic(C); Object *ob= CTX_data_active_object(C); + Object *act_ob= ob; ID **idar; PointerRNA logic_ptr, settings_ptr; @@ -4470,7 +4500,8 @@ static void logic_buttons_new(bContext *C, ARegion *ar) row = uiLayoutRow(split, 1); uiDefButBitS(block, TOG, OB_SHOWCONT, B_REDR, ob->id.name+2,(short)(xco-10), yco, (short)(width-30), UI_UNIT_Y, &ob->scaflag, 0, 31, 0, 0, "Object name, click to show/hide controllers"); - uiItemMenuEnumO(row, "LOGIC_OT_controller_add", "type", "Add Controller", 0); + if (ob == act_ob) + uiItemMenuEnumO(row, "LOGIC_OT_controller_add", "type", "Add Controller", 0); if (RNA_boolean_get(&settings_ptr, "show_state_panel")) { @@ -4523,8 +4554,9 @@ static void logic_buttons_new(bContext *C, ARegion *ar) uiLayoutSetContextPointer(col, "controller", &ptr); /* should make UI template for controller header.. function will do for now */ - draw_controller_header(col, &ptr); - +// draw_controller_header(col, &ptr); + draw_controller_header(col, &ptr, xco, width, yco); //provisory for 2.50 beta + /* draw the brick contents */ draw_brick_controller(col, &ptr); @@ -4563,7 +4595,8 @@ static void logic_buttons_new(bContext *C, ARegion *ar) row = uiLayoutRow(layout, 1); uiDefButBitS(block, TOG, OB_SHOWSENS, B_REDR, ob->id.name+2,(short)(xco-10), yco, (short)(width-30), UI_UNIT_Y, &ob->scaflag, 0, 31, 0, 0, "Object name, click to show/hide sensors"); - uiItemMenuEnumO(row, "LOGIC_OT_sensor_add", "type", "Add Sensor", 0); + if (ob == act_ob) + uiItemMenuEnumO(row, "LOGIC_OT_sensor_add", "type", "Add Sensor", 0); if ((ob->scaflag & OB_SHOWSENS) == 0) continue; @@ -4628,7 +4661,8 @@ static void logic_buttons_new(bContext *C, ARegion *ar) row = uiLayoutRow(layout, 1); uiDefButBitS(block, TOG, OB_SHOWACT, B_REDR, ob->id.name+2,(short)(xco-10), yco, (short)(width-30), UI_UNIT_Y, &ob->scaflag, 0, 31, 0, 0, "Object name, click to show/hide actuators"); - uiItemMenuEnumO(row, "LOGIC_OT_actuator_add", "type", "Add Actuator", 0); + if (ob == act_ob) + uiItemMenuEnumO(row, "LOGIC_OT_actuator_add", "type", "Add Actuator", 0); if ((ob->scaflag & OB_SHOWACT) == 0) continue; |