diff --git a/MantleAPI/include/MantleAPI/Traffic/i_entity_repository.h b/MantleAPI/include/MantleAPI/Traffic/i_entity_repository.h index 38e865e312df890c6d103d1ae9078aed41daaa6a..ed103f04bd57c4b2d67a8ce519d2c1d9edd9e647 100644 --- a/MantleAPI/include/MantleAPI/Traffic/i_entity_repository.h +++ b/MantleAPI/include/MantleAPI/Traffic/i_entity_repository.h @@ -18,6 +18,8 @@ #include <MantleAPI/Traffic/entity_properties.h> #include <MantleAPI/Traffic/i_entity.h> +#include <functional> +#include <optional> #include <string> #include <vector> @@ -35,14 +37,18 @@ class IEntityRepository virtual IStaticObject& Create(UniqueId id, const std::string& name, const StaticObjectProperties& properties) = 0; virtual IVehicle& GetHost() = 0; - virtual IEntity& Get(const std::string& name) = 0; - virtual IEntity& Get(UniqueId id) = 0; + virtual std::optional<std::reference_wrapper<IEntity>> Get(const std::string& name) = 0; + virtual std::optional<std::reference_wrapper<IEntity>> Get(UniqueId id) = 0; virtual bool Contains(UniqueId id) const = 0; virtual void Delete(const std::string& name) = 0; virtual void Delete(UniqueId id) = 0; virtual const std::vector<std::unique_ptr<mantle_api::IEntity>>& GetEntities() const = 0; + + virtual void RegisterEntityCreatedCallback(const std::function<void(IEntity&)>& callback) = 0; + virtual void RegisterEntityDeletedCallback(const std::function<void(const std::string&)>& callback) = 0; + virtual void RegisterEntityDeletedCallback(const std::function<void(UniqueId)>& callback) = 0; }; } // namespace mantle_api