86                return systemManager.has<
S>();
 
   89                if constexpr(std::is_default_constructible_v<S>) { 
 
   90                    systemManager.add<
S>();
 
   94                systemManager.remove<
S>();
 
 
 
  147#define CE_EDITOR_SYSTEM_TOKENPASTE(x, y) x##y 
  148#define CE_EDITOR_SYSTEM_TOKENPASTE2(x, y) CE_EDITOR_SYSTEM_TOKENPASTE(x, y) 
  149#define CE_EDITOR_SYSTEM(...)                                                                                                               \ 
  150    static const ::CeresEngine::Editor::UI::TSystemUI<__VA_ARGS__> CE_EDITOR_SYSTEM_TOKENPASTE2(systemUI, __COUNTER__) [[maybe_unused]] = [ \ 
  151    ](::CeresEngine::Editor::UI::TSystemUI<__VA_ARGS__> & ui, ::CeresEngine::String & name, auto& supports, auto& add, auto& remove, auto& render) noexcept 
 
  152#define CE_EDITOR_SYSTEM_ADVANCED(EditorClass) static const EditorClass CE_EDITOR_SYSTEM_TOKENPASTE2(systemUI, EditorClass) [[maybe_unused]]{}; 
  153#define CE_EDITOR_SYSTEM_ADVANCED2(Name, ClassName, ...)                                           \ 
  154    struct Name##SystemUI final : public ::CeresEngine::Editor::UI::BasicSystemUI<ClassName> {     \ 
  155        __VA_ARGS__ [[nodiscard]] ::CeresEngine::String getName() const override { return #Name; } \ 
  157    CE_EDITOR_SYSTEM_ADVANCED(Name##SystemUI) 
 
#define CE_EXPLICIT(EXPR)
Definition Macros.hpp:413
 
void addSystem(SystemManager &systemManager) override
Definition SystemUI.hpp:68
 
Definition SystemUI.hpp:46
 
void addSystem(SystemManager &systemManager) override
Definition SystemUI.hpp:59
 
bool supports(SystemManager &systemManager) const override
Definition SystemUI.hpp:49
 
void removeSystem(SystemManager &systemManager) override
Definition SystemUI.hpp:62
 
void render(SystemManager &systemManager) final
Definition SystemUI.hpp:52
 
virtual void render(S &system)=0
Renders a UI for the system of the given entity.
 
Definition SystemUI.hpp:19
 
SystemUI * previous
The previous system UI in the chain.
Definition SystemUI.hpp:27
 
virtual String getName() const =0
 
virtual void render(SystemManager &systemManager)=0
 
virtual ~SystemUI()
Destroys the SystemUI object.
 
virtual void addSystem(SystemManager &systemManager)=0
 
SystemUI * next
The next system UI in the chain.
Definition SystemUI.hpp:24
 
SystemUI()
Creates a new SystemUI object.
 
virtual void removeSystem(SystemManager &systemManager)=0
 
virtual bool supports(SystemManager &systemManager) const =0
 
Definition SystemUI.hpp:133
 
static void renderUI(SystemManager &systemManager)
 
static SystemUI * last
The last component UI in the linked list.
Definition SystemUI.hpp:141
 
static SystemUI * first
The first component UI in the linked list.
Definition SystemUI.hpp:138
 
Definition SystemUI.hpp:71
 
void removeSystem(SystemManager &systemManager) final
Definition SystemUI.hpp:123
 
std::function< bool(SystemManager &)> supports_
Definition SystemUI.hpp:74
 
void render(SystemManager &systemManager) final
Definition SystemUI.hpp:109
 
String getName() const final
Definition SystemUI.hpp:130
 
std::function< void(S &)> render_
Definition SystemUI.hpp:77
 
void addSystem(SystemManager &systemManager) final
Definition SystemUI.hpp:116
 
std::function< void(SystemManager &)> removeSystem_
Definition SystemUI.hpp:76
 
String name
Definition SystemUI.hpp:73
 
bool supports(SystemManager &systemManager) const final
Definition SystemUI.hpp:101
 
std::function< void(SystemManager &)> addSystem_
Definition SystemUI.hpp:75
 
The system manager is responsible for keeping track and dispatching updates to all attached systems.
Definition SystemManager.hpp:22
 
void remove()
Removes a system of type S.
 
bool has() noexcept
Checks if the manager contains a system of type S.
 
S & add(Args &&... args)
Adds a new system of type S.
 
Definition ComponentUI.hpp:14
 
@ Constructor
Indicates that the item is a constructor.
 
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25