libultraship
Reimplementations of libultra (N64 SDK) functions for modern hardware
Loading...
Searching...
No Matches
Ship::TickableList Class Reference

Extends PartList<TickableComponent> with order-aware sorting. More...

#include <TickableList.h>

Inheritance diagram for Ship::TickableList:
[legend]
Collaboration diagram for Ship::TickableList:
[legend]

Public Member Functions

TickableListSort ()
 Sorts the list by each component's composite order value.
 
- Public Member Functions inherited from Ship::PartList< TickableComponent, std::shared_ptr< TickableComponent > >
 PartList (const size_t initialAllocation=0)
 Constructs a PartList, optionally pre-allocating storage.
 
virtual ~PartList ()=default
 
bool Has (std::shared_ptr< TickableComponent > part) const
 Checks whether a specific Part is in the list.
 
bool Has () const
 Checks whether any Part of type T is in the list.
 
bool Has (const uint64_t id) const
 Checks whether a Part with the given ID is in the list.
 
bool Has () const
 Checks whether the list contains any Parts at all.
 
size_t GetCount () const
 Returns the number of currently live Parts in the list.
 
uint64_t GetMutationVersion () const
 Returns a monotonically increasing counter that increments on every add or remove.
 
std::shared_ptr< TickableComponentGet (const uint64_t id) const
 Retrieves a Part by its unique ID.
 
std::shared_ptr< std::vector< std::shared_ptr< TickableComponent > > > Get () const
 Returns a snapshot (copy) of all currently live Parts in the list.
 
std::shared_ptr< std::vector< std::shared_ptr< T > > > Get () const
 Returns all Parts that can be dynamic_cast to type T.
 
std::shared_ptr< std::vector< std::shared_ptr< TickableComponent > > > Get (const std::vector< uint64_t > &ids) const
 Returns all Parts whose IDs appear in the given vector.
 
std::shared_ptr< T > GetFirst () const
 Returns the first Part that can be dynamic_cast to T.
 
ListReturnCode Add (std::shared_ptr< TickableComponent > part, const bool force=false)
 Adds a Part to the list if not already present.
 
ListReturnCode Add (const std::vector< std::shared_ptr< TickableComponent > > &parts, const bool force=false)
 Adds multiple Parts to the list.
 
ListReturnCode Remove (std::shared_ptr< TickableComponent > part, const bool force=false)
 Removes a specific Part from the list.
 
ListReturnCode Remove (const uint64_t id, const bool force=false)
 Removes a Part by its unique ID.
 
ListReturnCode Remove (const bool force=false)
 Removes all Parts from the list.
 
ListReturnCode Remove (const std::vector< std::shared_ptr< TickableComponent > > &parts, const bool force=false)
 Removes multiple Parts from the list.
 
ListReturnCode Remove (const bool force=false)
 Removes all Parts that can be dynamic_cast to type T.
 
ListReturnCode Remove (const std::vector< uint64_t > &ids, const bool force=false)
 Removes all Parts whose IDs appear in the given vector.
 
- Public Member Functions inherited from Ship::Part
 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< ContextGetContext () 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.
 

Protected Member Functions

void Added (std::shared_ptr< TickableComponent > part, const bool forced) override
 Re-sorts the list after a component is added so that TickGroup / TickPriority ordering is honored during iteration.
 
- Protected Member Functions inherited from Ship::PartList< TickableComponent, std::shared_ptr< TickableComponent > >
std::enable_if< std::is_same< P, std::shared_ptr< TickableComponent > >::value, std::vector< P > & >::type GetList ()
 Direct access to the underlying vector for strong-storage lists.
 
std::enable_if< std::is_same< P, std::shared_ptr< TickableComponent > >::value, conststd::vector< P > & >::type GetList () const
 Direct const access to the underlying vector for strong-storage lists.
 
std::recursive_mutex & GetMutex () const
 Returns the internal recursive mutex used to guard list access.
 
virtual bool CanAdd (std::shared_ptr< TickableComponent > part)
 Permission hook called before adding a Part. Override to deny.
 
virtual bool CanRemove (std::shared_ptr< TickableComponent > part)
 Permission hook called before removing a Part. Override to deny.
 
virtual void Added (std::shared_ptr< TickableComponent > part, const bool forced)
 Notification hook called after a Part has been added.
 
virtual void Removed (std::shared_ptr< TickableComponent > part, const bool forced)
 Notification hook called after a Part has been removed.
 
- Protected Member Functions inherited from Ship::Part
virtual void OnAdded (bool forced)
 Called after this Part has been added to a PartList.
 
virtual void OnRemoved (bool forced)
 Called after this Part has been removed from a PartList.
 

Detailed Description

Extends PartList<TickableComponent> with order-aware sorting.

Maintains a sorted list of TickableComponents by their composite order (TickGroup + TickPriority). Call Sort() after order changes to re-establish the correct execution sequence.

Member Function Documentation

◆ Added()

void Ship::TickableList::Added ( std::shared_ptr< TickableComponent part,
const bool  forced 
)
inlineoverrideprotected

Re-sorts the list after a component is added so that TickGroup / TickPriority ordering is honored during iteration.

◆ Sort()

TickableList & Ship::TickableList::Sort ( )
inline

Sorts the list by each component's composite order value.

Returns
A reference to this for chaining.

The documentation for this class was generated from the following file: