|
VisuTwin Canvas
C++ 3D Engine — Metal Backend
|
Base class for ECS components that attach functionality to entities. More...
#include <framework/components/component.h>
Public Member Functions | |
| virtual void | cloneFrom (const Component *source) |
| Component (IComponentSystem *system, Entity *entity) | |
| virtual bool | enabled () const |
| Entity * | entity () const |
| virtual void | initializeComponentData ()=0 |
| virtual void | onDisable () |
| virtual void | onEnable () |
| virtual void | onPostStateChange () |
| virtual void | setEnabled (bool value) |
| IComponentSystem * | system () const |
| virtual | ~Component ()=default |
| Public Member Functions inherited from visutwin::canvas::EventHandler | |
| template<typename... Args> | |
| EventHandler * | fire (const std::string &name, Args &&... args) |
| bool | hasEvent (const std::string &name) const |
| void | initEventHandler () |
| template<typename Callback> requires (!std::is_same_v<std::decay_t<Callback>, HandleEventCallback>) | |
| EventHandler * | off (const std::string &name, Callback &&callback, void *scope=nullptr) |
| EventHandler * | off (const std::string &name="", const HandleEventCallback &callback=HandleEventCallback(), void *scope=nullptr) |
| EventHandler * | offByHandle (EventHandle *handle) |
| template<typename Callback> requires (!std::is_same_v<std::decay_t<Callback>, HandleEventCallback>) | |
| EventHandle * | on (const std::string &name, Callback &&callback, void *scope=nullptr) |
| EventHandle * | on (const std::string &name, HandleEventCallback callback, void *scope=nullptr) |
| template<typename Callback> requires (!std::is_same_v<std::decay_t<Callback>, HandleEventCallback>) | |
| EventHandle * | once (const std::string &name, Callback &&callback, void *scope=nullptr) |
| EventHandle * | once (const std::string &name, HandleEventCallback callback, void *scope=nullptr) |
| virtual | ~EventHandler ()=default |
Protected Member Functions | |
| virtual void | onSetEnabled (bool oldValue, bool newValue) |
| Protected Member Functions inherited from visutwin::canvas::EventHandler | |
| EventHandle * | addCallback (const std::string &name, HandleEventCallback callback, void *scope=nullptr, bool once=false) |
Protected Attributes | |
| bool | _enabled = true |
| Entity * | _entity |
Base class for ECS components that attach functionality to entities.
Components are created and managed by their owning ComponentSystem<T>. Each component has lifecycle hooks (onEnable, onDisable, onPostStateChange) and can be cloned when an Entity is duplicated. Component lookup on Entity is O(1) via a type-ID map.
Definition at line 39 of file component.h.
|
explicit |
Definition at line 12 of file component.cpp.
References _entity, entity(), and system().
Referenced by visutwin::canvas::AnimationComponent::AnimationComponent(), visutwin::canvas::ButtonComponent::ButtonComponent(), visutwin::canvas::CameraComponent::CameraComponent(), cloneFrom(), visutwin::canvas::LightComponent::cloneFrom(), visutwin::canvas::RenderComponent::cloneFrom(), visutwin::canvas::CollisionComponent::CollisionComponent(), visutwin::canvas::ElementComponent::ElementComponent(), visutwin::canvas::LightComponent::LightComponent(), visutwin::canvas::RenderComponent::RenderComponent(), visutwin::canvas::RigidBodyComponent::RigidBodyComponent(), visutwin::canvas::ScreenComponent::ScreenComponent(), and visutwin::canvas::ScriptComponent::ScriptComponent().
|
virtualdefault |
|
inlinevirtual |
Copy component data from a source component during Entity::clone(). — each system copies its properties. Subclasses override to copy their specific properties.
Reimplemented in visutwin::canvas::LightComponent, and visutwin::canvas::RenderComponent.
Definition at line 69 of file component.h.
References Component().
|
inlinevirtual |
Definition at line 49 of file component.h.
References _enabled.
Referenced by visutwin::canvas::AnimationComponent::onSetAnimations(), visutwin::canvas::AnimationComponent::play(), visutwin::canvas::ElementInput::renderElements(), visutwin::canvas::CameraComponent::requestSceneColorMap(), visutwin::canvas::CameraComponent::requestSceneDepthMap(), visutwin::canvas::CameraComponent::setDofEnabled(), visutwin::canvas::CameraComponent::setSsaoEnabled(), visutwin::canvas::CameraComponent::setTaaEnabled(), visutwin::canvas::shouldRenderShadowRenderComponent(), and visutwin::canvas::ElementInput::syncTextElements().
| Entity * visutwin::canvas::Component::entity | ( | ) | const |
Definition at line 16 of file component.cpp.
References _entity.
Referenced by visutwin::canvas::AnimationComponent::AnimationComponent(), visutwin::canvas::ButtonComponent::ButtonComponent(), visutwin::canvas::CameraComponent::CameraComponent(), visutwin::canvas::RigidBodyComponent::collision(), visutwin::canvas::CollisionComponent::CollisionComponent(), Component(), visutwin::canvas::ElementComponent::ElementComponent(), visutwin::canvas::ElementInput::handleMouseButtonDown(), visutwin::canvas::LightComponent::LightComponent(), visutwin::canvas::RenderComponent::RenderComponent(), visutwin::canvas::ElementInput::renderElements(), visutwin::canvas::RigidBodyComponent::RigidBodyComponent(), visutwin::canvas::ScreenComponent::ScreenComponent(), visutwin::canvas::ScriptComponent::ScriptComponent(), visutwin::canvas::ButtonComponent::setImageEntity(), visutwin::canvas::shouldRenderShadowRenderComponent(), visutwin::canvas::ElementInput::syncTextElements(), and visutwin::canvas::CollisionComponent::worldBounds().
|
pure virtual |
Implemented in visutwin::canvas::AnimationComponent, visutwin::canvas::ButtonComponent, visutwin::canvas::CameraComponent, visutwin::canvas::CollisionComponent, visutwin::canvas::ElementComponent, visutwin::canvas::LightComponent, visutwin::canvas::RenderComponent, visutwin::canvas::RigidBodyComponent, visutwin::canvas::ScreenComponent, and visutwin::canvas::ScriptComponent.
|
inlinevirtual |
Definition at line 59 of file component.h.
Referenced by onSetEnabled().
|
inlinevirtual |
Reimplemented in visutwin::canvas::AnimationComponent.
Definition at line 56 of file component.h.
Referenced by visutwin::canvas::AnimationComponent::onEnable(), and onSetEnabled().
|
inlinevirtual |
Definition at line 62 of file component.h.
|
protectedvirtual |
Definition at line 28 of file component.cpp.
References _entity, onDisable(), and onEnable().
Referenced by setEnabled().
|
virtual |
Reimplemented in visutwin::canvas::ScriptComponent.
Definition at line 21 of file component.cpp.
References _enabled, and onSetEnabled().
Referenced by visutwin::canvas::LightComponent::cloneFrom(), visutwin::canvas::RenderComponent::cloneFrom(), and visutwin::canvas::ScriptComponent::setEnabled().
|
inline |
Definition at line 47 of file component.h.
Referenced by visutwin::canvas::AnimationComponent::AnimationComponent(), visutwin::canvas::ButtonComponent::ButtonComponent(), visutwin::canvas::CameraComponent::CameraComponent(), visutwin::canvas::CollisionComponent::CollisionComponent(), Component(), visutwin::canvas::ElementComponent::ElementComponent(), visutwin::canvas::LightComponent::LightComponent(), visutwin::canvas::RenderComponent::RenderComponent(), visutwin::canvas::CameraComponent::requestSceneColorMap(), visutwin::canvas::CameraComponent::requestSceneDepthMap(), visutwin::canvas::RigidBodyComponent::RigidBodyComponent(), visutwin::canvas::ScreenComponent::ScreenComponent(), and visutwin::canvas::ScriptComponent::ScriptComponent().
|
protected |
|
protected |
Definition at line 76 of file component.h.
Referenced by visutwin::canvas::RenderComponent::cloneFrom(), Component(), visutwin::canvas::ScriptComponent::create(), visutwin::canvas::LightComponent::direction(), entity(), visutwin::canvas::CameraComponent::initializeComponentData(), visutwin::canvas::AnimationComponent::onSetAnimations(), onSetEnabled(), visutwin::canvas::AnimationComponent::play(), and visutwin::canvas::LightComponent::position().