File: PerlOGREFrameListener.cpp

package info (click to toggle)
libogre-perl 0.40-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 1,812 kB
  • ctags: 452
  • sloc: perl: 6,019; cpp: 501; makefile: 2
file content (34 lines) | stat: -rw-r--r-- 1,054 bytes parent folder | download | duplicates (3)
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");
}