JSEventHelper.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #pragma once
  2. #include <Atomic/Core/Object.h>
  3. #include <Atomic/Core/Context.h>
  4. namespace Atomic
  5. {
  6. class ATOMIC_API JSEventDispatcher : public Object, public GlobalEventListener
  7. {
  8. OBJECT(JSEventDispatcher);
  9. public:
  10. /// Construct.
  11. JSEventDispatcher(Context* context);
  12. /// Destruct.
  13. virtual ~JSEventDispatcher();
  14. void RegisterJSEvent(StringHash hash) { jsEvents_[hash] = true; }
  15. private:
  16. void BeginSendEvent(Context* context, Object* sender, StringHash eventType, VariantMap& eventData);
  17. void EndSendEvent(Context* context, Object* sender, StringHash eventType, VariantMap& eventData);
  18. HashMap<StringHash, bool> jsEvents_;
  19. };
  20. class ATOMIC_API JSEventHelper : public Object
  21. {
  22. OBJECT(JSEventHelper);
  23. public:
  24. /// Construct.
  25. JSEventHelper(Context* context, Object* object);
  26. /// Destruct.
  27. virtual ~JSEventHelper();
  28. void AddEventHandler(StringHash eventType);
  29. void AddEventHandler(Object* sender, StringHash eventType);
  30. private:
  31. void HandleEvent(StringHash eventType, VariantMap& eventData);
  32. WeakPtr<Object> object_;
  33. };
  34. }