[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18177] trunk/blender/source/gameengine/ GameLogic: BGE API cleanup: more consistent type check on set attribute ( mouse and keyboard so far).
Benoit Bolsee
benoit.bolsee at online.be
Tue Dec 30 17:44:34 CET 2008
Revision: 18177
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18177
Author: ben2610
Date: 2008-12-30 17:44:34 +0100 (Tue, 30 Dec 2008)
Log Message:
-----------
BGE API cleanup: more consistent type check on set attribute (mouse and keyboard so far). Check type after name so that the user get a type error when assigning a wrong type to a built-in attribute.
Modified Paths:
--------------
trunk/blender/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
trunk/blender/source/gameengine/GameLogic/SCA_MouseSensor.cpp
Modified: trunk/blender/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
===================================================================
--- trunk/blender/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp 2008-12-30 16:04:27 UTC (rev 18176)
+++ trunk/blender/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp 2008-12-30 16:44:34 UTC (rev 18177)
@@ -846,49 +846,64 @@
int SCA_KeyboardSensor::_setattr(const STR_String& attr, PyObject *value)
{
- if (PyInt_Check(value))
+ if (attr == "key")
{
- int val = PyInt_AsLong(value);
-
- if (attr == "key")
- {
- m_hotkey = val;
- return 0;
+ if (!PyInt_Check(value)){
+ PyErr_SetString(PyExc_TypeError, "expected an integer");
+ return 1;
}
+ m_hotkey = PyInt_AsLong(value);
+ return 0;
+ }
- if (attr == "hold1")
- {
- m_qual = val;
- return 0;
+ if (attr == "hold1")
+ {
+ if (!PyInt_Check(value)){
+ PyErr_SetString(PyExc_TypeError, "expected an integer");
+ return 1;
}
-
- if (attr == "hold2")
- {
- m_qual2 = val;
- return 0;
+ m_qual = PyInt_AsLong(value);
+ return 0;
+ }
+
+ if (attr == "hold2")
+ {
+ if (!PyInt_Check(value)){
+ PyErr_SetString(PyExc_TypeError, "expected an integer");
+ return 1;
}
+ m_qual2 = PyInt_AsLong(value);
+ return 0;
+ }
- if (attr == "useAllKeys")
- {
- m_bAllKeys = (val != 0);
- return 0;
+ if (attr == "useAllKeys")
+ {
+ if (!PyInt_Check(value)){
+ PyErr_SetString(PyExc_TypeError, "expected an integer");
+ return 1;
}
+ m_bAllKeys = (PyInt_AsLong(value) != 0);
+ return 0;
}
-
- if (PyString_Check(value))
+
+ if (attr == "logToggleProperty")
{
- STR_String val = PyString_AsString(value);
- if (attr == "logToggleProperty")
- {
- m_toggleprop = val;
- return 0;
+ if (!PyString_Check(value)){
+ PyErr_SetString(PyExc_TypeError, "expected a string");
+ return 1;
}
+ m_toggleprop = PyString_AsString(value);
+ return 0;
+ }
- if (attr == "logTargetProperty")
- {
- m_targetprop = val;
- return 0;
+ if (attr == "logTargetProperty")
+ {
+ if (!PyString_Check(value)){
+ PyErr_SetString(PyExc_TypeError, "expected a string");
+ return 1;
}
+ m_targetprop = PyString_AsString(value);
+ return 0;
}
return SCA_ISensor::_setattr(attr, value);
Modified: trunk/blender/source/gameengine/GameLogic/SCA_MouseSensor.cpp
===================================================================
--- trunk/blender/source/gameengine/GameLogic/SCA_MouseSensor.cpp 2008-12-30 16:04:27 UTC (rev 18176)
+++ trunk/blender/source/gameengine/GameLogic/SCA_MouseSensor.cpp 2008-12-30 16:44:34 UTC (rev 18177)
@@ -343,31 +343,30 @@
int SCA_MouseSensor::_setattr(const STR_String& attr, PyObject *value)
{
- if (PyInt_Check(value))
+ if (attr == "mode")
{
+ if (!PyInt_Check(value)){
+ PyErr_SetString(PyExc_TypeError, "expected an integer");
+ return 1;
+ }
+
int val = PyInt_AsLong(value);
-
- if (attr == "mode")
- {
- if ((val < KX_MOUSESENSORMODE_NODEF)
- || (val > KX_MOUSESENSORMODE_MAX)){
-
- PyErr_SetString(PyExc_ValueError, "invalid mode specified!");
- return NULL;
- }
-
- m_mousemode = val;
- UpdateHotkey();
- return 0;
+
+ if ((val < KX_MOUSESENSORMODE_NODEF)
+ || (val > KX_MOUSESENSORMODE_MAX)){
+ PyErr_SetString(PyExc_ValueError, "invalid mode specified!");
+ return 1;
}
+
+ m_mousemode = val;
+ UpdateHotkey();
+ return 0;
}
- else
+
+ if (attr == "position")
{
- if (attr == "position")
- {
- PyErr_SetString(PyExc_AttributeError, "read-only property!");
- return NULL;
- }
+ PyErr_SetString(PyExc_AttributeError, "'position' is a read-only property!");
+ return 1;
}
return SCA_ISensor::_setattr(attr, value);
More information about the Bf-blender-cvs
mailing list