|
| | Component (const std::string &name, std::shared_ptr< Context > context=nullptr) |
| | Constructs a Component with the given name.
|
| |
| virtual | ~Component () |
| |
| void | Init (const nlohmann::json &initArgs=nlohmann::json::object()) |
| | Performs one-time initialization of this component.
|
| |
| bool | IsInitialized () const |
| | Returns true once Init() (or MarkInitialized()) has completed successfully.
|
| |
| const std::string & | GetName () const |
| | Returns the name of this Component.
|
| |
| std::string | ToString () const |
| | Returns a human-readable string representation (e.g. "Name (id)").
|
| |
| std::string | ToTreeString (int depth=0) const |
| | Returns a human-readable tree representation of this component and its children.
|
| |
| | operator std::string () const |
| | Conversion operator to std::string; equivalent to ToString().
|
| |
| ParentComponentList & | GetParents () |
| | Returns a mutable reference to the parent list.
|
| |
| const ParentComponentList & | GetParents () const |
| | Returns a const reference to the parent list.
|
| |
| ComponentList & | GetChildren () |
| | Returns a mutable reference to the child list.
|
| |
| const ComponentList & | GetChildren () const |
| | Returns a const reference to the child list.
|
| |
| virtual std::shared_ptr< Component > | TryGetSharedComponent () noexcept |
| | Returns a shared_ptr to this Component when available, otherwise nullptr.
|
| |
| virtual std::shared_ptr< Component > | GetSharedComponent () |
| | Returns a shared_ptr to this Component via the correct enable_shared_from_this base.
|
| |
| template<typename T > |
| bool | HasInChildren () const |
| | Checks whether any descendant Component matches type T via BFS.
|
| |
| template<typename T > |
| std::shared_ptr< T > | GetFirstInChildren () const |
| | Returns the first descendant that matches type T via BFS.
|
| |
| template<typename T > |
| std::shared_ptr< std::vector< std::shared_ptr< T > > > | GetInChildren () const |
| | Returns all descendants that match type T via BFS.
|
| |
| template<typename T > |
| bool | HasInParents () const |
| | Checks whether any ancestor Component matches type T via BFS.
|
| |
| template<typename T > |
| std::shared_ptr< T > | GetFirstInParents () const |
| | Returns the first ancestor that matches type T via BFS.
|
| |
| template<typename T > |
| std::shared_ptr< std::vector< std::shared_ptr< T > > > | GetInParents () const |
| | Returns all ancestors that match type T via BFS.
|
| |
| | Part () |
| | Constructs a Part and assigns it a unique ID.
|
| |
| | Part (std::shared_ptr< Context > context) |
| | Constructs a Part with an explicit Context reference and unique ID.
|
| |
| virtual | ~Part ()=default |
| |
| uint64_t | GetId () const |
| | Returns the unique identifier for this Part.
|
| |
| bool | operator== (const Part &other) const |
| | Compares two Parts for equality by their unique IDs.
|
| |
| std::shared_ptr< Context > | GetContext () const |
| | Returns the Context this Part belongs to, or nullptr if unset.
|
| |
| void | SetContext (std::shared_ptr< Context > ctx) |
| | Sets the Context this Part belongs to.
|
| |
A named Part with a parent/child hierarchy and optional thread safety.
Component extends Part with a human-readable name, a string representation, and bidirectional parent/child relationships managed via ComponentList. Adding a child automatically adds the corresponding parent, and vice versa. When the COMPONENT_THREAD_SAFE preprocessor flag is defined, all relationship mutations are guarded by a recursive_mutex held by the ComponentList (PartList).
| void Ship::Component::Init |
( |
const nlohmann::json & |
initArgs = nlohmann::json::object() | ) |
|
Performs one-time initialization of this component.
This method is non-virtual and manages the initialized state flag. It calls the protected virtual OnInit() hook exactly once; subsequent calls are no-ops.
Concrete subclasses that need parameter-free initialization should override OnInit() rather than Init().
Subclasses that require initialization parameters (e.g. ResourceManager) provide their own Init(…) overload and must call MarkInitialized() when initialization succeeds.
- Parameters
-
| initArgs | Optional JSON object containing initialization arguments for this component. Passed through to OnInit(). |
| virtual void Ship::Component::OnInit |
( |
const nlohmann::json & |
initArgs = nlohmann::json::object() | ) |
|
|
protectedvirtual |
Override this to implement component-specific initialization logic.
Called by Init() the first time it is invoked. After OnInit() returns without throwing, the component is marked as initialized. If OnInit() throws, the component remains uninitialized so Init() may be retried.
- Parameters
-
| initArgs | JSON object with component-specific initialization arguments from the build hierarchy. Default implementation ignores them. |
Components with initialization parameters (ResourceManager, Window, …) provide their own Init(…) overload instead of overriding this method.
The default implementation is a no-op.
Reimplemented in Ship::Logger, Ship::Gui, Ship::Window, Fast::Fast3dWindow, LUS::GfxDebuggerWindow, LUS::InputEditorWindow, Ship::Audio, Ship::Console, Ship::ResourceManager, Ship::ConsoleWindow, Ship::EventDebuggerWindow, Ship::GuiElement, Ship::StatsWindow, Ship::GameOverlay, Ship::GuiMenuBar, and Ship::GuiWindow.