diff options
author | Benoit Bolsee <benoit.bolsee@online.be> | 2009-04-01 12:59:36 +0400 |
---|---|---|
committer | Benoit Bolsee <benoit.bolsee@online.be> | 2009-04-01 12:59:36 +0400 |
commit | 48e4a4834092a8772141e6240e5e70d67110f126 (patch) | |
tree | 3def4fda774b7c9e4fac7320fbed3fd0165e589a /source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp | |
parent | 1e2f736d3a1813742e77373beb461a8b6645ac32 (diff) |
BGE API cleanup: ReplaceMeshActuator mesh attributes now returns a KX_MeshProxy. Fix a bug in KX_MeshProxy where the Python type was not set right.
Diffstat (limited to 'source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp')
-rw-r--r-- | source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp b/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp index 2f971084a39..58d6f659135 100644 --- a/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp +++ b/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp @@ -36,6 +36,7 @@ // Please look here for revision history. #include "KX_SCA_ReplaceMeshActuator.h" +#include "KX_MeshProxy.h" #include "PyObjectPlus.h" @@ -115,7 +116,8 @@ PyObject* KX_SCA_ReplaceMeshActuator::pyattr_get_mesh(void *self, const struct K KX_SCA_ReplaceMeshActuator* actuator = static_cast<KX_SCA_ReplaceMeshActuator*>(self); if (!actuator->m_mesh) Py_RETURN_NONE; - return PyString_FromString(const_cast<char *>(actuator->m_mesh->GetName().ReadPtr())); + KX_MeshProxy* meshproxy = new KX_MeshProxy(actuator->m_mesh); + return meshproxy; } int KX_SCA_ReplaceMeshActuator::pyattr_set_mesh(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value) @@ -123,18 +125,19 @@ int KX_SCA_ReplaceMeshActuator::pyattr_set_mesh(void *self, const struct KX_PYAT KX_SCA_ReplaceMeshActuator* actuator = static_cast<KX_SCA_ReplaceMeshActuator*>(self); if (value == Py_None) { actuator->m_mesh = NULL; - } else { - char* meshname = PyString_AsString(value); - if (!meshname) { - PyErr_SetString(PyExc_ValueError, "Expected the name of a mesh or None"); - return 1; - } - void* mesh = SCA_ILogicBrick::m_sCurrentLogicManager->GetMeshByName(STR_String(meshname)); + } else if (PyString_Check(value)) { + void* mesh = SCA_ILogicBrick::m_sCurrentLogicManager->GetMeshByName(STR_String(PyString_AsString(value))); if (mesh==NULL) { PyErr_SetString(PyExc_ValueError, "The mesh name given does not exist"); return 1; } actuator->m_mesh= (class RAS_MeshObject*)mesh; + } else if PyObject_TypeCheck(value, &KX_MeshProxy::Type) { + KX_MeshProxy* proxy = (KX_MeshProxy*)value; + actuator->m_mesh= proxy->GetMesh(); + } else { + PyErr_SetString(PyExc_ValueError, "Expected the name of a mesh, a mesh proxy or None"); + return 1; } return 0; } |