#ifndef __COCO_IR_ENTITY_MANAGER_H__
#define __COCO_IR_ENTITY_MANAGER_H__
+#include "coco/IR/InputManager.h"
+
namespace coco
{
struct EntityManager
{
virtual ~EntityManager() = default;
+
+ virtual InputManager *input(void) = 0;
+ virtual const InputManager *input(void) const = 0;
};
} // namespace coco
struct EntityManagerImpl final : public coco::EntityManager
{
- // TO BE FILLED
+public:
+ std::unique_ptr<coco::InputManager> _input;
+
+public:
+ coco::InputManager *input(void) override { return _input.get(); }
+ const coco::InputManager *input(void) const override { return _input.get(); }
};
} // namespace
std::unique_ptr<Module> Module::create(void)
{
auto m = nncc::foundation::make_unique<::ModuleImpl>();
-
- m->_entity = nncc::foundation::make_unique<::EntityManagerImpl>();
+
+ auto mgr = nncc::foundation::make_unique<::EntityManagerImpl>();
+ {
+ mgr->_input = nncc::foundation::make_unique<coco::InputManager>();
+ }
+ m->_entity = std::move(mgr);
return std::move(m);
}
ASSERT_NE(mutable_m->entity(), nullptr);
ASSERT_NE(immutable_m->entity(), nullptr);
+
+ ASSERT_NE(mutable_m->entity()->input(), nullptr);
+ ASSERT_EQ(immutable_m->entity()->input(), mutable_m->entity()->input());
}