material_manager.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /*
  2. * Copyright (c) 2012-2014 Daniele Bartolini and individual contributors.
  3. * License: https://github.com/taylor001/crown/blob/master/LICENSE
  4. */
  5. #include "material_manager.h"
  6. #include "memory.h"
  7. #include "sort_map.h"
  8. #include "device.h"
  9. namespace crown
  10. {
  11. namespace material_manager
  12. {
  13. static MaterialManager* s_mmgr = NULL;
  14. void init()
  15. {
  16. s_mmgr = CE_NEW(default_allocator(), MaterialManager)();
  17. }
  18. void shutdown()
  19. {
  20. CE_DELETE(default_allocator(), s_mmgr);
  21. }
  22. MaterialManager* get()
  23. {
  24. return s_mmgr;
  25. }
  26. } // namespace material_manager
  27. MaterialManager::MaterialManager()
  28. {
  29. }
  30. MaterialId MaterialManager::create_material(StringId64 id)
  31. {
  32. MaterialId new_id = id_table::create(_materials_ids);
  33. _materials[new_id.index].create((MaterialResource*) device()->resource_manager()->get(MATERIAL_TYPE, id), *this);
  34. return new_id;
  35. }
  36. void MaterialManager::destroy_material(MaterialId id)
  37. {
  38. _materials[id.index].destroy();
  39. id_table::destroy(_materials_ids, id);
  40. }
  41. Material* MaterialManager::lookup_material(MaterialId id)
  42. {
  43. return &_materials[id.index];
  44. }
  45. } // namespace crown