static PyObject *ue_py_frotator_sub(ue_PyFRotator *self, PyObject *value) { FRotator rot = self->rot; ue_PyFRotator *py_rot = py_ue_is_frotator(value); if (py_rot) { rot -= py_rot->rot; } else if (PyNumber_Check(value)) { PyObject *f_value = PyNumber_Float(value); float f = PyFloat_AsDouble(f_value); rot.Pitch -= f; rot.Yaw -= f; rot.Roll -= f; Py_DECREF(f_value); } return py_ue_new_frotator(rot); }
static PyObject *ue_py_frotator_div(ue_PyFRotator *self, PyObject *value) { FRotator rot = self->rot; if (PyNumber_Check(value)) { PyObject *f_value = PyNumber_Float(value); float f = PyFloat_AsDouble(f_value); if (f == 0) return PyErr_Format(PyExc_ZeroDivisionError, "division by zero"); rot.Pitch /= f; rot.Yaw /= f; rot.Roll /= f; Py_DECREF(f_value); return py_ue_new_frotator(rot); } return PyErr_Format(PyExc_TypeError, "unsupported argument type"); }
static PyObject *ue_py_frotator_mul(ue_PyFRotator *self, PyObject *value) { ue_PyFVector *py_vec = py_ue_is_fvector(value); if (py_vec) { FVector vec = self->rot.RotateVector(py_vec->vec); return py_ue_new_fvector(vec); } else if (PyNumber_Check(value)) { FRotator rot = self->rot; PyObject *f_value = PyNumber_Float(value); float f = PyFloat_AsDouble(f_value); rot.Pitch *= f; rot.Yaw *= f; rot.Roll *= f; Py_DECREF(f_value); return py_ue_new_frotator(rot); } return PyErr_Format(PyExc_TypeError, "unsupported argument type"); }
static PyObject *py_ue_frotator_normalized(ue_PyFRotator *self, PyObject * args) { FRotator rot = self->rot.GetNormalized(); return py_ue_new_frotator(rot); }
static PyObject *py_ue_frotator_inversed(ue_PyFRotator *self, PyObject * args) { FRotator rot = self->rot.GetInverse(); return py_ue_new_frotator(rot); }
static PyObject *py_ue_ffoliage_instance_get_rotation(ue_PyFFoliageInstance *self, void *closure) { get_instance(self); return py_ue_new_frotator(instance->Rotation); }