//------------------------------------------------------------------------------------- PyObject* ScriptVector4::py_inplace_multiply(PyObject *self, PyObject *b) { float value = float(PyFloat_AsDouble(b)); ScriptVector4* sv = static_cast<ScriptVector4*>(self); sv->setVector(sv->getVector() * value); Py_INCREF(sv); return sv; }
//------------------------------------------------------------------------------------- PyObject* ScriptVector4::__py_pySet(PyObject* self, PyObject* args) { ScriptVector4* sv = static_cast<ScriptVector4*>(self); bool good = false; Vector4 v; // 如果参数只有1个元素 int tupleSize = (int)PyTuple_Size(args); if(tupleSize == 1) { PyObject* pyItem = PyTuple_GetItem(args, 0); if(ScriptVector4::check(pyItem, false)) { convertPyObjectToVector4(v, pyItem); good = true; } else { float f = float(PyFloat_AsDouble(pyItem)); for (int i=0; i < VECTOR_SIZE; ++i) { v[i] = f; } good = true; } } else if(tupleSize >= VECTOR_SIZE) { convertPyObjectToVector4(v, args); good = true; } if(!good) { PyErr_Format(PyExc_TypeError, "Vector.set must be set to a tuple of %d floats, or one float", VECTOR_SIZE); PyErr_PrintEx(0); return NULL; } sv->setVector(v); S_Return; }