source: nrEngine/src/ScriptConnector.cpp @ 1

Revision 1, 2.3 KB checked in by art, 13 years ago (diff)
Line 
1/***************************************************************************
2 *                                                                         *
3 *   (c) Art Tevs, MPI Informatik Saarbruecken                             *
4 *       mailto: <tevs@mpi-sb.mpg.de>                                      *
5 *                                                                         *
6 *   This program is free software; you can redistribute it and/or modify  *
7 *   it under the terms of the GNU General Public License as published by  *
8 *   the Free Software Foundation; either version 2 of the License, or     *
9 *   (at your option) any later version.                                   *
10 *                                                                         *
11 ***************************************************************************/
12
13#include "ScriptConnector.h"
14#include "events/EngineEvent.h"
15#include "ScriptEngine.h"
16#include "Engine.h"
17
18namespace nrEngine{
19
20        //----------------------------------------------------------------------
21        ScriptConnector::ScriptConnector(const std::string& name) : EventActor(name + "_EventListener")
22        {
23                connect(NR_DEFAULT_EVENT_CHANNEL);
24        }
25
26        //----------------------------------------------------------------------
27        void ScriptConnector::initialize()
28        {
29                uint32 count = Engine::sScriptEngine()->getFunctionCount();
30                for (uint32 i = 0; i < count; i++)
31                {
32                        ScriptFunctor functor;
33                        const std::string& name = Engine::sScriptEngine()->getFunction(i, functor);
34                        OnRegisterFunction(name, functor);
35                }
36        }
37
38        //----------------------------------------------------------------------
39        ScriptConnector::~ScriptConnector()
40        {
41                disconnect(NR_DEFAULT_EVENT_CHANNEL);
42        }
43       
44        //----------------------------------------------------------------------
45        void ScriptConnector::OnEvent(const EventChannel& channel, SharedPtr<Event> event)
46        {
47                // check if we got a new function event
48                if (event->same_as<ScriptRegisterFunctionEvent>())
49                {
50                        SharedPtr<ScriptRegisterFunctionEvent> ev = event_shared_cast<ScriptRegisterFunctionEvent>(event);
51                        OnRegisterFunction(ev->getName(), ev->getFunctor());
52                }
53
54                // we got a remove function event
55                if (event->same_as<ScriptRemoveFunctionEvent>())
56                {
57                        SharedPtr<ScriptRemoveFunctionEvent> ev = event_shared_cast<ScriptRemoveFunctionEvent>(event);
58                        OnRemoveFunction(ev->getName());
59                }               
60        }
61
62};
Note: See TracBrowser for help on using the repository browser.