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/space_logic/logic_ops.c44
-rw-r--r--source/blender/editors/space_logic/logic_window.c8
-rw-r--r--source/blender/makesrna/intern/rna_space.c10
3 files changed, 41 insertions, 21 deletions
diff --git a/source/blender/editors/space_logic/logic_ops.c b/source/blender/editors/space_logic/logic_ops.c
index e7abf49e95b..632331459cb 100644
--- a/source/blender/editors/space_logic/logic_ops.c
+++ b/source/blender/editors/space_logic/logic_ops.c
@@ -263,6 +263,7 @@ static int sensor_add_exec(bContext *C, wmOperator *op)
PropertyRNA *prop;
const char *sens_name;
int type= RNA_enum_get(op->ptr, "type");
+ char name[32];
sens= new_sensor(type);
BLI_addtail(&(ob->sensors), sens);
@@ -270,9 +271,15 @@ static int sensor_add_exec(bContext *C, wmOperator *op)
/* set the sensor name based on rna type enum */
RNA_pointer_create((ID *)ob, &RNA_Sensor, sens, &sens_ptr);
prop = RNA_struct_find_property(&sens_ptr, "type");
- RNA_property_enum_name(C, &sens_ptr, prop, RNA_property_enum_get(&sens_ptr, prop), &sens_name);
- BLI_strncpy(sens->name, sens_name, sizeof(sens->name));
-
+
+ RNA_string_get(op->ptr, "name", name);
+ if(BLI_strnlen(name, 32) < 1){
+ RNA_property_enum_name(C, &sens_ptr, prop, RNA_property_enum_get(&sens_ptr, prop), &sens_name);
+ BLI_strncpy(sens->name, sens_name, sizeof(sens->name));
+ }
+ else
+ BLI_strncpy(sens->name, name, sizeof(sens->name));
+
make_unique_prop_names(C, sens->name);
ob->scaflag |= OB_SHOWSENS;
@@ -301,6 +308,7 @@ void LOGIC_OT_sensor_add(wmOperatorType *ot)
/* properties */
prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, SENS_ALWAYS, "Type", "Type of sensor to add");
RNA_def_enum_funcs(prop, rna_Sensor_type_itemf);
+ prop= RNA_def_string(ot->srna, "name", "", 32, "Name", "Name of the Sensor to add");
}
/* ************* Add/Remove Controller Operator ************* */
@@ -360,6 +368,7 @@ static int controller_add_exec(bContext *C, wmOperator *op)
const char *cont_name;
int type= RNA_enum_get(op->ptr, "type");
int bit;
+ char name[32];
cont= new_controller(type);
BLI_addtail(&(ob->controllers), cont);
@@ -367,11 +376,16 @@ static int controller_add_exec(bContext *C, wmOperator *op)
/* set the controller name based on rna type enum */
RNA_pointer_create((ID *)ob, &RNA_Controller, cont, &cont_ptr);
prop = RNA_struct_find_property(&cont_ptr, "type");
- RNA_property_enum_name(C, &cont_ptr, prop, RNA_property_enum_get(&cont_ptr, prop), &cont_name);
- BLI_strncpy(cont->name, cont_name, sizeof(cont->name));
-
+
+ RNA_string_get(op->ptr, "name", name);
+ if(BLI_strnlen(name, 32) < 1){
+ RNA_property_enum_name(C, &cont_ptr, prop, RNA_property_enum_get(&cont_ptr, prop), &cont_name);
+ BLI_strncpy(cont->name, cont_name, sizeof(cont->name));
+ }
+ else
+ BLI_strncpy(cont->name, name, sizeof(cont->name));
+
make_unique_prop_names(C, cont->name);
-
/* set the controller state mask from the current object state.
A controller is always in a single state, so select the lowest bit set
from the object state */
@@ -411,6 +425,7 @@ void LOGIC_OT_controller_add(wmOperatorType *ot)
/* properties */
prop= RNA_def_enum(ot->srna, "type", controller_type_items, CONT_LOGIC_AND, "Type", "Type of controller to add");
+ prop= RNA_def_string(ot->srna, "name", "", 32, "Name", "Name of the Controller to add");
}
/* ************* Add/Remove Actuator Operator ************* */
@@ -468,6 +483,8 @@ static int actuator_add_exec(bContext *C, wmOperator *op)
PointerRNA act_ptr;
PropertyRNA *prop;
const char *act_name;
+ char name[32];
+ //XXX RNA_string_get is not using maxlen, it's using UserPreferencesFilePaths_python_scripts_directory_get instead (what limits the string copy to 160 chars in this case and CRASHES Blender).
int type= RNA_enum_get(op->ptr, "type");
act= new_actuator(type);
@@ -476,9 +493,15 @@ static int actuator_add_exec(bContext *C, wmOperator *op)
/* set the actuator name based on rna type enum */
RNA_pointer_create((ID *)ob, &RNA_Actuator, act, &act_ptr);
prop = RNA_struct_find_property(&act_ptr, "type");
- RNA_property_enum_name(C, &act_ptr, prop, RNA_property_enum_get(&act_ptr, prop), &act_name);
- BLI_strncpy(act->name, act_name, sizeof(act->name));
-
+
+ RNA_string_get(op->ptr, "name", name);
+ if (BLI_strnlen(name, 32) < 1){
+ RNA_property_enum_name(C, &act_ptr, prop, RNA_property_enum_get(&act_ptr, prop), &act_name);
+ BLI_strncpy(act->name, act_name, sizeof(act->name));
+ }
+ else
+ BLI_strncpy(act->name, name, sizeof(act->name));
+
make_unique_prop_names(C, act->name);
ob->scaflag |= OB_SHOWACT;
@@ -507,6 +530,7 @@ void LOGIC_OT_actuator_add(wmOperatorType *ot)
/* properties */
prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, CONT_LOGIC_AND, "Type", "Type of actuator to add");
RNA_def_enum_funcs(prop, rna_Actuator_type_itemf);
+ prop= RNA_def_string(ot->srna, "name", "", 32, "Name", "Name of the Actuator to add");
}
void ED_operatortypes_logic(void)
diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c
index 1390be14df8..f9310909f2c 100644
--- a/source/blender/editors/space_logic/logic_window.c
+++ b/source/blender/editors/space_logic/logic_window.c
@@ -4402,7 +4402,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar)
for(cont= ob->controllers.first; cont; cont=cont->next) {
RNA_pointer_create((ID *)ob, &RNA_Controller, cont, &ptr);
- if (!(ob->state & cont->state_mask))
+ if (!(ob->scaflag & OB_ALLSTATE) && !(ob->state & cont->state_mask))
continue;
//if (!(cont->state_mask & (1<<stbit)))
// continue;
@@ -4477,7 +4477,8 @@ static void logic_buttons_new(bContext *C, ARegion *ar)
for(sens= ob->sensors.first; sens; sens=sens->next) {
RNA_pointer_create((ID *)ob, &RNA_Sensor, sens, &ptr);
- if ((slogic->scaflag & BUTS_SENS_STATE) ||
+ if ((ob->scaflag & OB_ALLSTATE) ||
+ (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))
@@ -4536,7 +4537,8 @@ static void logic_buttons_new(bContext *C, ARegion *ar)
RNA_pointer_create((ID *)ob, &RNA_Actuator, act, &ptr);
- if ((slogic->scaflag & BUTS_ACT_STATE) ||
+ if ((ob->scaflag & OB_ALLSTATE) ||
+ (slogic->scaflag & BUTS_ACT_STATE) ||
!(act->flag & ACT_LINKED) || /* always display actuators without links so that is can be edited */
(act->flag & ACT_VISIBLE) || /* this actuator has visible connection, display it */
(act->flag & ACT_PIN && slogic->scaflag & BUTS_ACT_STATE) /* states can hide some sensors, pinned sensors ignore the visible state */
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index aa1396889e2..7ba56d77801 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -2129,7 +2129,7 @@ static void rna_def_space_logic(BlenderRNA *brna)
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_boolean_negative_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);
@@ -2148,12 +2148,6 @@ static void rna_def_space_logic(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_CONT_LINK);
RNA_def_property_ui_text(prop, "Show Linked to Controller", "Show linked objects to sensor/actuator");
RNA_def_property_update(prop, NC_LOGIC, NULL);
-
- prop= RNA_def_property(srna, "controllers_show_initial_state", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_CONT_INIT_STATE);
- RNA_def_property_ui_text(prop, "Show Initial State", "Show the initial controller state for this object");
- RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
- RNA_def_property_update(prop, NC_LOGIC, NULL);
/* actuators */
prop= RNA_def_property(srna, "actuators_show_selected_objects", PROP_BOOLEAN, PROP_NONE);
@@ -2172,7 +2166,7 @@ static void rna_def_space_logic(BlenderRNA *brna)
RNA_def_property_update(prop, NC_LOGIC, NULL);
prop= RNA_def_property(srna, "actuators_show_active_states", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_ACT_STATE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "scaflag", BUTS_ACT_STATE);
RNA_def_property_ui_text(prop, "Show Active States", "Show only actuators connected to active states");
RNA_def_property_update(prop, NC_LOGIC, NULL);