forked from bartvdbraak/blender
BGE: Removing the touch sensor and converting all touch sensors to collision sensors.
This commit is contained in:
parent
42deb95583
commit
b9b806e0a0
@ -112,9 +112,6 @@ void init_sensor(bSensor *sens)
|
||||
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;
|
||||
|
@ -4368,11 +4368,7 @@ static void lib_link_object(FileData *fd, Main *main)
|
||||
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 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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 @@ static void expand_object(FileData *fd, Main *mainvar, Object *ob)
|
||||
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);
|
||||
}
|
||||
|
@ -1108,9 +1108,6 @@ static void write_sensors(WriteData *wd, ListBase *lb)
|
||||
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;
|
||||
|
@ -427,8 +427,6 @@ static const char *sensor_name(int type)
|
||||
switch (type) {
|
||||
case SENS_ALWAYS:
|
||||
return "Always";
|
||||
case SENS_TOUCH:
|
||||
return "Touch";
|
||||
case SENS_NEAR:
|
||||
return "Near";
|
||||
case SENS_KEYBOARD:
|
||||
@ -1233,11 +1231,6 @@ static void draw_sensor_ray(uiLayout *layout, PointerRNA *ptr, bContext *C)
|
||||
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 @@ static void draw_brick_sensor(uiLayout *layout, PointerRNA *ptr, bContext *C)
|
||||
case SENS_RAY:
|
||||
draw_sensor_ray(box, ptr, C);
|
||||
break;
|
||||
case SENS_TOUCH:
|
||||
draw_sensor_touch(box, ptr);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -60,6 +60,7 @@ typedef struct bMouseSensor {
|
||||
short pad2;
|
||||
} bMouseSensor;
|
||||
|
||||
/* DEPRECATED */
|
||||
typedef struct bTouchSensor {
|
||||
char name[64]; /* MAX_NAME */
|
||||
struct Material *ma;
|
||||
@ -235,7 +236,7 @@ typedef struct bJoystickSensor {
|
||||
|
||||
/* 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
|
||||
|
@ -622,7 +622,6 @@ extern StructRNA RNA_ThemeWidgetStateColors;
|
||||
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;
|
||||
|
@ -58,7 +58,6 @@ EnumPropertyItem sensor_type_items[] = {
|
||||
{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 @@ static StructRNA *rna_Sensor_refine(struct PointerRNA *ptr)
|
||||
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 @@ static void rna_Sensor_Armature_update(Main *UNUSED(bmain), Scene *UNUSED(scene)
|
||||
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 @@ static void rna_def_mouse_sensor(BlenderRNA *brna)
|
||||
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 @@ void RNA_def_sensor(BlenderRNA *brna)
|
||||
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);
|
||||
|
@ -192,30 +192,6 @@ void BL_ConvertSensors(struct Object* blenderobject,
|
||||
|
||||
}
|
||||
|
||||
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:
|
||||
|
Loading…
Reference in New Issue
Block a user