예제 #1
0
//-------------------------------------------------------------------------------------
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;
}
예제 #2
0
//-------------------------------------------------------------------------------------
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;
}