Cogs.Foundation
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Attributes | List of all members
Cogs::ComponentModel::ComponentPtr< ComponentType > Class Template Reference

A shared_pointer type pointer to a component in an entity. More...

#include <ComponentPtr.h>

Public Types

typedef ComponentType value_type
 

Public Member Functions

 ComponentPtr ()=default
 
 ComponentPtr (const std::shared_ptr< Entity > &owner)
 Initializes a component pointer for component in the given entity.
 
 ComponentPtr (std::shared_ptr< Entity > &&owner) noexcept
 Initializes a component pointer for component in the given entity.
 
 ComponentPtr (const ComponentPtr< ComponentType > &source)
 Initializes a component pointer as a copy constructor.
 
 ComponentPtr (ComponentPtr< ComponentType > &&source) noexcept
 Initializes a component pointer using RValue constructor.
 
constexpr ComponentPtr (std::nullptr_t)
 Construct empty instance.
 
ComponentPtr< ComponentType > & operator= (const ComponentPtr< ComponentType > &rhs)
 
ComponentPtr< ComponentType > & operator= (ComponentPtr< ComponentType > &&rhs) noexcept
 
ComponentType * get () const
 
ComponentType * operator-> () const
 
 operator bool () const
 bool conversion for checking if the component can be accessed.
 
constexpr bool operator== (const ComponentPtr< ComponentType > &other) const
 Comparison operator. If the entity of both objects are equal the objects are considered equal.
 
void reset ()
 Reset to empty.
 
std::shared_ptr< EntitygetEntity () const
 Get the owning entity.
 

Private Attributes

std::shared_ptr< Entityowner
 

Detailed Description

template<typename ComponentType>
class Cogs::ComponentModel::ComponentPtr< ComponentType >

A shared_pointer type pointer to a component in an entity.

Components are by default only accessed using raw pointers. A raw component pointer cannot be saved as the object may be moved when creating more components in the component pool.

Member Typedef Documentation

◆ value_type

template<typename ComponentType >
typedef ComponentType Cogs::ComponentModel::ComponentPtr< ComponentType >::value_type

Constructor & Destructor Documentation

◆ ComponentPtr() [1/6]

template<typename ComponentType >
Cogs::ComponentModel::ComponentPtr< ComponentType >::ComponentPtr ( )
default

◆ ComponentPtr() [2/6]

template<typename ComponentType >
Cogs::ComponentModel::ComponentPtr< ComponentType >::ComponentPtr ( const std::shared_ptr< Entity > &  owner)
inline

Initializes a component pointer for component in the given entity.

◆ ComponentPtr() [3/6]

template<typename ComponentType >
Cogs::ComponentModel::ComponentPtr< ComponentType >::ComponentPtr ( std::shared_ptr< Entity > &&  owner)
inlinenoexcept

Initializes a component pointer for component in the given entity.

◆ ComponentPtr() [4/6]

template<typename ComponentType >
Cogs::ComponentModel::ComponentPtr< ComponentType >::ComponentPtr ( const ComponentPtr< ComponentType > &  source)
inline

Initializes a component pointer as a copy constructor.

◆ ComponentPtr() [5/6]

template<typename ComponentType >
Cogs::ComponentModel::ComponentPtr< ComponentType >::ComponentPtr ( ComponentPtr< ComponentType > &&  source)
inlinenoexcept

Initializes a component pointer using RValue constructor.

◆ ComponentPtr() [6/6]

template<typename ComponentType >
constexpr Cogs::ComponentModel::ComponentPtr< ComponentType >::ComponentPtr ( std::nullptr_t  )
inlineconstexpr

Construct empty instance.

Member Function Documentation

◆ get()

template<typename ComponentType >
ComponentType * Cogs::ComponentModel::ComponentPtr< ComponentType >::get ( ) const
inline

◆ getEntity()

template<typename ComponentType >
std::shared_ptr< Entity > Cogs::ComponentModel::ComponentPtr< ComponentType >::getEntity ( ) const
inline

◆ operator bool()

template<typename ComponentType >
Cogs::ComponentModel::ComponentPtr< ComponentType >::operator bool ( ) const
inline

bool conversion for checking if the component can be accessed.

References Cogs::ComponentModel::ComponentPtr< ComponentType >::operator->(), and Cogs::ComponentModel::ComponentPtr< ComponentType >::owner.

◆ operator->()

template<typename ComponentType >
ComponentType * Cogs::ComponentModel::ComponentPtr< ComponentType >::operator-> ( ) const
inline

◆ operator=() [1/2]

template<typename ComponentType >
ComponentPtr< ComponentType > & Cogs::ComponentModel::ComponentPtr< ComponentType >::operator= ( ComponentPtr< ComponentType > &&  rhs)
inlinenoexcept

◆ operator=() [2/2]

template<typename ComponentType >
ComponentPtr< ComponentType > & Cogs::ComponentModel::ComponentPtr< ComponentType >::operator= ( const ComponentPtr< ComponentType > &  rhs)
inline

◆ operator==()

template<typename ComponentType >
constexpr bool Cogs::ComponentModel::ComponentPtr< ComponentType >::operator== ( const ComponentPtr< ComponentType > &  other) const
inlineconstexpr

Comparison operator. If the entity of both objects are equal the objects are considered equal.

References Cogs::ComponentModel::ComponentPtr< ComponentType >::owner.

◆ reset()

template<typename ComponentType >
void Cogs::ComponentModel::ComponentPtr< ComponentType >::reset ( )
inline

Member Data Documentation

◆ owner

template<typename ComponentType >
std::shared_ptr<Entity> Cogs::ComponentModel::ComponentPtr< ComponentType >::owner
private

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