@@ -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+
280298PyNumberMethods ue_PyFVector_number_methods;
281299
282300static 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