[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29016] trunk/blender/source/blender: Logic Editor: removing usercount for existent datablocks

Dalai Felinto dfelinto at gmail.com
Thu May 27 09:37:09 CEST 2010


Revision: 29016
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29016
Author:   dfelinto
Date:     2010-05-27 09:37:09 +0200 (Thu, 27 May 2010)

Log Message:
-----------
Logic Editor: removing usercount for existent datablocks

Using custom setfuncs to avoid increase/decrease of usercount.
That way nothing stops you from removing a material that is used by a
sensor, or a mesh, an action ... (this is how 2.49 works too)

* also some general code cleaning/fix (adding static casts, replacing libaddr_us by lib_addr for dome text (I had no idea how user count worked back then) 

Modified Paths:
--------------
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/makesrna/intern/rna_actuator.c
    trunk/blender/source/blender/makesrna/intern/rna_sensor.c

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2010-05-27 06:08:48 UTC (rev 29015)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2010-05-27 07:37:09 UTC (rev 29016)
@@ -4213,8 +4213,7 @@
 				srl->light_override= newlibadr_us(fd, sce->id.lib, srl->light_override);
 			}
 			/*Game Settings: Dome Warp Text*/
-//			sce->r.dometext= newlibadr_us(fd, sce->id.lib, sce->r.dometext); // XXX deprecated since 2.5
-			sce->gm.dome.warptext= newlibadr_us(fd, sce->id.lib, sce->gm.dome.warptext);
+			sce->gm.dome.warptext= newlibadr(fd, sce->id.lib, sce->gm.dome.warptext);
 
 			sce->id.flag -= LIB_NEEDLINK;
 		}

Modified: trunk/blender/source/blender/makesrna/intern/rna_actuator.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_actuator.c	2010-05-27 06:08:48 UTC (rev 29015)
+++ trunk/blender/source/blender/makesrna/intern/rna_actuator.c	2010-05-27 07:37:09 UTC (rev 29016)
@@ -422,6 +422,23 @@
 	constraint[0] = 0;
 }
 
+/* note: the following set functions exists only to avoid id refcounting */
+static void rna_Actuator_editobject_mesh_set(PointerRNA *ptr, PointerRNA value)
+{
+        bActuator *act = (bActuator *)ptr->data;
+        bEditObjectActuator *eoa = (bEditObjectActuator *) act->data;
+
+        eoa->me = value.data;
+}
+
+static void rna_Actuator_action_action_set(PointerRNA *ptr, PointerRNA value)
+{
+        bActuator *act = (bActuator *)ptr->data;
+        bActionActuator *aa = (bActionActuator *) act->data;
+
+        aa->me = value.data;
+}
+
 #else
 
 void rna_def_actuator(BlenderRNA *brna)
@@ -481,6 +498,8 @@
 	RNA_def_property_struct_type(prop, "Action");
 	RNA_def_property_flag(prop, PROP_EDITABLE);
 	RNA_def_property_ui_text(prop, "Action", "");
+        /* note: custom set function is ONLY to avoid rna setting a user for this. */
+        RNA_def_property_pointer_funcs(prop, NULL, "rna_Actuator_action_action_set", NULL);
 	RNA_def_property_update(prop, NC_LOGIC, NULL);
 
 	prop= RNA_def_property(srna, "continue_last_frame", PROP_BOOLEAN, PROP_NONE);
@@ -1222,6 +1241,8 @@
 	RNA_def_property_pointer_sdna(prop, NULL, "me");
 	RNA_def_property_flag(prop, PROP_EDITABLE);
 	RNA_def_property_ui_text(prop, "Mesh", "Replace the existing, when left blank 'Phys' will remake the existing physics mesh");
+	/* note: custom set function is ONLY to avoid rna setting a user for this. */
+	RNA_def_property_pointer_funcs(prop, NULL, "rna_Actuator_editobject_mesh_set", NULL);
 	RNA_def_property_update(prop, NC_LOGIC, NULL);
 
 	prop= RNA_def_property(srna, "time", PROP_INT, PROP_NONE);
@@ -1688,6 +1709,8 @@
 	RNA_def_property_struct_type(prop, "Action");
 	RNA_def_property_flag(prop, PROP_EDITABLE);
 	RNA_def_property_ui_text(prop, "Action", "");
+        /* note: custom set function is ONLY to avoid rna setting a user for this. */
+        RNA_def_property_pointer_funcs(prop, NULL, "rna_Actuator_action_action_set", NULL);
 	RNA_def_property_update(prop, NC_LOGIC, NULL);
 
 	prop= RNA_def_property(srna, "continue_last_frame", PROP_BOOLEAN, PROP_NONE);

Modified: trunk/blender/source/blender/makesrna/intern/rna_sensor.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_sensor.c	2010-05-27 06:08:48 UTC (rev 29015)
+++ trunk/blender/source/blender/makesrna/intern/rna_sensor.c	2010-05-27 07:37:09 UTC (rev 29016)
@@ -152,7 +152,7 @@
 static void rna_Sensor_keyboard_key_set(struct PointerRNA *ptr, int value)
 {
 	bSensor *sens= (bSensor *)ptr->data;
-	bKeyboardSensor *ks = sens->data;
+	bKeyboardSensor *ks = (bKeyboardSensor *)sens->data;
 	
 	if (ISKEYBOARD(value))
 		ks->key = value;
@@ -161,7 +161,7 @@
 static void rna_Sensor_keyboard_modifier_set(struct PointerRNA *ptr, int value)
 {
 	bSensor *sens= (bSensor *)ptr->data;
-	bKeyboardSensor *ks = sens->data;
+	bKeyboardSensor *ks = (bKeyboardSensor *)sens->data;
 	
 	if (ISKEYBOARD(value))
 		ks->qual = value;
@@ -170,7 +170,7 @@
 static void rna_Sensor_keyboard_modifier2_set(struct PointerRNA *ptr, int value)
 {
 	bSensor *sens= (bSensor *)ptr->data;
-	bKeyboardSensor *ks = sens->data;
+	bKeyboardSensor *ks = (bKeyboardSensor *)sens->data;
 	
 	if (ISKEYBOARD(value))
 		ks->qual2 = value;
@@ -228,6 +228,14 @@
 	constraint[0] = 0;
 }
 
+/* note: the following set functions exists only to avoid id refcounting */
+static void rna_Sensor_touch_material_set(PointerRNA *ptr, PointerRNA value)
+{
+        bSensor *sens = (bSensor *)ptr->data;
+        bTouchSensor *ts = (bTouchSensor *) sens->data;
+
+        ts->ma = value.data;
+}
 #else
 
 static void rna_def_sensor(BlenderRNA *brna)
@@ -365,6 +373,8 @@
 	RNA_def_property_pointer_sdna(prop, NULL, "ma");
 	RNA_def_property_flag(prop, PROP_EDITABLE);
 	RNA_def_property_ui_text(prop, "Material", "Only look for objects with this material");
+	/* note: custom set function is ONLY to avoid rna setting a user for this. */
+	RNA_def_property_pointer_funcs(prop, NULL, "rna_Sensor_touch_material_set", NULL);
 	RNA_def_property_update(prop, NC_LOGIC, NULL);
 }
 





More information about the Bf-blender-cvs mailing list