Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenoit Bolsee <benoit.bolsee@online.be>2009-04-01 12:59:36 +0400
committerBenoit Bolsee <benoit.bolsee@online.be>2009-04-01 12:59:36 +0400
commit48e4a4834092a8772141e6240e5e70d67110f126 (patch)
tree3def4fda774b7c9e4fac7320fbed3fd0165e589a /source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp
parent1e2f736d3a1813742e77373beb461a8b6645ac32 (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.cpp19
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;
}