Skip to content

Commit 8e44324

Browse files
author
Roberto De Ioris
committed
added delete_object
1 parent ed01280 commit 8e44324

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

Source/UnrealEnginePython/Private/UEPyEditor.cpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,39 @@ PyObject *py_unreal_engine_delete_asset(PyObject * self, PyObject * args) {
548548
return Py_None;
549549
}
550550

551+
PyObject *py_unreal_engine_delete_object(PyObject * self, PyObject * args) {
552+
PyObject *py_obj;
553+
PyObject *py_bool = nullptr;
554+
if (!PyArg_ParseTuple(args, "O|O:delete_object", &py_obj, &py_bool)) {
555+
return NULL;
556+
}
557+
558+
if (!GEditor)
559+
return PyErr_Format(PyExc_Exception, "no GEditor found");
560+
561+
UObject *u_object = ue_py_check_type<UObject>(py_obj);
562+
if (!u_object)
563+
return PyErr_Format(PyExc_Exception, "argument is not a UObject");
564+
565+
TArray<UObject *> objects_to_delete;
566+
objects_to_delete.Add(u_object);
567+
568+
569+
if (py_bool && PyObject_IsTrue(py_bool)) {
570+
if (ObjectTools::ForceDeleteObjects(objects_to_delete, false) < 1) {
571+
return PyErr_Format(PyExc_Exception, "unable to delete object");
572+
}
573+
}
574+
else {
575+
if (ObjectTools::DeleteObjects(objects_to_delete, false) < 1) {
576+
return PyErr_Format(PyExc_Exception, "unable to delete asset");
577+
}
578+
}
579+
580+
Py_INCREF(Py_None);
581+
return Py_None;
582+
}
583+
551584

552585
PyObject *py_unreal_engine_get_assets(PyObject * self, PyObject * args) {
553586
char *path;

Source/UnrealEnginePython/Private/UEPyEditor.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ PyObject *py_unreal_engine_editor_select_actor(PyObject *, PyObject *);
1313
PyObject *py_unreal_engine_import_asset(PyObject *, PyObject *);
1414
PyObject *py_unreal_engine_get_asset(PyObject *, PyObject *);
1515
PyObject *py_unreal_engine_find_asset(PyObject *, PyObject *);
16+
PyObject *py_unreal_engine_delete_object(PyObject *, PyObject *);
1617
PyObject *py_unreal_engine_get_assets(PyObject *, PyObject *);
1718
PyObject *py_unreal_engine_get_selected_assets(PyObject *, PyObject *);
1819
PyObject *py_unreal_engine_get_assets_by_class(PyObject *, PyObject *);

Source/UnrealEnginePython/Private/UEPyModule.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ static PyMethodDef unreal_engine_methods[] = {
152152
{ "import_asset", py_unreal_engine_import_asset, METH_VARARGS, "" },
153153
{ "get_asset", py_unreal_engine_get_asset, METH_VARARGS, "" },
154154
{ "find_asset", py_unreal_engine_find_asset, METH_VARARGS, "" },
155+
{ "delete_object", py_unreal_engine_delete_object, METH_VARARGS, "" },
155156
{ "get_assets", py_unreal_engine_get_assets, METH_VARARGS, "" },
156157
{ "get_selected_assets", py_unreal_engine_get_selected_assets, METH_VARARGS, "" },
157158
{ "get_assets_by_class", py_unreal_engine_get_assets_by_class, METH_VARARGS, "" },

0 commit comments

Comments
 (0)