Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/portals/src/modules/portals/PortalLink.cc @ 8200

Last change on this file since 8200 was 8200, checked in by FelixSchulthess, 13 years ago

blah

  • Property svn:executable set to *
File size: 1.7 KB
Line 
1#include "PortalLink.h"
2#include "core/XMLPort.h"
3#include "objects/triggers/MultiTriggerContainer.h"
4
5namespace orxonox
6{
7    CreateFactory(PortalLink);
8   
9    PortalLink::PortalLink(BaseObject* creator) : EventListener(creator), fromID_(0), toID_(0), from_(0), to_(0), activationRadius_(20)
10    {
11        RegisterObject(PortalLink);
12    }
13   
14    PortalLink::~PortalLink()
15    {
16    }
17   
18    void PortalLink::XMLPort(Element& xmlelement, XMLPort::Mode mode)
19    {
20        SUPER(PortalLink, XMLPort, xmlelement, mode);
21        XMLPortParam(PortalLink, "fromID", setFromID, getFromID, xmlelement, mode);
22        XMLPortParam(PortalLink, "toID", setToID, getToID, xmlelement, mode);
23
24        if(mode == XMLPort::LoadObject)
25        {
26            this->from_ = PortalEndPoint::idMap_s[this->fromID_];
27            this->to_   = PortalEndPoint::idMap_s[this->toID_];
28            recentlyPorted.clear();
29        }
30    }
31   
32    void PortalLink::tick(float dt)
33    {
34        SUPER(PortalLink, tick, dt);
35    }
36   
37    void PortalLink::processEvent(Event& event)
38    {
39        EventListener::processEvent(event);
40        if(!event.activate_)
41        {
42            return;
43        }
44        MultiTriggerContainer * origin = dynamic_cast<MultiTriggerContainer *>(event.originator_);
45        if(!origin)
46        {
47            return;
48        }
49        PortalEndPoint * eventFrom = dynamic_cast<PortalEndPoint *>(origin->getOriginator());
50        WorldEntity * eventEntity = dynamic_cast<WorldEntity *>(origin->getData());
51        if(eventFrom != this->from_ || !eventEntity || eventFrom->hasRecentlyJumpedOut(eventEntity) == true)
52        {
53            return;
54        }
55        to_->jumpOut(eventEntity);
56    }
57
58}
Note: See TracBrowser for help on using the repository browser.