diff options
author | Campbell Barton <ideasman42@gmail.com> | 2009-05-19 11:16:40 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2009-05-19 11:16:40 +0400 |
commit | 1a16fb1953a566cd57f49683d4711b7052d6b586 (patch) | |
tree | 01b9ea221ec4f4ce9942b9bb2d0b642aba78529a /source/gameengine/Ketsji/KX_Light.cpp | |
parent | 5bd4b25dd1997672e4487f7dcba76e4b74ce814f (diff) |
BGE Py API
use PY_SET_ATTR_FAIL and PY_SET_ATTR_SUCCESS return values so the fake subclassing can know if a value failed to be set or if it was missing from the type. (with PY_SET_ATTR_MISSING)
Also noticed some other mistakes.
- KX_LightObject, setting the type didnt check for an int.
- KX_SoundActuator, didnt return an error when assigning an invalid orientation value
- KX_GameObject, worldOrientation didnt return an error value.
Diffstat (limited to 'source/gameengine/Ketsji/KX_Light.cpp')
-rw-r--r-- | source/gameengine/Ketsji/KX_Light.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/source/gameengine/Ketsji/KX_Light.cpp b/source/gameengine/Ketsji/KX_Light.cpp index df7691d016b..1496f34c5f2 100644 --- a/source/gameengine/Ketsji/KX_Light.cpp +++ b/source/gameengine/Ketsji/KX_Light.cpp @@ -261,9 +261,9 @@ int KX_LightObject::pyattr_set_color(void *self_v, const KX_PYATTRIBUTE_DEF *att self->m_lightobj.m_red = color[0]; self->m_lightobj.m_green = color[1]; self->m_lightobj.m_blue = color[2]; - return 0; + return PY_SET_ATTR_SUCCESS; } - return 1; + return PY_SET_ATTR_FAIL; } PyObject* KX_LightObject::pyattr_get_typeconst(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef) @@ -293,6 +293,11 @@ int KX_LightObject::pyattr_set_type(void* self_v, const KX_PYATTRIBUTE_DEF *attr { KX_LightObject* self = static_cast<KX_LightObject*>(self_v); int val = PyInt_AsLong(value); + if((val==-1 && PyErr_Occurred()) || val<0 || val>2) { + PyErr_SetString(PyExc_ValueError, "light.type= val: KX_LightObject, expected an int between 0 and 2"); + return PY_SET_ATTR_FAIL; + } + switch(val) { case 0: self->m_lightobj.m_type = self->m_lightobj.LIGHT_SPOT; @@ -300,7 +305,7 @@ int KX_LightObject::pyattr_set_type(void* self_v, const KX_PYATTRIBUTE_DEF *attr case 1: self->m_lightobj.m_type = self->m_lightobj.LIGHT_SUN; break; - default: + case 2: self->m_lightobj.m_type = self->m_lightobj.LIGHT_NORMAL; break; } |