Skip to content

Commit ecac204

Browse files
author
Roberto De Ioris
committed
implemented get_asset_referencers and get_asset_dependencies, closes 20tab#115
1 parent e06e3e0 commit ecac204

3 files changed

Lines changed: 47 additions & 1 deletion

File tree

‎Source/UnrealEnginePython/Private/UEPyEditor.cpp‎

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,48 @@ PyObject *py_unreal_engine_get_asset(PyObject * self, PyObject * args) {
337337
return (PyObject *)ret;
338338
}
339339

340+
PyObject *py_unreal_engine_get_asset_referencers(PyObject * self, PyObject * args) {
341+
char *path;
342+
343+
if (!PyArg_ParseTuple(args, "s:get_asset_referencers", &path)) {
344+
return NULL;
345+
}
346+
347+
if (!GEditor)
348+
return PyErr_Format(PyExc_Exception, "no GEditor found");
349+
350+
FAssetRegistryModule& AssetRegistryModule = FModuleManager::GetModuleChecked<FAssetRegistryModule>("AssetRegistry");
351+
TArray<FName> referencers;
352+
AssetRegistryModule.Get().GetReferencers(UTF8_TO_TCHAR(path), referencers);
353+
354+
PyObject *referencers_list = PyList_New(0);
355+
for (FName name : referencers) {
356+
PyList_Append(referencers_list, PyUnicode_FromString(TCHAR_TO_UTF8(*name.ToString())));
357+
}
358+
return referencers_list;
359+
}
360+
361+
PyObject *py_unreal_engine_get_asset_dependencies(PyObject * self, PyObject * args) {
362+
char *path;
363+
364+
if (!PyArg_ParseTuple(args, "s:get_asset_dependencies", &path)) {
365+
return NULL;
366+
}
367+
368+
if (!GEditor)
369+
return PyErr_Format(PyExc_Exception, "no GEditor found");
370+
371+
FAssetRegistryModule& AssetRegistryModule = FModuleManager::GetModuleChecked<FAssetRegistryModule>("AssetRegistry");
372+
TArray<FName> dependencies;
373+
AssetRegistryModule.Get().GetDependencies(UTF8_TO_TCHAR(path), dependencies);
374+
375+
PyObject *dependencies_list = PyList_New(0);
376+
for (FName name : dependencies) {
377+
PyList_Append(dependencies_list, PyUnicode_FromString(TCHAR_TO_UTF8(*name.ToString())));
378+
}
379+
return dependencies_list;
380+
}
381+
340382
PyObject *py_unreal_engine_get_long_package_path(PyObject * self, PyObject * args) {
341383
char *path;
342384
if (!PyArg_ParseTuple(args, "s:get_long_package_path", &path)) {

‎Source/UnrealEnginePython/Private/UEPyEditor.h‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ PyObject *py_unreal_engine_blueprint_add_ubergraph_page(PyObject *, PyObject *);
6565
// efeng additional functions
6666
PyObject *py_unreal_engine_create_material_instance(PyObject *, PyObject *);
6767

68-
68+
PyObject *py_unreal_engine_get_asset_referencers(PyObject *, PyObject *);
69+
PyObject *py_unreal_engine_get_asset_dependencies(PyObject *, PyObject *);
6970

7071
// transactions
7172
PyObject *py_unreal_engine_begin_transaction(PyObject *, PyObject *);

‎Source/UnrealEnginePython/Private/UEPyModule.cpp‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,9 @@ static PyMethodDef unreal_engine_methods[] = {
141141
{ "get_selected_assets", py_unreal_engine_get_selected_assets, METH_VARARGS, "" },
142142
{ "get_assets_by_class", py_unreal_engine_get_assets_by_class, METH_VARARGS, "" },
143143

144+
{ "get_asset_referencers", py_unreal_engine_get_asset_referencers, METH_VARARGS, "" },
145+
{ "get_asset_dependencies", py_unreal_engine_get_asset_dependencies, METH_VARARGS, "" },
146+
144147
{ "rename_asset", py_unreal_engine_rename_asset, METH_VARARGS, "" },
145148
{ "duplicate_asset", py_unreal_engine_duplicate_asset, METH_VARARGS, "" },
146149
{ "delete_asset", py_unreal_engine_delete_asset, METH_VARARGS, "" },

0 commit comments

Comments
 (0)