Fix T38654: Using a non-camera object for the SetCamera Scene Actuator causes a segfault.
Non-camera objects are not supported as cameras, and trying to use them just causes memory errors (some bad typecasts are involved). When converting a Scene Actuator, only use the object as a camera if it is actually a camera. Also, the logic brick UI now filters for camera objects, which should help avoid confusion.
This commit is contained in:
parent
3d7e0aae52
commit
16c75cf594
@ -1479,10 +1479,10 @@ static void rna_def_scene_actuator(BlenderRNA *brna)
|
||||
RNA_def_property_enum_items(prop, prop_type_items);
|
||||
RNA_def_property_ui_text(prop, "Mode", "");
|
||||
RNA_def_property_update(prop, NC_LOGIC, NULL);
|
||||
|
||||
/*XXX filter only camera objects */
|
||||
|
||||
prop = RNA_def_property(srna, "camera", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_struct_type(prop, "Object");
|
||||
RNA_def_property_pointer_funcs(prop, NULL, NULL, NULL, "rna_Camera_object_poll");
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_ui_text(prop, "Camera Object", "Set this Camera (leave empty to refer to self object)");
|
||||
RNA_def_property_update(prop, NC_LOGIC, NULL);
|
||||
|
@ -758,7 +758,9 @@ void BL_ConvertActuators(const char* maggiename,
|
||||
mode = KX_SceneActuator::KX_SCENE_SET_CAMERA;
|
||||
if (sceneact->camera)
|
||||
{
|
||||
cam = (KX_Camera*) converter->FindGameObject(sceneact->camera);
|
||||
KX_GameObject *tmp = converter->FindGameObject(sceneact->camera);
|
||||
if (tmp && tmp->GetGameObjectType() == SCA_IObject::OBJ_CAMERA)
|
||||
cam = (KX_Camera*)tmp;
|
||||
}
|
||||
break;
|
||||
case ACT_SCENE_RESTART:
|
||||
|
Loading…
Reference in New Issue
Block a user