[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29515] trunk/blender/source/blender/ editors/space_logic/logic_ops.c: Logic ops: uncommenting + fix remove ops to use full RNA code :)

Dalai Felinto dfelinto at gmail.com
Thu Jun 17 08:34:11 CEST 2010


Revision: 29515
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29515
Author:   dfelinto
Date:     2010-06-17 08:34:11 +0200 (Thu, 17 Jun 2010)

Log Message:
-----------
Logic ops: uncommenting  + fix remove ops to use full RNA code :)
The problem here was that it as passing Object *ob, while it should be Object **ob. Otherwise you can't change where the pointer is pointing to.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_logic/logic_ops.c

Modified: trunk/blender/source/blender/editors/space_logic/logic_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_logic/logic_ops.c	2010-06-17 06:19:07 UTC (rev 29514)
+++ trunk/blender/source/blender/editors/space_logic/logic_ops.c	2010-06-17 06:34:11 UTC (rev 29515)
@@ -77,9 +77,6 @@
 	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");
@@ -105,7 +102,7 @@
 	return 0;
 }
 
-static bSensor *edit_sensor_property_get(bContext *C, wmOperator *op, Object *ob)
+static bSensor *edit_sensor_property_get(bContext *C, wmOperator *op, Object **ob)
 {
 	char sensor_name[32];
 	char ob_name[32];
@@ -114,15 +111,14 @@
 	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)
+	*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));	
+	sens = BLI_findstring(&((*ob)->sensors), sensor_name, offsetof(bSensor, name));	
 	return sens;
 }
- */
-/*
+
 static void edit_controller_properties(wmOperatorType *ot)
 {
 	RNA_def_string(ot->srna, "controller", "", 32, "Controller", "Name of the controller to edit");
@@ -148,7 +144,7 @@
 	return 0;
 }
 
-static bController *edit_controller_property_get(bContext *C, wmOperator *op, Object *ob)
+static bController *edit_controller_property_get(bContext *C, wmOperator *op, Object **ob)
 {
 	char controller_name[32];
 	char ob_name[32];
@@ -157,11 +153,11 @@
 	RNA_string_get(op->ptr, "controller", controller_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)
+	*ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2);
+	if (!*ob)
 		return NULL;
 	
-	cont = BLI_findstring(&(ob->controllers), controller_name, offsetof(bController, name));	
+	cont = BLI_findstring(&((*ob)->controllers), controller_name, offsetof(bController, name));	
 	return cont;
 }
 
@@ -190,7 +186,7 @@
 	return 0;
 }
 
-static bController *edit_actuator_property_get(bContext *C, wmOperator *op, Object *ob)
+static bController *edit_actuator_property_get(bContext *C, wmOperator *op, Object **ob)
 {
 	char actuator_name[32];
 	char ob_name[32];
@@ -199,24 +195,20 @@
 	RNA_string_get(op->ptr, "actuator", actuator_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)
+	*ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2);
+	if (!*ob)
 		return NULL;
 	
-	cont = BLI_findstring(&(ob->actuators), actuator_name, offsetof(bActuator, name));	
+	act = BLI_findstring(&((*ob)->actuators), actuator_name, offsetof(bActuator, name));	
 	return act;
 }
-*/
 
 /* ************* Add/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;
+	Object *ob=NULL;
+	bSensor *sens = edit_sensor_property_get(C, op, &ob);
 	
 	if (!sens)
 		return OPERATOR_CANCELLED;
@@ -229,8 +221,6 @@
 	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))
@@ -238,7 +228,6 @@
 	else
 		return OPERATOR_CANCELLED;
 }
- */
 
 void LOGIC_OT_sensor_remove(wmOperatorType *ot)
 {
@@ -246,13 +235,13 @@
 	ot->description= "Remove a sensor from the active object";
 	ot->idname= "LOGIC_OT_sensor_remove";
 	
-	//ot->invoke= sensor_remove_invoke;
+	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);
+	edit_sensor_properties(ot);
 }
 
 static int sensor_add_exec(bContext *C, wmOperator *op)
@@ -315,11 +304,8 @@
 
 static int controller_remove_exec(bContext *C, wmOperator *op)
 {
-	/*	Object *ob;
-	bController *cont = edit_controller_property_get(C, op, ob);	*/
-	PointerRNA ptr = CTX_data_pointer_get_type(C, "controller", &RNA_Controller);
-	Object *ob= ptr.id.data;
-	bController *cont= ptr.data;
+	Object *ob = NULL;
+	bController *cont = edit_controller_property_get(C, op, &ob);
 	
 	if (!cont)
 		return OPERATOR_CANCELLED;
@@ -334,7 +320,7 @@
 }
 
 
-/* commented along with above stuff
+/* commented along with above stuff */
  static int controller_remove_invoke(bContext *C, wmOperator *op, wmEvent *event)
 {
 	if (edit_controller_invoke_properties(C, op))
@@ -342,7 +328,6 @@
 	else
 		return OPERATOR_CANCELLED;
 }
- */
 
 void LOGIC_OT_controller_remove(wmOperatorType *ot)
 {
@@ -350,13 +335,13 @@
 	ot->description= "Remove a controller from the active object";
 	ot->idname= "LOGIC_OT_controller_remove";
 	
-	//ot->invoke= controller_remove_invoke;
+	ot->invoke= controller_remove_invoke;
 	ot->exec= controller_remove_exec;
 	ot->poll= edit_controller_poll;
 	
 	/* flags */
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-	//edit_controller_properties(ot);
+	edit_controller_properties(ot);
 }
 
 static int controller_add_exec(bContext *C, wmOperator *op)
@@ -432,11 +417,8 @@
 
 static int actuator_remove_exec(bContext *C, wmOperator *op)
 {
-	/*	Object *ob;
-	bActuator *cont = edit_actuator_property_get(C, op, ob);	*/
-	PointerRNA ptr = CTX_data_pointer_get_type(C, "actuator", &RNA_Actuator);
-	Object *ob= ptr.id.data;
-	bActuator *act= ptr.data;
+	Object *ob=NULL;
+	bActuator *act = edit_actuator_property_get(C, op, &ob);
 	
 	if (!act)
 		return OPERATOR_CANCELLED;
@@ -450,16 +432,13 @@
 	return OPERATOR_FINISHED;
 }
 
-
-/* commented along with above stuff
- static int actuator_remove_invoke(bContext *C, wmOperator *op, wmEvent *event)
+static int actuator_remove_invoke(bContext *C, wmOperator *op, wmEvent *event)
 {
 	if (edit_actuator_invoke_properties(C, op))
 		return actuator_remove_exec(C, op);
 	else
 		return OPERATOR_CANCELLED;
 }
- */
 
 void LOGIC_OT_actuator_remove(wmOperatorType *ot)
 {
@@ -467,13 +446,13 @@
 	ot->description= "Remove a actuator from the active object";
 	ot->idname= "LOGIC_OT_actuator_remove";
 	
-	//ot->invoke= actuator_remove_invoke;
+	ot->invoke= actuator_remove_invoke;
 	ot->exec= actuator_remove_exec;
 	ot->poll= edit_actuator_poll;
 	
 	/* flags */
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-	//edit_controller_properties(ot);
+	edit_actuator_properties(ot);
 }
 
 static int actuator_add_exec(bContext *C, wmOperator *op)





More information about the Bf-blender-cvs mailing list