33#if WITH_EDITOR
44
55static PyObject *py_ue_fassetdata_get_asset (ue_PyFAssetData *self, PyObject * args) {
6- PyObject *ret = (PyObject *)ue_get_python_wrapper (self->asset_data -> GetAsset ());
6+ PyObject *ret = (PyObject *)ue_get_python_wrapper (self->asset_data . GetAsset ());
77 if (!ret) {
88 return PyErr_Format (PyExc_Exception, " unable to get UObject from asset" );
99 }
@@ -12,7 +12,7 @@ static PyObject *py_ue_fassetdata_get_asset(ue_PyFAssetData *self, PyObject * ar
1212}
1313
1414static PyObject *py_ue_fassetdata_is_asset_loaded (ue_PyFAssetData *self, PyObject * args) {
15- if (self->asset_data -> IsAssetLoaded ())
15+ if (self->asset_data . IsAssetLoaded ())
1616 Py_RETURN_TRUE;
1717 Py_RETURN_FALSE;
1818}
@@ -23,45 +23,74 @@ static PyMethodDef ue_PyFAssetData_methods[] = {
2323 { NULL } /* Sentinel */
2424};
2525
26- static PyMemberDef ue_PyFAssetData_members[] = {
27- { (char *)" asset_class" , T_OBJECT, offsetof (ue_PyFAssetData, asset_class), READONLY, (char *)" asset_class" },
28- { (char *)" asset_name" , T_OBJECT, offsetof (ue_PyFAssetData, asset_name), READONLY, (char *)" asset_name" },
29- { (char *)" group_names" , T_OBJECT, offsetof (ue_PyFAssetData, group_names), READONLY, (char *)" group_names" },
30- { (char *)" object_path" , T_OBJECT, offsetof (ue_PyFAssetData, object_path), READONLY, (char *)" object_path" },
31- { (char *)" package_flags" , T_OBJECT, offsetof (ue_PyFAssetData, package_flags), READONLY, (char *)" package_flags" },
32- { (char *)" package_name" , T_OBJECT, offsetof (ue_PyFAssetData, package_name), READONLY, (char *)" package_name" },
33- { (char *)" package_path" , T_OBJECT, offsetof (ue_PyFAssetData, package_path), READONLY, (char *)" package_path" },
34- { (char *)" tags_and_values" , T_OBJECT, offsetof (ue_PyFAssetData, tags_and_values), READONLY, (char *)" tags_and_values" },
26+ static PyObject *py_ue_fassetdata_get_asset_class (ue_PyFAssetData *self, void *closure) {
27+ return PyUnicode_FromString (TCHAR_TO_UTF8 (*self->asset_data .AssetClass .ToString ()));
28+ }
29+
30+ static PyObject *py_ue_fassetdata_get_asset_name (ue_PyFAssetData *self, void *closure) {
31+ return PyUnicode_FromString (TCHAR_TO_UTF8 (*self->asset_data .AssetName .ToString ()));
32+ }
33+
34+ static PyObject *py_ue_fassetdata_get_group_names (ue_PyFAssetData *self, void *closure) {
35+ return PyUnicode_FromString (TCHAR_TO_UTF8 (*self->asset_data .GroupNames .ToString ()));
36+ }
37+
38+ static PyObject *py_ue_fassetdata_get_object_path (ue_PyFAssetData *self, void *closure) {
39+ return PyUnicode_FromString (TCHAR_TO_UTF8 (*self->asset_data .ObjectPath .ToString ()));
40+ }
41+
42+ static PyObject *py_ue_fassetdata_get_package_flags (ue_PyFAssetData *self, void *closure) {
43+ return PyLong_FromUnsignedLong (self->asset_data .PackageFlags );
44+ }
45+
46+ static PyObject *py_ue_fassetdata_get_package_name (ue_PyFAssetData *self, void *closure) {
47+ return PyUnicode_FromString (TCHAR_TO_UTF8 (*self->asset_data .PackageName .ToString ()));
48+ }
49+
50+ static PyObject *py_ue_fassetdata_get_package_path (ue_PyFAssetData *self, void *closure) {
51+ return PyUnicode_FromString (TCHAR_TO_UTF8 (*self->asset_data .PackagePath .ToString ()));
52+ }
53+
54+ static PyObject *py_ue_fassetdata_get_tags_and_values (ue_PyFAssetData *self, void *closure) {
55+ PyObject *ret = PyDict_New ();
56+ for (auto It = self->asset_data .TagsAndValues .CreateConstIterator (); It; ++It)
57+ {
58+ PyDict_SetItem (ret,
59+ PyUnicode_FromString (TCHAR_TO_UTF8 (*It->Key .ToString ())),
60+ PyUnicode_FromString (TCHAR_TO_UTF8 (*It->Value )));
61+ }
62+ return ret;
63+ }
64+
65+ static PyGetSetDef ue_PyFAssetData_getseters[] = {
66+ { (char *)" asset_class" , (getter)py_ue_fassetdata_get_asset_class, nullptr , (char *)" asset_class" },
67+ { (char *)" asset_name" , (getter)py_ue_fassetdata_get_asset_name, nullptr , (char *)" asset_name" },
68+ { (char *)" group_names" , (getter)py_ue_fassetdata_get_group_names, nullptr , (char *)" group_names" },
69+ { (char *)" object_path" ,(getter)py_ue_fassetdata_get_object_path, nullptr , (char *)" object_path" },
70+ { (char *)" package_flags" ,(getter)py_ue_fassetdata_get_package_flags, nullptr , (char *)" package_flags" },
71+ { (char *)" package_name" , (getter)py_ue_fassetdata_get_package_name, nullptr , (char *)" package_name" },
72+ { (char *)" package_path" , (getter)py_ue_fassetdata_get_package_path, nullptr , (char *)" package_path" },
73+ { (char *)" tags_and_values" , (getter)py_ue_fassetdata_get_tags_and_values, nullptr , (char *)" tags_and_values" },
3574 { NULL } /* Sentinel */
3675};
3776
3877static int ue_py_fassetdata_init (ue_PyFAssetData *self, PyObject *args, PyObject *kwargs) {
39- return 0 ;
78+ // avoid FAssetData manual creation
79+ return -1 ;
4080}
4181
42- static void ue_py_fassetdata_dealloc (ue_PyFAssetData *self) {
43- Py_XDECREF (self->asset_class );
44- Py_XDECREF (self->asset_name );
45- Py_XDECREF (self->group_names );
46- Py_XDECREF (self->object_path );
47- Py_XDECREF (self->package_flags );
48- Py_XDECREF (self->package_name );
49- Py_XDECREF (self->package_path );
50- Py_XDECREF (self->tags_and_values );
51-
52- #if PY_MAJOR_VERSION < 3
53- self->ob_type ->tp_free ((PyObject*)self);
54- #else
55- Py_TYPE (self)->tp_free ((PyObject*)self);
56- #endif
82+ static PyObject *ue_PyFAssetData_str (ue_PyFAssetData *self)
83+ {
84+ return PyUnicode_FromFormat (" <unreal_engine.FColor '%s'>" ,
85+ TCHAR_TO_UTF8 (*self->asset_data .GetExportTextName ()));
5786}
5887
5988static PyTypeObject ue_PyFAssetDataType = {
6089 PyVarObject_HEAD_INIT (NULL , 0 )
6190 " unreal_engine.FAssetData" , /* tp_name */
6291 sizeof (ue_PyFAssetData), /* tp_basicsize */
6392 0 , /* tp_itemsize */
64- (destructor)ue_py_fassetdata_dealloc , /* tp_dealloc */
93+ 0 , /* tp_dealloc */
6594 0 , /* tp_print */
6695 0 , /* tp_getattr */
6796 0 , /* tp_setattr */
@@ -72,7 +101,7 @@ static PyTypeObject ue_PyFAssetDataType = {
72101 0 , /* tp_as_mapping */
73102 0 , /* tp_hash */
74103 0 , /* tp_call */
75- 0 , /* tp_str */
104+ (reprfunc)ue_PyFAssetData_str , /* tp_str */
76105 0 , /* tp_getattro */
77106 0 , /* tp_setattro */
78107 0 , /* tp_as_buffer */
@@ -85,8 +114,8 @@ static PyTypeObject ue_PyFAssetDataType = {
85114 0 , /* tp_iter */
86115 0 , /* tp_iternext */
87116 ue_PyFAssetData_methods, /* tp_methods */
88- ue_PyFAssetData_members , /* tp_members */
89- 0 , /* tp_getset */
117+ 0 , /* tp_members */
118+ ue_PyFAssetData_getseters , /* tp_getset */
90119};
91120
92121void ue_python_init_fassetdata (PyObject *ue_module) {
@@ -99,25 +128,10 @@ void ue_python_init_fassetdata(PyObject *ue_module) {
99128 PyModule_AddObject (ue_module, " FAssetData" , (PyObject *)&ue_PyFAssetDataType);
100129}
101130
102- PyObject *py_ue_new_fassetdata (FAssetData * asset_data) {
131+ PyObject *py_ue_new_fassetdata (FAssetData asset_data) {
103132 ue_PyFAssetData *ret = (ue_PyFAssetData *)PyObject_New (ue_PyFAssetData, &ue_PyFAssetDataType);
104133
105- ret->asset_class = PyUnicode_FromString (TCHAR_TO_UTF8 (*asset_data->AssetClass .ToString ()));
106- ret->asset_name = PyUnicode_FromString (TCHAR_TO_UTF8 (*asset_data->AssetName .ToString ()));
107- ret->group_names = PyUnicode_FromString (TCHAR_TO_UTF8 (*asset_data->GroupNames .ToString ()));
108- ret->object_path = PyUnicode_FromString (TCHAR_TO_UTF8 (*asset_data->ObjectPath .ToString ()));
109- ret->package_flags = PyLong_FromLong (asset_data->PackageFlags );
110- ret->package_name = PyUnicode_FromString (TCHAR_TO_UTF8 (*asset_data->PackageName .ToString ()));
111- ret->package_path = PyUnicode_FromString (TCHAR_TO_UTF8 (*asset_data->PackagePath .ToString ()));
112- ret->tags_and_values = PyDict_New ();
113- for (auto It = asset_data->TagsAndValues .CreateConstIterator (); It; ++It)
114- {
115- PyDict_SetItem (ret->tags_and_values ,
116- PyUnicode_FromString (TCHAR_TO_UTF8 (*It->Key .ToString ())),
117- PyUnicode_FromString (TCHAR_TO_UTF8 (*It->Value )));
118- }
119-
120- ret->asset_data = asset_data;
134+ new (&ret->asset_data ) FAssetData (asset_data);
121135 return (PyObject *)ret;
122136}
123137
0 commit comments