Changeset 8243 for code/branches/portals/src/modules/portals/PortalLink.cc
- Timestamp:
- Apr 14, 2011, 4:33:33 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/portals/src/modules/portals/PortalLink.cc
r8200 r8243 2 2 #include "core/XMLPort.h" 3 3 #include "objects/triggers/MultiTriggerContainer.h" 4 #include "worldentities/MobileEntity.h" 4 5 5 6 namespace orxonox 6 7 { 7 8 CreateFactory(PortalLink); 9 10 std::map<PortalEndPoint *, PortalEndPoint *> PortalLink::links_s; 8 11 9 PortalLink::PortalLink(BaseObject* creator) : EventListener(creator), fromID_(0), toID_(0), from_(0), to_(0), activationRadius_(20)12 PortalLink::PortalLink(BaseObject* creator) : BaseObject(creator), fromID_(0), toID_(0), from_(0), to_(0) 10 13 { 11 14 RegisterObject(PortalLink); … … 24 27 if(mode == XMLPort::LoadObject) 25 28 { 26 this->from_= PortalEndPoint::idMap_s[this->fromID_];27 this->to_= PortalEndPoint::idMap_s[this->toID_];28 recentlyPorted.clear();29 PortalEndPoint * from = PortalEndPoint::idMap_s[this->fromID_]; 30 PortalEndPoint * to = PortalEndPoint::idMap_s[this->toID_]; 31 PortalLink::links_s[from] = to; 29 32 } 30 33 } … … 34 37 SUPER(PortalLink, tick, dt); 35 38 } 36 37 void PortalLink:: processEvent(Event& event)39 40 void PortalLink::use(MobileEntity* entity, PortalEndPoint * entrance) 38 41 { 39 EventListener::processEvent(event); 40 if(!event.activate_) 42 if(entrance == 0) 41 43 { 44 // TODO COUT 42 45 return; 43 46 } 44 MultiTriggerContainer * origin = dynamic_cast<MultiTriggerContainer *>(event.originator_); 45 if(!origin) 46 { 47 48 std::map<PortalEndPoint *, PortalEndPoint *>::iterator endpoint = PortalLink::links_s.find(entrance); 49 50 if(endpoint == PortalLink::links_s.end()) // entrance has no corresponding exit 47 51 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); 52 53 endpoint->second->jumpOut(entity); 56 54 } 57 55 56 58 57 }
Note: See TracChangeset
for help on using the changeset viewer.