void MapLoader::extractTriggers() { TiXmlElement *triggerElement = rootHandle.FirstChild("trigger").ToElement(); string triggerType("none"); if (triggerElement) { do { TiXmlElement *triggerTypeElement; scene->triggers.emplace_back(); Trigger &trigger = scene->triggers.back(); if (triggerElement) { triggerElement->QueryStringAttribute("type", &trigger.type); } if (triggerType == "none") { throw std::runtime_error("Trigger must define a type attribute."); } XmlHelper::extractPosition(triggerElement, trigger.position); XmlHelper::extractScale(triggerElement, trigger.scale); } while ((triggerElement = triggerElement->NextSiblingElement()) != nullptr); } }
void CInputManager::CheckCallback() { for (TCallbackMap::iterator iter = m_callBacks.begin(); iter != m_callBacks.end(); ++iter) { SKeyTriggerType triggerType(iter->first); if (CKeyboard::GetInstance()->GetKeyState(triggerType.m_code) == triggerType.m_state) { (*iter->second)(); } } }