22
33#if WITH_EDITOR
44
5- static PyObject *py_ue_fassetdata_get_asset (ue_PyFAssetData *self, PyObject * args) {
5+ #include " ObjectTools.h"
6+
7+ static PyObject *py_ue_fassetdata_get_asset (ue_PyFAssetData *self, PyObject * args)
8+ {
69 PyObject *ret = (PyObject *)ue_get_python_wrapper (self->asset_data .GetAsset ());
7- if (!ret) {
10+ if (!ret)
11+ {
812 return PyErr_Format (PyExc_Exception, " unable to get UObject from asset" );
913 }
1014 Py_INCREF (ret);
1115 return ret;
1216}
1317
14- static PyObject *py_ue_fassetdata_is_asset_loaded (ue_PyFAssetData *self, PyObject * args) {
18+ static PyObject *py_ue_fassetdata_is_asset_loaded (ue_PyFAssetData *self, PyObject * args)
19+ {
1520 if (self->asset_data .IsAssetLoaded ())
1621 Py_RETURN_TRUE;
1722 Py_RETURN_FALSE;
1823}
1924
25+ static PyObject *py_ue_fassetdata_get_thumbnail (ue_PyFAssetData *self, PyObject * args)
26+ {
27+ TArray<FName> names;
28+ FName name = FName (*self->asset_data .GetFullName ());
29+ names.Add (name);
30+ FThumbnailMap map;
31+
32+ if (!ThumbnailTools::ConditionallyLoadThumbnailsForObjects (names, map))
33+ {
34+ return PyErr_Format (PyExc_Exception, " Unable to retrieve thumbnail from FAssetData" );
35+ }
36+
37+ FObjectThumbnail *thumbnail = map.Find (name);
38+ if (!thumbnail)
39+ {
40+ return PyErr_Format (PyExc_Exception, " Unable to retrieve thumbnail from FAssetData" );
41+ }
42+
43+ return py_ue_new_fobject_thumbnail (*thumbnail);
44+ }
45+
46+ static PyObject *py_ue_fassetdata_has_custom_thumbnail (ue_PyFAssetData *self, PyObject * args)
47+ {
48+
49+ if (!ThumbnailTools::AssetHasCustomThumbnail (self->asset_data ))
50+ {
51+ Py_RETURN_FALSE;
52+ }
53+
54+ Py_RETURN_TRUE;
55+ }
56+
57+ static PyObject *py_ue_fassetdata_has_cached_thumbnail (ue_PyFAssetData *self, PyObject * args)
58+ {
59+
60+ if (!ThumbnailTools::FindCachedThumbnail (self->asset_data .GetFullName ()))
61+ {
62+ Py_RETURN_FALSE;
63+ }
64+
65+ Py_RETURN_TRUE;
66+ }
67+
2068static PyMethodDef ue_PyFAssetData_methods[] = {
2169 { " get_asset" , (PyCFunction)py_ue_fassetdata_get_asset, METH_VARARGS, " " },
2270 { " is_asset_loaded" , (PyCFunction)py_ue_fassetdata_is_asset_loaded, METH_VARARGS, " " },
71+ { " get_thumbnail" , (PyCFunction)py_ue_fassetdata_get_thumbnail, METH_VARARGS, " " },
72+ { " has_custom_thumbnail" , (PyCFunction)py_ue_fassetdata_has_custom_thumbnail, METH_VARARGS, " " },
73+ { " has_cached_thumbnail" , (PyCFunction)py_ue_fassetdata_has_cached_thumbnail, METH_VARARGS, " " },
2374 { NULL } /* Sentinel */
2475};
2576
26- static PyObject *py_ue_fassetdata_get_asset_class (ue_PyFAssetData *self, void *closure) {
77+ static PyObject *py_ue_fassetdata_get_asset_class (ue_PyFAssetData *self, void *closure)
78+ {
2779 return PyUnicode_FromString (TCHAR_TO_UTF8 (*self->asset_data .AssetClass .ToString ()));
2880}
2981
30- static PyObject *py_ue_fassetdata_get_asset_name (ue_PyFAssetData *self, void *closure) {
82+ static PyObject *py_ue_fassetdata_get_asset_name (ue_PyFAssetData *self, void *closure)
83+ {
3184 return PyUnicode_FromString (TCHAR_TO_UTF8 (*self->asset_data .AssetName .ToString ()));
3285}
3386
3487#if ENGINE_MINOR_VERSION < 17
35- static PyObject *py_ue_fassetdata_get_group_names (ue_PyFAssetData *self, void *closure) {
88+ static PyObject *py_ue_fassetdata_get_group_names (ue_PyFAssetData *self, void *closure)
89+ {
3690 return PyUnicode_FromString (TCHAR_TO_UTF8 (*self->asset_data .GroupNames .ToString ()));
3791}
3892#endif
3993
40- static PyObject *py_ue_fassetdata_get_object_path (ue_PyFAssetData *self, void *closure) {
94+ static PyObject *py_ue_fassetdata_get_object_path (ue_PyFAssetData *self, void *closure)
95+ {
4196 return PyUnicode_FromString (TCHAR_TO_UTF8 (*self->asset_data .ObjectPath .ToString ()));
4297}
4398
44- static PyObject *py_ue_fassetdata_get_package_flags (ue_PyFAssetData *self, void *closure) {
99+ static PyObject *py_ue_fassetdata_get_package_flags (ue_PyFAssetData *self, void *closure)
100+ {
45101 return PyLong_FromUnsignedLong (self->asset_data .PackageFlags );
46102}
47103
48- static PyObject *py_ue_fassetdata_get_package_name (ue_PyFAssetData *self, void *closure) {
104+ static PyObject *py_ue_fassetdata_get_package_name (ue_PyFAssetData *self, void *closure)
105+ {
49106 return PyUnicode_FromString (TCHAR_TO_UTF8 (*self->asset_data .PackageName .ToString ()));
50107}
51108
52- static PyObject *py_ue_fassetdata_get_package_path (ue_PyFAssetData *self, void *closure) {
109+ static PyObject *py_ue_fassetdata_get_package_path (ue_PyFAssetData *self, void *closure)
110+ {
53111 return PyUnicode_FromString (TCHAR_TO_UTF8 (*self->asset_data .PackagePath .ToString ()));
54112}
55113
56- static PyObject *py_ue_fassetdata_get_tags_and_values (ue_PyFAssetData *self, void *closure) {
114+ static PyObject *py_ue_fassetdata_get_tags_and_values (ue_PyFAssetData *self, void *closure)
115+ {
57116 PyObject *ret = PyDict_New ();
58117 for (auto It = self->asset_data .TagsAndValues .CreateConstIterator (); It; ++It)
59118 {
@@ -78,7 +137,8 @@ static PyGetSetDef ue_PyFAssetData_getseters[] = {
78137 { NULL } /* Sentinel */
79138};
80139
81- static int ue_py_fassetdata_init (ue_PyFAssetData *self, PyObject *args, PyObject *kwargs) {
140+ static int ue_py_fassetdata_init (ue_PyFAssetData *self, PyObject *args, PyObject *kwargs)
141+ {
82142 // avoid FAssetData manual creation
83143 return -1 ;
84144}
@@ -122,7 +182,8 @@ static PyTypeObject ue_PyFAssetDataType = {
122182 ue_PyFAssetData_getseters, /* tp_getset */
123183};
124184
125- void ue_python_init_fassetdata (PyObject *ue_module) {
185+ void ue_python_init_fassetdata (PyObject *ue_module)
186+ {
126187 ue_PyFAssetDataType.tp_new = PyType_GenericNew;;
127188 ue_PyFAssetDataType.tp_init = (initproc)ue_py_fassetdata_init;
128189 if (PyType_Ready (&ue_PyFAssetDataType) < 0 )
@@ -132,14 +193,16 @@ void ue_python_init_fassetdata(PyObject *ue_module) {
132193 PyModule_AddObject (ue_module, " FAssetData" , (PyObject *)&ue_PyFAssetDataType);
133194}
134195
135- PyObject *py_ue_new_fassetdata (FAssetData asset_data) {
196+ PyObject *py_ue_new_fassetdata (FAssetData asset_data)
197+ {
136198 ue_PyFAssetData *ret = (ue_PyFAssetData *)PyObject_New (ue_PyFAssetData, &ue_PyFAssetDataType);
137199
138200 new (&ret->asset_data ) FAssetData (asset_data);
139201 return (PyObject *)ret;
140202}
141203
142- ue_PyFAssetData *py_ue_is_fassetdata (PyObject *obj) {
204+ ue_PyFAssetData *py_ue_is_fassetdata (PyObject *obj)
205+ {
143206 if (!PyObject_IsInstance (obj, (PyObject *)&ue_PyFAssetDataType))
144207 return nullptr ;
145208 return (ue_PyFAssetData *)obj;
0 commit comments