[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59811] trunk/blender/source: BGE: Removing the touch sensor and converting all touch sensors to collision sensors .

Mitchell Stokes mogurijin at gmail.com
Thu Sep 5 00:14:15 CEST 2013


Revision: 59811
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59811
Author:   moguri
Date:     2013-09-04 22:14:14 +0000 (Wed, 04 Sep 2013)
Log Message:
-----------
BGE: Removing the touch sensor and converting all touch sensors to collision sensors.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/sca.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/blenloader/intern/writefile.c
    trunk/blender/source/blender/editors/space_logic/logic_window.c
    trunk/blender/source/blender/makesdna/DNA_sensor_types.h
    trunk/blender/source/blender/makesrna/RNA_access.h
    trunk/blender/source/blender/makesrna/intern/rna_sensor.c
    trunk/blender/source/gameengine/Converter/KX_ConvertSensors.cpp

Modified: trunk/blender/source/blender/blenkernel/intern/sca.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sca.c	2013-09-04 21:57:14 UTC (rev 59810)
+++ trunk/blender/source/blender/blenkernel/intern/sca.c	2013-09-04 22:14:14 UTC (rev 59811)
@@ -112,9 +112,6 @@
 	case SENS_ALWAYS:
 		sens->pulse = 0;
 		break;
-	case SENS_TOUCH:
-		sens->data= MEM_callocN(sizeof(bTouchSensor), "touchsens");
-		break;
 	case SENS_NEAR:
 		ns=sens->data= MEM_callocN(sizeof(bNearSensor), "nearsens");
 		ns->dist= 1.0;

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2013-09-04 21:57:14 UTC (rev 59810)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2013-09-04 22:14:14 UTC (rev 59811)
@@ -4367,12 +4367,8 @@
 			for (sens = ob->sensors.first; sens; sens = sens->next) {
 				for (a = 0; a < sens->totlinks; a++)
 					sens->links[a] = newglobadr(fd, sens->links[a]);
-				
-				if (sens->type == SENS_TOUCH) {
-					bTouchSensor *ts = sens->data;
-					ts->ma = newlibadr(fd, ob->id.lib, ts->ma);
-				}
-				else if (sens->type == SENS_MESSAGE) {
+
+				if (sens->type == SENS_MESSAGE) {
 					bMessageSensor *ms = sens->data;
 					ms->fromObject =
 						newlibadr(fd, ob->id.lib, ms->fromObject);
@@ -9616,6 +9612,32 @@
 				}
 			}
 		}
+
+		for (ob = main->object.first; ob; ob = ob->id.next) {
+			bSensor *sens;
+			bTouchSensor *ts;
+			bCollisionSensor *cs;
+			Material *ma;
+
+			for (sens = ob->sensors.first; sens; sens = sens->next) {
+				if (sens->type == SENS_TOUCH) {
+					ts = sens->data;
+					cs = MEM_callocN(sizeof(bCollisionSensor), "touch -> collision sensor do_version");
+
+					if (ts->ma) {
+						ma = blo_do_versions_newlibadr(fd, ob->id.lib, ts->ma);
+						BLI_strncpy(cs->materialName, ma->id.name+2, sizeof(cs->materialName));
+					}
+
+					cs->mode = SENS_COLLISION_MATERIAL;
+
+					MEM_freeN(ts);
+
+					sens->data = cs;
+					sens->type = sens->otype = SENS_COLLISION;
+				}
+			}
+		}
 	}
 
 	/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
@@ -10517,11 +10539,7 @@
 		expand_doit(fd, mainvar, psys->part);
 	
 	for (sens = ob->sensors.first; sens; sens = sens->next) {
-		if (sens->type == SENS_TOUCH) {
-			bTouchSensor *ts = sens->data;
-			expand_doit(fd, mainvar, ts->ma);
-		}
-		else if (sens->type == SENS_MESSAGE) {
+		if (sens->type == SENS_MESSAGE) {
 			bMessageSensor *ms = sens->data;
 			expand_doit(fd, mainvar, ms->fromObject);
 		}

Modified: trunk/blender/source/blender/blenloader/intern/writefile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/writefile.c	2013-09-04 21:57:14 UTC (rev 59810)
+++ trunk/blender/source/blender/blenloader/intern/writefile.c	2013-09-04 22:14:14 UTC (rev 59811)
@@ -1108,9 +1108,6 @@
 		case SENS_MOUSE:
 			writestruct(wd, DATA, "bMouseSensor", 1, sens->data);
 			break;
-		case SENS_TOUCH:
-			writestruct(wd, DATA, "bTouchSensor", 1, sens->data);
-			break;
 		case SENS_KEYBOARD:
 			writestruct(wd, DATA, "bKeyboardSensor", 1, sens->data);
 			break;

Modified: trunk/blender/source/blender/editors/space_logic/logic_window.c
===================================================================
--- trunk/blender/source/blender/editors/space_logic/logic_window.c	2013-09-04 21:57:14 UTC (rev 59810)
+++ trunk/blender/source/blender/editors/space_logic/logic_window.c	2013-09-04 22:14:14 UTC (rev 59811)
@@ -427,8 +427,6 @@
 	switch (type) {
 	case SENS_ALWAYS:
 		return "Always";
-	case SENS_TOUCH:
-		return "Touch";
 	case SENS_NEAR:
 		return "Near";
 	case SENS_KEYBOARD:
@@ -1233,11 +1231,6 @@
 	uiItemR(row, ptr, "use_x_ray", UI_ITEM_R_TOGGLE, NULL, ICON_NONE);
 }
 
-static void draw_sensor_touch(uiLayout *layout, PointerRNA *ptr)
-{
-	uiItemR(layout, ptr, "material", 0, NULL, ICON_NONE);
-}
-
 static void draw_brick_sensor(uiLayout *layout, PointerRNA *ptr, bContext *C)
 {
 	uiLayout *box;
@@ -1292,9 +1285,6 @@
 		case SENS_RAY:
 			draw_sensor_ray(box, ptr, C);
 			break;
-		case SENS_TOUCH:
-			draw_sensor_touch(box, ptr);
-			break;
 	}
 }
 

Modified: trunk/blender/source/blender/makesdna/DNA_sensor_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_sensor_types.h	2013-09-04 21:57:14 UTC (rev 59810)
+++ trunk/blender/source/blender/makesdna/DNA_sensor_types.h	2013-09-04 22:14:14 UTC (rev 59811)
@@ -60,6 +60,7 @@
 	short pad2;
 } bMouseSensor;
 
