Skip to content

Commit 3be6b50

Browse files
authored
Merge pull request 20tab#619 from dfb/pr_fvector_division
Fixed division bug in FVector
2 parents 7b89d52 + 2492243 commit 3be6b50

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

Source/UnrealEnginePython/Private/Wrappers/UEPyFVector.cpp

Lines changed: 20 additions & 1 deletion
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)
@@ -363,7 +381,8 @@ void ue_python_init_fvector(PyObject *ue_module)
363381
ue_PyFVector_number_methods.nb_add = (binaryfunc)ue_py_fvector_add;
364382
ue_PyFVector_number_methods.nb_subtract = (binaryfunc)ue_py_fvector_sub;
365383
ue_PyFVector_number_methods.nb_multiply = (binaryfunc)ue_py_fvector_mul;
366-
ue_PyFVector_number_methods.nb_divmod = (binaryfunc)ue_py_fvector_div;
384+
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)