MCPcopy Create free account
hub / github.com/axmolengine/axmol / dispatchEvent

Method dispatchEvent

core/base/EventDispatcher.cpp:964–1008  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

962}
963
964void EventDispatcher::dispatchEvent(Event* event, bool forced)
965{
966 if (!_isEnabled && !forced)
967 return;
968
969 updateDirtyFlagForSceneGraph();
970
971 DispatchGuard guard(_inDispatch);
972
973 if (event->getType() == Event::Type::TOUCH)
974 {
975 dispatchTouchEvent(static_cast<EventTouch*>(event));
976 return;
977 }
978 else if (event->getType() == Event::Type::MOUSE)
979 {
980 dispatchMouseEvent(static_cast<EventMouse*>(event));
981 return;
982 }
983
984 auto listenerID = __getListenerID(event);
985
986 sortEventListeners(listenerID);
987
988 auto pfnDispatchEventToListeners = &EventDispatcher::dispatchEventToListeners;
989 if (event->getType() == Event::Type::MOUSE)
990 {
991 pfnDispatchEventToListeners = &EventDispatcher::dispatchTouchEventToListeners;
992 }
993 auto iter = _listenerMap.find(listenerID);
994 if (iter != _listenerMap.end())
995 {
996 auto listeners = iter->second;
997
998 auto onEvent = [&event](EventListener* listener) -> bool {
999 event->setCurrentTarget(listener->getAssociatedNode());
1000 listener->_onEvent(event);
1001 return event->isStopped();
1002 };
1003
1004 (this->*pfnDispatchEventToListeners)(listeners, onEvent);
1005 }
1006
1007 updateListeners(event);
1008}
1009
1010void EventDispatcher::dispatchCustomEvent(std::string_view eventName, void* optionalUserData, bool forced)
1011{

Callers 9

onConnectedMethod · 0.45
onDisconnectedMethod · 0.45
onButtonEventMethod · 0.45
onAxisEventMethod · 0.45
drawSceneMethod · 0.45
setProjectionMethod · 0.45
resetMethod · 0.45
setNextSceneMethod · 0.45
loadConfigFileMethod · 0.45

Calls 4

__getListenerIDFunction · 0.85
getTypeMethod · 0.45
findMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected