/* orxonox - the future of 3D-vertical-scrollers Copyright (C) 2007 orx This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. ### File Specific: main-programmer: Fabian 'x3n' Landau co-programmer: */ #include "util/loading/load_param.h" #include "util/loading/factory.h" #include "mover_trigger_event.h" #include "debug.h" ObjectListDefinition(EventTrigger); CREATE_FACTORY(EventTrigger); EventTrigger::EventTrigger(const TiXmlElement* root) { PRINTF(0)("15_1 EventTrigger %p created\n", this); this->registerObject(this, EventTrigger::_objectList); this->toList(OM_ENVIRON); this->eventName = ""; this->eventTriggers = 0; this->bIsChecking = false; if (root != NULL) this->loadParams(root); this->init_post_params(); } EventTrigger::~EventTrigger() { delete this->eventTriggers; } void EventTrigger::loadParams(const TiXmlElement* root) { MoverTrigger::loadParams(root); LoadParam(root, "event", this, EventTrigger, setEvent) .describe("The event that releases the trigger") .defaultValues(""); } bool EventTrigger::checkIsTriggered() { if (this->bIsChecking) return this->bIsTriggered; // to avoid event-loops if (!this->eventTriggers) { if (MoverTrigger::events) this->eventTriggers = MoverTrigger::events->getPointerList(this->eventName); if (!this->eventTriggers) this->eventTriggers = new MoverTriggerPointerList(); } this->bIsChecking = true; bool isTriggered = this->eventTriggers->isTriggered(); this->bIsChecking = false; return isTriggered; }