57PyObject* buildIndexVertex(
size_t iVertex,
size_t iNormal,
size_t iUv)
59 python::PyObjectPtr<PyObject>::Type tuple;
61 LASS_ASSERT(iVertex != prim::IndexTriangle::null());
62 if (iNormal == prim::IndexTriangle::null())
64 if (iUv == prim::IndexTriangle::null())
66 tuple = python::makeTuple(iVertex);
75 if (iUv == prim::IndexTriangle::null())
77 tuple = python::makeTuple(iVertex, iNormal);
81 tuple = python::makeTuple(iVertex, iNormal, iUv);
90int getIndexVertex(PyObject* iIndices,
size_t& oVertex,
size_t& oNormal,
size_t& oUv)
92 size_t vertex = prim::IndexTriangle::null();
93 size_t normal = prim::IndexTriangle::null();
94 size_t uv = prim::IndexTriangle::null();
96 TPyObjPtr tuple(PySequence_Fast(iIndices,
"expected a sequence (tuple, list, ...)"));
101 const Py_ssize_t size = PySequence_Fast_GET_SIZE(tuple.get());
106 if (size == 0 || size > 3)
108 PyErr_SetString(PyExc_TypeError,
"is not (v [, vn [, vt]])");
111 PyObject** objects = PySequence_Fast_ITEMS(tuple.get());
112 if (pyGetSimpleObject(objects[0], vertex) != 0)
117 if (size > 1 && objects[1] != Py_None)
119 if (pyGetSimpleObject(objects[1], normal) != 0)
125 if (size > 2 && objects[2] != Py_None)
127 if (pyGetSimpleObject(objects[2], uv) != 0)
void addMessageHeader(const char *header)
Prepend a message to the current Python exception value.
PyObjectPtr< PyObject >::Type TPyObjPtr
PyObjectPtr to a PyObject.
PyObject * fromSharedPtrToNakedCast(const util::SharedPtr< T, PyObjectStorage, PyObjectCounter > &object)
fromSharedPtrToNakedCast.
lass::util::SharedPtr< T, PyObjectStorage, PyObjectCounter > fromNakedToSharedPtrCast(PyObject *object)
fromNakedToSharedPtrCast.
Comprehensive C++ to Python binding library.
Library for Assembled Shared Sources.