Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/editors/include/ED_logic.h36
-rw-r--r--source/blender/editors/interface/interface_handlers.c2
-rw-r--r--source/blender/editors/space_api/spacetypes.c1
-rw-r--r--source/blender/editors/space_logic/logic_intern.h1
-rw-r--r--source/blender/editors/space_logic/logic_ops.c196
-rw-r--r--source/blender/editors/space_logic/logic_window.c117
-rw-r--r--source/blender/makesrna/RNA_access.h1
-rw-r--r--source/blender/makesrna/RNA_enum_types.h2
-rw-r--r--source/blender/makesrna/intern/rna_sensor.c55
-rw-r--r--source/blender/makesrna/intern/rna_space.c22
10 files changed, 411 insertions, 22 deletions
diff --git a/source/blender/editors/include/ED_logic.h b/source/blender/editors/include/ED_logic.h
new file mode 100644
index 00000000000..eff94229ef8
--- /dev/null
+++ b/source/blender/editors/include/ED_logic.h
@@ -0,0 +1,36 @@
+/**
+ * $Id: ED_armature.h 28425 2010-04-26 06:35:25Z aligorith $
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * Contributor(s): Blender Foundation
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+#ifndef ED_LOGIC_H
+#define ED_LOGIC_H
+
+/* logic_ops.c */
+void ED_operatortypes_logic(void);
+
+#endif /* ED_LOGIC_H */
+
+
+
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 7aace1197b6..ff56b14c653 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -777,6 +777,8 @@ static void ui_apply_but_LINK(bContext *C, uiBut *but, uiHandleButtonData *data)
break;
}
if(bt && bt!=but) {
+ if (!ELEM(bt->type, LINK, INLINK) || !ELEM(but->type, LINK, INLINK))
+ return;
if(but->type==LINK) ui_add_link(but, bt);
else ui_add_link(bt, but);
diff --git a/source/blender/editors/space_api/spacetypes.c b/source/blender/editors/space_api/spacetypes.c
index ba7172b0da8..3def3f962dc 100644
--- a/source/blender/editors/space_api/spacetypes.c
+++ b/source/blender/editors/space_api/spacetypes.c
@@ -100,6 +100,7 @@ void ED_spacetypes_init(void)
ED_operatortypes_metaball();
ED_operatortypes_sound();
ED_operatortypes_render();
+ ED_operatortypes_logic();
UI_view2d_operatortypes();
UI_buttons_operatortypes();
diff --git a/source/blender/editors/space_logic/logic_intern.h b/source/blender/editors/space_logic/logic_intern.h
index 4d19a16ee9c..3b2b6497cdc 100644
--- a/source/blender/editors/space_logic/logic_intern.h
+++ b/source/blender/editors/space_logic/logic_intern.h
@@ -54,6 +54,7 @@ void LOGIC_OT_links_cut(struct wmOperatorType *ot);
/* logic_window.c */
void logic_buttons(struct bContext *C, struct ARegion *ar);
+void make_unique_prop_names(struct bContext *C, char *str);
#endif /* ED_LOGIC_INTERN_H */
diff --git a/source/blender/editors/space_logic/logic_ops.c b/source/blender/editors/space_logic/logic_ops.c
new file mode 100644
index 00000000000..c627f41f180
--- /dev/null
+++ b/source/blender/editors/space_logic/logic_ops.c
@@ -0,0 +1,196 @@
+/**
+ * $Id: logic_header.c 27676 2010-03-23 14:09:09Z campbellbarton $
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2009 Blender Foundation.
+ * All rights reserved.
+ *
+ *
+ * Contributor(s): Blender Foundation
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+#include <stddef.h>
+
+#include "DNA_object_types.h"
+#include "DNA_scene_types.h"
+#include "DNA_sensor_types.h"
+
+#include "BLI_blenlib.h"
+
+#include "BKE_context.h"
+#include "BKE_main.h"
+#include "BKE_sca.h"
+
+#include "ED_object.h"
+#include "ED_screen.h"
+
+#include "RNA_access.h"
+#include "RNA_define.h"
+#include "RNA_enum_types.h"
+
+#include "WM_api.h"
+#include "WM_types.h"
+
+#include "logic_intern.h"
+
+/* ************* Generic Operator Helpers ************* */
+
+static int edit_sensor_poll(bContext *C)
+{
+ PointerRNA ptr= CTX_data_pointer_get_type(C, "sensor", &RNA_Sensor);
+
+ if (ptr.data && ((ID*)ptr.id.data)->lib) return 0;
+ return 1;
+}
+
+/* this is the nice py-api-compatible way to do it, like modifiers,
+ but not entirely working yet..
+
+static void edit_sensor_properties(wmOperatorType *ot)
+{
+ RNA_def_string(ot->srna, "sensor", "", 32, "Sensor", "Name of the sensor to edit");
+ RNA_def_string(ot->srna, "object", "", 32, "Object", "Name of the object the sensor belongs to");
+}
+
+static int edit_sensor_invoke_properties(bContext *C, wmOperator *op)
+{
+ PointerRNA ptr= CTX_data_pointer_get_type(C, "sensor", &RNA_Sensor);
+
+ if (RNA_property_is_set(op->ptr, "sensor") && RNA_property_is_set(op->ptr, "object") )
+ return 1;
+
+ if (ptr.data) {
+ bSensor *sens = ptr.data;
+ Object *ob = ptr.id.data;
+
+ RNA_string_set(op->ptr, "sensor", sens->name);
+ RNA_string_set(op->ptr, "object", ob->id.name+2);
+ return 1;
+ }
+
+ return 0;
+}
+
+static bSensor *edit_sensor_property_get(bContext *C, wmOperator *op, Object *ob)
+{
+ char sensor_name[32];
+ char ob_name[32];
+ bSensor *sens;
+
+ RNA_string_get(op->ptr, "sensor", sensor_name);
+ RNA_string_get(op->ptr, "object", ob_name);
+
+ ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2);
+ if (!ob)
+ return NULL;
+
+ sens = BLI_findstring(&(ob->sensors), sensor_name, offsetof(bSensor, name));
+ return sens;
+}
+ */
+
+/* ************* Remove Sensor Operator ************* */
+
+static int sensor_remove_exec(bContext *C, wmOperator *op)
+{
+ /* Object *ob;
+ bSensor *sens = edit_sensor_property_get(C, op, ob); */
+ PointerRNA ptr = CTX_data_pointer_get_type(C, "sensor", &RNA_Sensor);
+ Object *ob= ptr.id.data;
+ bSensor *sens= ptr.data;
+
+ if (!sens)
+ return OPERATOR_CANCELLED;
+
+ BLI_remlink(&(ob->sensors), sens);
+ free_sensor(sens);
+
+ WM_event_add_notifier(C, NC_LOGIC, NULL);
+
+ return OPERATOR_FINISHED;
+}
+
+
+/* commented along with above stuff
+ static int sensor_remove_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ if (edit_sensor_invoke_properties(C, op))
+ return sensor_remove_exec(C, op);
+ else
+ return OPERATOR_CANCELLED;
+}
+ */
+
+void LOGIC_OT_sensor_remove(wmOperatorType *ot)
+{
+ ot->name= "Remove Sensor";
+ ot->description= "Remove a sensor from the active object";
+ ot->idname= "LOGIC_OT_sensor_remove";
+
+ //ot->invoke= sensor_remove_invoke;
+ ot->exec= sensor_remove_exec;
+ ot->poll= edit_sensor_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+ //edit_sensor_properties(ot);
+}
+
+static int sensor_add_exec(bContext *C, wmOperator *op)
+{
+ Object *ob = ED_object_active_context(C);
+ bSensor *sens;
+ int type= RNA_enum_get(op->ptr, "type");
+
+ sens= new_sensor(type);
+ BLI_addtail(&(ob->sensors), sens);
+ make_unique_prop_names(C, sens->name);
+ ob->scaflag |= OB_SHOWSENS;
+
+ WM_event_add_notifier(C, NC_LOGIC, NULL);
+
+ return OPERATOR_FINISHED;
+}
+
+void LOGIC_OT_sensor_add(wmOperatorType *ot)
+{
+ PropertyRNA *prop;
+
+ /* identifiers */
+ ot->name= "Add Sensor";
+ ot->description = "Add a sensor to the active object";
+ ot->idname= "LOGIC_OT_sensor_add";
+
+ /* api callbacks */
+ ot->invoke= WM_menu_invoke;
+ ot->exec= sensor_add_exec;
+ ot->poll= ED_operator_object_active_editable;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* properties */
+ prop= RNA_def_enum(ot->srna, "type", sensor_type_items, SENS_ALWAYS, "Type", "Type of sensor to add");
+}
+
+void ED_operatortypes_logic(void)
+{
+ WM_operatortype_append(LOGIC_OT_sensor_remove);
+ WM_operatortype_append(LOGIC_OT_sensor_add);
+}
diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c
index 39d3feafc19..de8c5ae6ba2 100644
--- a/source/blender/editors/space_logic/logic_window.c
+++ b/source/blender/editors/space_logic/logic_window.c
@@ -63,6 +63,8 @@
#include "UI_interface.h"
+#include "RNA_access.h"
+
/* XXX BAD BAD */
#include "../interface/interface_intern.h"
@@ -3168,6 +3170,52 @@ static int is_sensor_linked(uiBlock *block, bSensor *sens)
/* never used, see CVS 1.120 for the code */
/* static uiBlock *freecamera_menu(void) */
+static void draw_sensor_header(uiLayout *layout, PointerRNA *ptr)
+{
+ uiLayout *box, *row;
+
+ 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);
+ uiItemO(row, "", ICON_X, "LOGIC_OT_sensor_remove");
+}
+
+
+static void draw_sensor_touch(uiLayout *layout, PointerRNA *ptr)
+{
+ uiItemR(layout, ptr, "material", 0, NULL, 0);
+}
+
+static void draw_sensor_delay(uiLayout *layout, PointerRNA *ptr)
+{
+ uiItemR(layout, ptr, "delay", 0, NULL, 0);
+ uiItemR(layout, ptr, "duration", 0, NULL, 0);
+ uiItemR(layout, ptr, "repeat", 0, NULL, 0);
+}
+
+void draw_brick_sensor(uiLayout *layout, PointerRNA *ptr)
+{
+ uiLayout *box;
+
+ if (!RNA_boolean_get(ptr, "expanded"))
+ return;
+
+ box = uiLayoutBox(layout);
+
+ switch (RNA_enum_get(ptr, "type")) {
+ case SENS_ALWAYS:
+ break;
+ case SENS_TOUCH:
+ draw_sensor_touch(box, ptr);
+ break;
+ case SENS_DELAY:
+ draw_sensor_delay(box, ptr);
+ break;
+ }
+}
void logic_buttons(bContext *C, ARegion *ar)
{
@@ -3179,8 +3227,11 @@ void logic_buttons(bContext *C, ARegion *ar)
bActuator *act;
uiBlock *block;
uiBut *but;
+ uiLayout *layout, *row;
+ PointerRNA logic_ptr;
int a, iact, stbit, offset;
- short xco, yco, count, width, ycoo;
+ int xco, yco, width, ycoo;
+ short count;
char name[32];
/* pin is a bool used for actuator and sensor drawing with states
* pin so changing states dosnt hide the logic brick */
@@ -3193,6 +3244,8 @@ void logic_buttons(bContext *C, ARegion *ar)
block= uiBeginBlock(C, ar, name, UI_EMBOSS);
uiBlockSetHandleFunc(block, do_logic_buts, NULL);
+ RNA_pointer_create(NULL, &RNA_SpaceLogicEditor, slogic, &logic_ptr);
+
idar= get_selected_and_linked_obs(C, &count, slogic->scaflag);
/* clean ACT_LINKED and ACT_VISIBLE of all potentially visible actuators so that
@@ -3354,8 +3407,66 @@ void logic_buttons(bContext *C, ARegion *ar)
}
/* ******************************* */
- xco= 10; yco= 170; width= 300;
+ xco= 10; yco= 205; width= 320;
+
+#if 0
+
+ layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, xco, yco, width, 20, U.uistyles.first);
+ row = uiLayoutRow(layout, 1);
+
+ uiDefBlockBut(block, sensor_menu, NULL, "Sensors", xco-10, yco, 70, UI_UNIT_Y, ""); /* replace this with uiLayout stuff later */
+
+ uiItemR(row, &logic_ptr, "sensors_show_selected_objects", 0, "Sel", 0);
+ uiItemR(row, &logic_ptr, "sensors_show_active_objects", 0, "Act", 0);
+ uiItemR(row, &logic_ptr, "sensors_show_linked_controller", 0, "Link", 0);
+ uiItemR(row, &logic_ptr, "sensors_show_active_states", 0, "State", 0);
+
+ 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);
+
+ for(a=0; a<count; a++) {
+ PointerRNA ptr;
+
+ ob= (Object *)idar[a];
+
+ if (!(ob->scavisflag & OB_VIS_SENS) || !(ob->scaflag & OB_SHOWSENS)) continue;
+
+ uiItemS(layout);
+
+ for(sens= ob->sensors.first; sens; sens=sens->next) {
+ RNA_pointer_create(&ob->id, &RNA_Sensor, sens, &ptr);
+
+ if ((slogic->scaflag & BUTS_SENS_STATE) ||
+ (sens->totlinks == 0) || /* always display sensor without links so that is can be edited */
+ (sens->flag & SENS_PIN && slogic->scaflag & BUTS_SENS_STATE) || /* states can hide some sensors, pinned sensors ignore the visible state */
+ (is_sensor_linked(block, sens))
+ )
+ {
+ uiLayout *split, *col;
+
+ split = uiLayoutSplit(layout, 0.95, 0);
+ col = uiLayoutColumn(split, 1);
+ uiLayoutSetContextPointer(col, "sensor", &ptr);
+
+ /* should make UI template for sensor header.. function will do for now */
+ draw_sensor_header(col, &ptr);
+
+ /* draw the brick contents */
+ draw_brick_sensor(col, &ptr);
+
+ /* put link button to the right */
+ col = uiLayoutColumn(split, 0);
+ /* use oldskool uiButtons for links for now */
+ but= uiDefIconBut(block, LINK, 0, ICON_LINK, (short)(xco+width+UI_UNIT_X), yco, UI_UNIT_X, UI_UNIT_Y, NULL, 0, 0, 0, 0, "");
+ uiSetButLink(but, NULL, (void ***)&(sens->links), &sens->totlinks, LINK_SENSOR, LINK_CONTROLLER);
+ }
+ }
+ }
+ uiBlockLayoutResolve(block, NULL, &yco); /* stores final height in yco */
+#endif
+#if 1
uiDefBlockBut(block, sensor_menu, NULL, "Sensors", xco-10, yco+35, 70, UI_UNIT_Y, "");
uiBlockBeginAlign(block);
@@ -3437,6 +3548,8 @@ void logic_buttons(bContext *C, ARegion *ar)
yco-= 6;
}
}
+#endif
+
/* ******************************* */
xco= 800; yco= 170; width= 300;
diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h
index c37c3bc65d7..5c24b05a822 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -445,6 +445,7 @@ extern StructRNA RNA_SpaceGraphEditor;
extern StructRNA RNA_SpaceImageEditor;
extern StructRNA RNA_SpaceInfo;
extern StructRNA RNA_SpaceLogicEditor;
+extern StructRNA RNA_SpaceLogicEditorSensorSettings;
extern StructRNA RNA_SpaceNLA;
extern StructRNA RNA_SpaceNodeEditor;
extern StructRNA RNA_SpaceOutliner;
diff --git a/source/blender/makesrna/RNA_enum_types.h b/source/blender/makesrna/RNA_enum_types.h
index 6adad6aa92c..13a743201a8 100644
--- a/source/blender/makesrna/RNA_enum_types.h
+++ b/source/blender/makesrna/RNA_enum_types.h
@@ -75,6 +75,8 @@ extern EnumPropertyItem object_type_items[];
extern EnumPropertyItem object_type_curve_items[];
+extern EnumPropertyItem sensor_type_items[];
+
extern EnumPropertyItem space_type_items[];
extern EnumPropertyItem keymap_propvalue_items[];
diff --git a/source/blender/makesrna/intern/rna_sensor.c b/source/blender/makesrna/intern/rna_sensor.c
index 533aab1a317..3159591625a 100644
--- a/source/blender/makesrna/intern/rna_sensor.c
+++ b/source/blender/makesrna/intern/rna_sensor.c
@@ -30,8 +30,28 @@
#include "DNA_sensor_types.h"
+EnumPropertyItem sensor_type_items[] ={
+ {SENS_ALWAYS, "ALWAYS", 0, "Always", ""},
+ {SENS_TOUCH, "TOUCH", 0, "Touch", ""},
+ {SENS_NEAR, "NEAR", 0, "Near", ""},
+ {SENS_KEYBOARD, "KEYBOARD", 0, "Keyboard", ""},
+ {SENS_PROPERTY, "PROPERTY", 0, "Property", ""},
+ {SENS_MOUSE, "MOUSE", 0, "Mouse", ""},
+ {SENS_COLLISION, "COLLISION", 0, "Collision", ""},
+ {SENS_RADAR, "RADAR", 0, "Radar", ""},
+ {SENS_RANDOM, "RANDOM", 0, "Random", ""},
+ {SENS_RAY, "RAY", 0, "Ray", ""},
+ {SENS_MESSAGE, "MESSAGE", 0, "Message", ""},
+ {SENS_JOYSTICK, "JOYSTICK", 0, "joystick", ""},
+ {SENS_ACTUATOR, "ACTUATOR", 0, "Actuator", ""},
+ {SENS_DELAY, "DELAY", 0, "Delay", ""},
+ {SENS_ARMATURE, "ARMATURE", 0, "Armature", ""},
+ {0, NULL, 0, NULL, NULL}};
+
#ifdef RNA_RUNTIME
+#include "BKE_sca.h"
+
static StructRNA* rna_Sensor_refine(struct PointerRNA *ptr)
{
bSensor *sensor= (bSensor*)ptr->data;
@@ -72,29 +92,19 @@ static StructRNA* rna_Sensor_refine(struct PointerRNA *ptr)
}
}
+static void rna_Sensor_type_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+ bSensor *sens= (bSensor *)ptr->data;
+
+ init_sensor(sens);
+}
+
#else
static void rna_def_sensor(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
- static EnumPropertyItem sensor_type_items[] ={
- {SENS_ALWAYS, "ALWAYS", 0, "Always", ""},
- {SENS_TOUCH, "TOUCH", 0, "Touch", ""},
- {SENS_NEAR, "NEAR", 0, "Near", ""},
- {SENS_KEYBOARD, "KEYBOARD", 0, "Keyboard", ""},
- {SENS_PROPERTY, "PROPERTY", 0, "Property", ""},
- {SENS_MOUSE, "MOUSE", 0, "Mouse", ""},
- {SENS_COLLISION, "COLLISION", 0, "Collision", ""},
- {SENS_RADAR, "RADAR", 0, "Radar", ""},
- {SENS_RANDOM, "RANDOM", 0, "Random", ""},
- {SENS_RAY, "RAY", 0, "Ray", ""},
- {SENS_MESSAGE, "MESSAGE", 0, "Message", ""},
- {SENS_JOYSTICK, "JOYSTICK", 0, "joystick", ""},
- {SENS_ACTUATOR, "ACTUATOR", 0, "Actuator", ""},
- {SENS_DELAY, "DELAY", 0, "Delay", ""},
- {SENS_ARMATURE, "ARMATURE", 0, "Armature", ""},
- {0, NULL, 0, NULL, NULL}};
srna= RNA_def_struct(brna, "Sensor", NULL);
RNA_def_struct_ui_text(srna, "Sensor", "Game engine logic brick to detect events");
@@ -105,12 +115,17 @@ static void rna_def_sensor(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Name", "Sensor name");
RNA_def_struct_name_property(srna, prop);
- /* type is not editable, would need to do proper data free/alloc */
prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_enum_items(prop, sensor_type_items);
RNA_def_property_ui_text(prop, "Type", "");
-
+ RNA_def_property_update(prop, 0, "rna_Sensor_type_update");
+
+ prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", SENS_SHOW);
+ RNA_def_property_ui_text(prop, "Expanded", "Set sensor expanded in the user interface");
+ RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
+
prop= RNA_def_property(srna, "invert", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_ui_text(prop, "Invert Output", "Invert the level(output) of this sensor");
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index f2c25e3e1fb..fe6298b3006 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -2106,10 +2106,32 @@ static void rna_def_space_node(BlenderRNA *brna)
static void rna_def_space_logic(BlenderRNA *brna)
{
StructRNA *srna;
+ PropertyRNA *prop;
srna= RNA_def_struct(brna, "SpaceLogicEditor", "Space");
RNA_def_struct_sdna(srna, "SpaceLogic");
RNA_def_struct_ui_text(srna, "Space Logic Editor", "Logic editor space data");
+
+ prop= RNA_def_property(srna, "sensors_show_selected_objects", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_SENS_SEL);
+ RNA_def_property_ui_text(prop, "Show Selected Object", "Show sensors of all selected objects");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "sensors_show_active_objects", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_SENS_ACT);
+ RNA_def_property_ui_text(prop, "Show Active Object", "Show sensors of active object");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "sensors_show_linked_controller", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_SENS_LINK);
+ RNA_def_property_ui_text(prop, "Show Linked to Controller", "Show linked objects to the controller");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "sensors_show_active_states", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_SENS_STATE);
+ RNA_def_property_ui_text(prop, "Show Active States", "Show only sensors connected to active states");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
}
void RNA_def_space(BlenderRNA *brna)