Skip to content

Commit 2492243

Browse files
committed
added support for FVector floor division
1 parent aac1c53 commit 2492243

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

Source/UnrealEnginePython/Private/Wrappers/UEPyFVector.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,24 @@ static PyObject *ue_py_fvector_div(ue_PyFVector *self, PyObject *value)
277277
return py_ue_new_fvector(vec);
278278
}
279279

280+
static PyObject *ue_py_fvector_floor_div(ue_PyFVector *self, PyObject *value)
281+
{
282+
FVector vec = self->vec;
283+
if (PyNumber_Check(value))
284+
{
285+
PyObject *f_value = PyNumber_Float(value);
286+
float f = PyFloat_AsDouble(f_value);
287+
if (f == 0)
288+
return PyErr_Format(PyExc_ZeroDivisionError, "division by zero");
289+
vec.X = floor(vec.X / f);
290+
vec.Y = floor(vec.Y / f);
291+
vec.Z = floor(vec.Z / f);
292+
Py_DECREF(f_value);
293+
return py_ue_new_fvector(vec);
294+
}
295+
return PyErr_Format(PyExc_TypeError, "value is not numeric");
296+
}
297+
280298
PyNumberMethods ue_PyFVector_number_methods;
281299

282300
static Py_ssize_t ue_py_fvector_seq_length(ue_PyFVector *self)
@@ -364,6 +382,7 @@ void ue_python_init_fvector(PyObject *ue_module)
364382
ue_PyFVector_number_methods.nb_subtract = (binaryfunc)ue_py_fvector_sub;
365383
ue_PyFVector_number_methods.nb_multiply = (binaryfunc)ue_py_fvector_mul;
366384
ue_PyFVector_number_methods.nb_true_divide = (binaryfunc)ue_py_fvector_div;
385+
ue_PyFVector_number_methods.nb_floor_divide = (binaryfunc)ue_py_fvector_floor_div;
367386

368387
memset(&ue_PyFVector_sequence_methods, 0, sizeof(PySequenceMethods));
369388
ue_PyFVectorType.tp_as_sequence = &ue_PyFVector_sequence_methods;

0 commit comments

Comments
 (0)