+/* DEPRECATED */
 typedef struct bTouchSensor {
 	char name[64];	/* MAX_NAME */
 	struct Material *ma;
@@ -235,7 +236,7 @@
 
 /* sensor->type */
 #define SENS_ALWAYS		0
-#define SENS_TOUCH		1
+#define SENS_TOUCH		1  /* DEPRECATED */
 #define SENS_NEAR		2
 #define SENS_KEYBOARD	3
 #define SENS_PROPERTY	4

Modified: trunk/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_access.h	2013-09-04 21:57:14 UTC (rev 59810)
+++ trunk/blender/source/blender/makesrna/RNA_access.h	2013-09-04 22:14:14 UTC (rev 59811)
@@ -622,7 +622,6 @@
 extern StructRNA RNA_TimelineMarker;
 extern StructRNA RNA_Timer;
 extern StructRNA RNA_ToolSettings;
-extern StructRNA RNA_TouchSensor;
 extern StructRNA RNA_TrackToConstraint;
 extern StructRNA RNA_TransformConstraint;
 extern StructRNA RNA_TransformSequence;

Modified: trunk/blender/source/blender/makesrna/intern/rna_sensor.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_sensor.c	2013-09-04 21:57:14 UTC (rev 59810)
+++ trunk/blender/source/blender/makesrna/intern/rna_sensor.c	2013-09-04 22:14:14 UTC (rev 59811)
@@ -58,7 +58,6 @@
 	{SENS_RADAR, "RADAR", 0, "Radar", ""},
 	{SENS_RANDOM, "RANDOM", 0, "Random", ""},
 	{SENS_RAY, "RAY", 0, "Ray", ""},
-	{SENS_TOUCH, "TOUCH", 0, "Touch", ""},
 	{0, NULL, 0, NULL, NULL}
 };
 
@@ -74,8 +73,6 @@
 	switch (sensor->type) {
 		case SENS_ALWAYS:
 			return &RNA_AlwaysSensor;
-		case SENS_TOUCH:
-			return &RNA_TouchSensor;
 		case SENS_NEAR:
 			return &RNA_NearSensor;
 		case SENS_KEYBOARD:
@@ -267,15 +264,6 @@
 	posechannel[0] = 0;
 	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)
@@ -427,25 +415,6 @@
 	RNA_def_property_update(prop, NC_LOGIC, NULL);
 }
 
-static void rna_def_touch_sensor(BlenderRNA *brna)
-{
-	StructRNA *srna;
-	PropertyRNA *prop;
-
-	srna = RNA_def_struct(brna, "TouchSensor", "Sensor");
-	RNA_def_struct_ui_text(srna, "Touch Sensor", "Sensor to detect objects colliding with the current object");
-	RNA_def_struct_sdna_from(srna, "bTouchSensor", "data");
-
-	prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
-	RNA_def_property_struct_type(prop, "Material");
-	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 (blank = all objects)");
-	/* 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, NULL);
-	RNA_def_property_update(prop, NC_LOGIC, NULL);
-}
-
 static void rna_def_keyboard_sensor(BlenderRNA *brna)
 {
 	StructRNA *srna;
@@ -917,7 +886,6 @@
 	rna_def_always_sensor(brna);
 	rna_def_near_sensor(brna);
 	rna_def_mouse_sensor(brna);
-	rna_def_touch_sensor(brna);
 	rna_def_keyboard_sensor(brna);
 	rna_def_property_sensor(brna);
 	rna_def_armature_sensor(brna);

Modified: trunk/blender/source/gameengine/Converter/KX_ConvertSensors.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/KX_ConvertSensors.cpp	2013-09-04 21:57:14 UTC (rev 59810)
+++ trunk/blender/source/gameengine/Converter/KX_ConvertSensors.cpp	2013-09-04 22:14:14 UTC (rev 59811)
@@ -194,30 +194,6 @@
 				
 				break;
 			}
-		case SENS_TOUCH:
-			{
-				SCA_EventManager* eventmgr = logicmgr->FindEventManager(SCA_EventManager::TOUCH_EVENTMGR);
-				if (eventmgr)
-				{
-					STR_String touchpropertyname;
-					bTouchSensor* blendertouchsensor = (bTouchSensor*)sens->data;
-					
-					if (blendertouchsensor->ma)
-					{
-						touchpropertyname = (char*) (blendertouchsensor->ma->id.name+2);
-					}
-					bool bFindMaterial = true;
-					if (gameobj->GetPhysicsController())
-					{
-						gamesensor = new KX_TouchSensor(eventmgr,
-							gameobj,
-							bFindMaterial,
-							false,
-							touchpropertyname);
-					}
-				}
-				break;
-			}
 		case SENS_MESSAGE:
 			{
 				KX_NetworkEventManager* eventmgr = (KX_NetworkEventManager*)




More information about the Bf-blender-cvs mailing list