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
|
#include "PerlOGREFrameListener.h"
// class implementing Ogre::FrameListener interface,
// but using Perl callbacks; pobj is an instance of a Perl class
// that (maybe) has frameStarted and/or frameEnded methods
PerlOGREFrameListener::PerlOGREFrameListener(SV *pobj)
: PerlOGRECallback(pobj)
{
mCanMap["frameStarted"] = perlCallbackCan("frameStarted");
mCanMap["frameEnded"] = perlCallbackCan("frameEnded");
}
bool PerlOGREFrameListener::frameStarted(const Ogre::FrameEvent &evt)
{
// arg 1 for perl stack
SV *perlevt = newSV(0);
sv_setref_pv(perlevt, "Ogre::FrameEvent", (void *) &evt); // TMOGRE_OUT
mCallbackArgs.push_back(perlevt);
// call the callback
return callPerlCallback("frameStarted");
}
bool PerlOGREFrameListener::frameEnded(const Ogre::FrameEvent &evt)
{
// arg 1 for perl stack
SV *perlevt = newSV(0);
sv_setref_pv(perlevt, "Ogre::FrameEvent", (void *) &evt); // TMOGRE_OUT
mCallbackArgs.push_back(perlevt);
// call the callback
return callPerlCallback("frameEnded");
}
|