1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
#include "PerlOGREWindowEventListener.h"
// class implementing Ogre::WindowEventListener interface,
// but using Perl callbacks; pobj is an instance of a Perl class
// that (maybe) has implemented (some of) the WindowEventListener methods
PerlOGREWindowEventListener::PerlOGREWindowEventListener(SV *pobj)
: PerlOGRECallback(pobj)
{
mCanMap["windowMoved"] = perlCallbackCan("windowMoved");
mCanMap["windowResized"] = perlCallbackCan("windowResized");
mCanMap["windowClosed"] = perlCallbackCan("windowClosed");
mCanMap["windowFocusChange"] = perlCallbackCan("windowFocusChange");
}
void PerlOGREWindowEventListener::windowMoved(Ogre::RenderWindow *win)
{
// arg 1 for perl stack
SV *perlevt = newSV(0);
sv_setref_pv(perlevt, "Ogre::RenderWindow", (void *) win); // TMOGRE_OUT
mCallbackArgs.push_back(perlevt);
// call the callback
callPerlCallback("windowMoved");
}
void PerlOGREWindowEventListener::windowResized(Ogre::RenderWindow *win)
{
// arg 1 for perl stack
SV *perlevt = newSV(0);
sv_setref_pv(perlevt, "Ogre::RenderWindow", (void *) win); // TMOGRE_OUT
mCallbackArgs.push_back(perlevt);
// call the callback
callPerlCallback("windowResized");
}
void PerlOGREWindowEventListener::windowClosed(Ogre::RenderWindow *win)
{
// arg 1 for perl stack
SV *perlevt = newSV(0);
sv_setref_pv(perlevt, "Ogre::RenderWindow", (void *) win); // TMOGRE_OUT
mCallbackArgs.push_back(perlevt);
// call the callback
callPerlCallback("windowClosed");
}
void PerlOGREWindowEventListener::windowFocusChange(Ogre::RenderWindow *win)
{
// arg 1 for perl stack
SV *perlevt = newSV(0);
sv_setref_pv(perlevt, "Ogre::RenderWindow", (void *) win); // TMOGRE_OUT
mCallbackArgs.push_back(perlevt);
// call the callback
callPerlCallback("windowFocusChange");
}
|