Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

52 linhas
1.6 KiB

  1. #pragma once
  2. #include <ecs/config.h>
  3. #include "./base.h"
  4. namespace ecs {
  5. namespace context {
  6. namespace detail
  7. {
  8. /**
  9. * proxy class to make entity, component and system management visible to users of the context
  10. */
  11. template<typename T_settings>
  12. struct defer_proxy_t
  13. : public base_t<T_settings>
  14. {
  15. private:
  16. using settings_type = T_settings;
  17. using this_type = defer_proxy_t<settings_type>;
  18. using base_type = base_t<settings_type>;
  19. protected:
  20. using context_type = typename base_type::context_type;
  21. public:
  22. inline defer_proxy_t(context_type& p_context)
  23. : base_type(p_context)
  24. { }
  25. public: /* entity */
  26. ecs_context_proxy_func(this_type, create_entity)
  27. ecs_context_proxy_func(this_type, kill_entity)
  28. ecs_context_proxy_func(this_type, is_alive)
  29. ecs_context_proxy_func(this_type, entity_meta_data)
  30. public: /* component */
  31. ecs_context_proxy_func(this_type, add_component)
  32. ecs_context_proxy_func(this_type, has_component)
  33. ecs_context_proxy_func(this_type, get_component)
  34. ecs_context_proxy_func(this_type, remove_component)
  35. public: /* system */
  36. ecs_context_proxy_func(this_type, system_by_tag)
  37. ecs_context_proxy_func(this_type, system_by_index)
  38. ecs_context_proxy_func(this_type, instance_by_tag)
  39. ecs_context_proxy_func(this_type, instance_by_index)
  40. };
  41. }
  42. } }