#pragma once #include #include #include "Event.hpp" class VrEventPublisher; class VrEventSubscriber { public: virtual ~VrEventSubscriber() {}; virtual void update(VrEventPublisher* p, vr::Event e) = 0; void subscribe(VrEventPublisher* publisher, vr::Event::EventType type); void subscribe(VrEventPublisher* publisher, std::vector type); protected: std::vector subscribed_event_types; }; class VrEventPublisher { public: virtual ~VrEventPublisher() {}; virtual void subscribe(VrEventSubscriber *subscriber, vr::Event::EventType type); virtual void subscribe(VrEventSubscriber *subscriber, std::vector type); virtual void unsubscribe(VrEventSubscriber *s, vr::Event::EventType c); virtual void notify(vr::Event e); private: std::map> subscribers; };