world_manager.cpp 851 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /*
  2. * Copyright (c) 2012-2014 Daniele Bartolini and individual contributors.
  3. * License: https://github.com/taylor001/crown/blob/master/LICENSE
  4. */
  5. #include "world_manager.h"
  6. #include "world.h"
  7. #include "memory.h"
  8. namespace crown
  9. {
  10. WorldManager::WorldManager()
  11. : m_allocator("world-manager", default_allocator())
  12. {
  13. }
  14. WorldManager::~WorldManager()
  15. {
  16. }
  17. WorldId WorldManager::create_world()
  18. {
  19. World* w = CE_NEW(m_allocator, World)();
  20. const WorldId w_id = id_array::create(m_worlds, w);
  21. w->set_id(w_id);
  22. return w_id;
  23. }
  24. void WorldManager::destroy_world(WorldId id)
  25. {
  26. CE_DELETE(m_allocator, id_array::get(m_worlds, id));
  27. id_array::destroy(m_worlds, id);
  28. }
  29. World* WorldManager::lookup_world(WorldId id)
  30. {
  31. return id_array::get(m_worlds, id);
  32. }
  33. IdArray<CE_MAX_WORLDS, World*>& WorldManager::worlds()
  34. {
  35. return m_worlds;
  36. }
  37. } // namespace crown