message: preliminary support for new 4.15 properties
diff: @@ -1342,11 +1342,21 @@ PyObject *ue_py_convert_property(UProperty *prop, uint8 *buffer) {
  return PyLong_FromLong(value);
  }
  + if (auto casted_prop = Cast<UUInt32Property>(prop)) {
  + uint32 value = casted_prop->GetPropertyValue_InContainer(buffer);
  + return PyLong_FromUnsignedLong(value);
  + }
  +
  if (auto casted_prop = Cast<UInt64Property>(prop)) {
  long long value = casted_prop->GetPropertyValue_InContainer(buffer);
  return PyLong_FromLongLong(value);
  }
  + if (auto casted_prop = Cast<UUInt64Property>(prop)) {
  + uint64 value = casted_prop->GetPropertyValue_InContainer(buffer);
  + return PyLong_FromUnsignedLongLong(value);
  + }
  +
  if (auto casted_prop = Cast<UFloatProperty>(prop)) {
  float value = casted_prop->GetPropertyValue_InContainer(buffer);
  return PyFloat_FromDouble(value);
  @@ -1357,6 +1367,14 @@ PyObject *ue_py_convert_property(UProperty *prop, uint8 *buffer) {
  return PyLong_FromLong(value);
  }
  +#if ENGINE_MINOR_VERSION >= 15
  + if (auto casted_prop = Cast<UEnumProperty>(prop)) {
  + UEnum *value = casted_prop->GetEnum();
  + uint64 enum_index = casted_prop->GetUnderlyingProperty()->GetUnsignedIntPropertyValue(buffer);
  + return PyLong_FromUnsignedLong(enum_index);
  + }
  +#endif
  +
  if (auto casted_prop = Cast<UStrProperty>(prop)) {
  FString value = casted_prop->GetPropertyValue_InContainer(buffer);
  return PyUnicode_FromString(TCHAR_TO_UTF8(*value));
  @@ -1471,6 +1489,41 @@ PyObject *ue_py_convert_property(UProperty *prop, uint8 *buffer) {
  return py_list;
  }
  +#if ENGINE_MINOR_VERSION >= 15
  + if (auto casted_prop = Cast<UMapProperty>(prop)) {
  + FScriptMapHelper_InContainer map_helper(casted_prop, buffer);
  +
  + PyObject *py_dict = PyDict_New();
  +
  + int32 num = map_helper.Num();
  + for (int32 i = 0; num; i++) {
  + if (map_helper.IsValidIndex(i)) {
  + num--;
  +
  + uint8 *key = map_helper.GetKeyPtr(i);
  + PyObject *py_key = ue_py_convert_property(map_helper.KeyProp, key);
  + if (!py_key) {
  + Py_DECREF(py_dict);
  + return NULL;
  + }
  +
  + uint8 *value = map_helper.GetValuePtr(i);
  + PyObject *py_value = ue_py_convert_property(map_helper.ValueProp, value);
  + if (!py_value) {
  + Py_DECREF(py_dict);
  + return NULL;
  + }
  +
  + PyDict_SetItem(py_dict, py_key, py_value);
  + Py_DECREF(py_key);
  + Py_DECREF(py_value);
  + }
  + }
  +
  + return py_dict;
  + }
  +#endif
  +
  return PyErr_Format(PyExc_Exception, "unsupported value type %s for property %s", TCHAR_TO_UTF8(*prop->GetClass()->GetName()), TCHAR_TO_UTF8(*prop->GetName()));
  }
  