BGE Py API
authorCampbell Barton <ideasman42@gmail.com>
Sun, 22 Feb 2009 10:22:49 +0000 (10:22 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Sun, 22 Feb 2009 10:22:49 +0000 (10:22 +0000)
print filename:line with ShowDeprecationWarning().
Typo in scripttemplate_gamelogic.py
removed 2 unneeded typedefs

intern/SoundSystem/openal/SND_OpenALDevice.h
intern/SoundSystem/sdl/SND_SDLCDDevice.h
release/scripts/scripttemplate_gamelogic.py
source/gameengine/Expressions/Value.cpp

index b8c64762a56441ce9421d05fa20b3eae52adcd06..a7b97cc314f5f3571bdf9e2d974c64461a80da4b 100644 (file)
@@ -32,7 +32,7 @@
 #include "SND_AudioDevice.h"
 #include "SoundDefines.h"
 
-typedef struct SDL_CD;
+struct SDL_CD;
 
 class SND_OpenALDevice : public SND_AudioDevice
 {
index 15cb1975d744077b2516514d6bf951033dd4a70a..96600d53630daba3941f96307f5220487f9f7348 100644 (file)
@@ -29,7 +29,7 @@
 #ifndef SND_SDLCDDEVICE
 #define SND_SDLCDDEVICE
 
-typedef struct SDL_CD;
+struct SDL_CD;
 
 class SND_SDLCDDevice
 {
index 7184d7e424fcf3e2344660c2b2e1661d1b7fb5ba..01348e86d0a04fe2830db82aee26840e562fb02d 100644 (file)
@@ -11,6 +11,9 @@ import bpy
 
 script_data = \
 '''
+# This script must be assigned to a python controller
+# where it can access the object that owns it and the sensors/actuators that it connects to.
+
 # GameLogic has been added to the global namespace no need to import
 
 # for keyboard event comparison
@@ -50,7 +53,7 @@ def main():
        for actu in cont.getActuators():
                # The actuator can be on another object, we may want to use it
                own_actu = actu.getOwner()
-               print '    actuator:', sens.getName()
+               print '    actuator:', actu.getName()
                
                # This runs the actuator or turns it off
                # note that actuators will continue to run unless explicitly turned off.
index f30dd1a71ed2680c547faf68f47b7e10639c499b..9b26cda01b3e619f9d428e90b54ef90dbf9cd6df 100644 (file)
@@ -859,7 +859,42 @@ void CValue::SetDeprecationWarnings(bool ignoreDeprecationWarnings)
 
 void CValue::ShowDeprecationWarning(const char* old_way,const char* new_way)
 {
-       if (!m_ignore_deprecation_warnings)
+       if (!m_ignore_deprecation_warnings) {
                printf("Method %s is deprecated, please use %s instead.\n", old_way, new_way);
+               
+               // import sys; print '\t%s:%d' % (sys._getframe(0).f_code.co_filename, sys._getframe(0).f_lineno)
+               
+               PyObject *getframe, *frame;
+               PyObject *f_lineno, *f_code, *co_filename;
+               
+               getframe = PySys_GetObject("_getframe"); // borrowed
+               if (getframe) {
+                       frame = PyObject_CallObject(getframe, NULL);
+                       if (frame) {
+                               f_lineno= PyObject_GetAttrString(frame, "f_lineno");
+                               f_code= PyObject_GetAttrString(frame, "f_code");
+                               if (f_lineno && f_code) {
+                                       co_filename= PyObject_GetAttrString(f_code, "co_filename");
+                                       if (co_filename) {
+                                               
+                                               printf("\t%s:%d\n", PyString_AsString(co_filename), (int)PyInt_AsLong(f_lineno));
+                                               
+                                               Py_DECREF(f_lineno);
+                                               Py_DECREF(f_code);
+                                               Py_DECREF(co_filename);
+                                               Py_DECREF(frame);
+                                               return;
+                                       }
+                               }
+                               
+                               Py_XDECREF(f_lineno);
+                               Py_XDECREF(f_code);
+                               Py_DECREF(frame);
+                       }
+                       
+               }
+               PyErr_Clear();
+               printf("\tERROR - Could not access sys._getframe(0).f_lineno or sys._getframe().f_code.co_filename\n");
+       }
 }