BGE : KX_VertexProxy support for more than 2 UV channel.
I have added an optional named "index" argument for methode get/setUV, I have also modified the and set to deprecated methodes setUV2 and getUV2 : the doc was wrong and the methode can't be called anyway because it declared as VARARG in the .h and convert directly the args value to a vector in the .cpp. Reviewers: sybren, lordloki, hg1 Reviewed By: lordloki, hg1 Subscribers: agoose77 Differential Revision: https://developer.blender.org/D1240
This commit is contained in:
parent
de180aba35
commit
fb0dd596e9
Notes:
blender-bot
2023-02-14 10:09:24 +01:00
Referenced by commit 5aade17bdf
, Revert "BGE : KX_VertexProxy support for more than 2 UV channel."
|
@ -25,6 +25,12 @@ base class --- :class:`SCA_IObject`
|
|||
|
||||
:type: Vector((u, v))
|
||||
|
||||
.. attribute:: uvs
|
||||
|
||||
A list of all the texture coordinates of the vertex.
|
||||
|
||||
:type: list of Vector((u, v))
|
||||
|
||||
.. attribute:: normal
|
||||
|
||||
The normal of the vertex.
|
||||
|
@ -120,18 +126,24 @@ base class --- :class:`SCA_IObject`
|
|||
|
||||
:arg pos: the new position for this vertex in local coordinates.
|
||||
|
||||
.. method:: getUV()
|
||||
.. method:: getUV(index=0)
|
||||
|
||||
Gets the UV (texture) coordinates of this vertex.
|
||||
|
||||
:arg index: the UV (texture) channel (optional).
|
||||
:type index: integer
|
||||
|
||||
:return: this vertexes UV (texture) coordinates.
|
||||
:rtype: Vector((u, v))
|
||||
|
||||
.. method:: setUV(uv)
|
||||
.. method:: setUV(uv, index=0)
|
||||
|
||||
Sets the UV (texture) coordinates of this vertex.
|
||||
|
||||
:type: Vector((u, v))
|
||||
:arg uv: the UV (texture) coordinate of this vertex.
|
||||
:type uv: Vector((u, v))
|
||||
:arg index: the UV (texture) channel (optional).
|
||||
:type index: integer
|
||||
|
||||
.. method:: getUV2()
|
||||
|
||||
|
@ -140,14 +152,16 @@ base class --- :class:`SCA_IObject`
|
|||
:return: this vertexes UV (texture) coordinates.
|
||||
:rtype: Vector((u, v))
|
||||
|
||||
.. method:: setUV2(uv, unit)
|
||||
.. deprecated:: use :meth:`getUV`
|
||||
|
||||
.. method:: setUV2(uv)
|
||||
|
||||
Sets the 2nd UV (texture) coordinates of this vertex.
|
||||
|
||||
:type: Vector((u, v))
|
||||
:arg uv: the 2nd (texture) UV coordinate of this vertex.
|
||||
:type uv: Vector((u, v))
|
||||
|
||||
:arg unit: optional argument, FLAT==1, SECOND_UV==2, defaults to SECOND_UV
|
||||
:arg unit: integer
|
||||
.. deprecated:: use :meth:`setUV`
|
||||
|
||||
.. method:: getRGBA()
|
||||
|
||||
|
|
|
@ -63,11 +63,11 @@ PyTypeObject KX_VertexProxy::Type = {
|
|||
PyMethodDef KX_VertexProxy::Methods[] = {
|
||||
{"getXYZ", (PyCFunction)KX_VertexProxy::sPyGetXYZ,METH_NOARGS},
|
||||
{"setXYZ", (PyCFunction)KX_VertexProxy::sPySetXYZ,METH_O},
|
||||
{"getUV", (PyCFunction)KX_VertexProxy::sPyGetUV1, METH_NOARGS},
|
||||
{"setUV", (PyCFunction)KX_VertexProxy::sPySetUV1, METH_O},
|
||||
{"getUV", (PyCFunction)KX_VertexProxy::sPyGetUV, METH_VARARGS},
|
||||
{"setUV", (PyCFunction)KX_VertexProxy::sPySetUV, METH_VARARGS},
|
||||
|
||||
{"getUV2", (PyCFunction)KX_VertexProxy::sPyGetUV2,METH_NOARGS},
|
||||
{"setUV2", (PyCFunction)KX_VertexProxy::sPySetUV2,METH_VARARGS},
|
||||
{"setUV2", (PyCFunction)KX_VertexProxy::sPySetUV2, METH_O},
|
||||
|
||||
{"getRGBA", (PyCFunction)KX_VertexProxy::sPyGetRGBA,METH_NOARGS},
|
||||
{"setRGBA", (PyCFunction)KX_VertexProxy::sPySetRGBA,METH_O},
|
||||
|
@ -423,7 +423,6 @@ int KX_VertexProxy::pyattr_set_uvs(void *self_v, const struct KX_PYATTRIBUTE_DEF
|
|||
if (PyVecTo(PySequence_GetItem(value, i), vec))
|
||||
{
|
||||
self->m_vertex->SetUV(i, vec);
|
||||
self->m_mesh->SetMeshModified(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -559,25 +558,45 @@ PyObject *KX_VertexProxy::PySetRGBA(PyObject *value)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
PyObject *KX_VertexProxy::PyGetUV1()
|
||||
PyObject *KX_VertexProxy::PyGetUV(PyObject *args)
|
||||
{
|
||||
return PyObjectFrom(MT_Vector2(m_vertex->getUV(0)));
|
||||
}
|
||||
|
||||
PyObject *KX_VertexProxy::PySetUV1(PyObject *value)
|
||||
{
|
||||
MT_Point2 vec;
|
||||
if (!PyVecTo(value, vec))
|
||||
int index = 0;
|
||||
if (!PyArg_ParseTuple(args, "|i:getUV", &index))
|
||||
return NULL;
|
||||
|
||||
m_vertex->SetUV(0, vec);
|
||||
if (index < 0 || index > (RAS_TexVert::MAX_UNIT - 1)) {
|
||||
PyErr_Format(PyExc_TypeError, "vert.getUV(index): KX_VertexProxy, expected an int between 0 and %i", (RAS_TexVert::MAX_UNIT - 1));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return PyObjectFrom(MT_Vector2(m_vertex->getUV(index)));
|
||||
}
|
||||
|
||||
PyObject *KX_VertexProxy::PySetUV(PyObject *args)
|
||||
{
|
||||
PyObject *pyvect;
|
||||
int index = 0;
|
||||
if (!PyArg_ParseTuple(args, "O|i:setUV", &pyvect, &index))
|
||||
return NULL;
|
||||
|
||||
if (index < 0 || index > (RAS_TexVert::MAX_UNIT - 1)) {
|
||||
PyErr_Format(PyExc_TypeError, "vert.setUV(uv, index): KX_VertexProxy, expected an int between 0 and %i", (RAS_TexVert::MAX_UNIT - 1));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
MT_Point2 vec;
|
||||
if (!PyVecTo(pyvect, vec))
|
||||
return NULL;
|
||||
|
||||
m_vertex->SetUV(index, vec);
|
||||
m_mesh->SetMeshModified(true);
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
PyObject *KX_VertexProxy::PyGetUV2()
|
||||
{
|
||||
ShowDeprecationWarning("getUV2()", "getUV(1)");
|
||||
|
||||
return PyObjectFrom(MT_Vector2(m_vertex->getUV(1)));
|
||||
}
|
||||
|
||||
|
@ -587,6 +606,8 @@ PyObject *KX_VertexProxy::PySetUV2(PyObject *args)
|
|||
if (!PyVecTo(args, vec))
|
||||
return NULL;
|
||||
|
||||
ShowDeprecationWarning("setUV2(uv)", "setUV(uv, 1)");
|
||||
|
||||
m_vertex->SetUV(1, vec);
|
||||
m_mesh->SetMeshModified(true);
|
||||
Py_RETURN_NONE;
|
||||
|
|
|
@ -94,11 +94,11 @@ public:
|
|||
|
||||
KX_PYMETHOD_NOARGS(KX_VertexProxy,GetXYZ);
|
||||
KX_PYMETHOD_O(KX_VertexProxy,SetXYZ);
|
||||
KX_PYMETHOD_NOARGS(KX_VertexProxy,GetUV1);
|
||||
KX_PYMETHOD_O(KX_VertexProxy,SetUV1);
|
||||
KX_PYMETHOD_VARARGS(KX_VertexProxy, GetUV);
|
||||
KX_PYMETHOD_VARARGS(KX_VertexProxy, SetUV);
|
||||
|
||||
KX_PYMETHOD_NOARGS(KX_VertexProxy,GetUV2);
|
||||
KX_PYMETHOD_VARARGS(KX_VertexProxy,SetUV2);
|
||||
KX_PYMETHOD_O(KX_VertexProxy, SetUV2);
|
||||
|
||||
KX_PYMETHOD_NOARGS(KX_VertexProxy,GetRGBA);
|
||||
KX_PYMETHOD_O(KX_VertexProxy,SetRGBA);
|
||||
|
|
Loading…
Reference in New Issue