Skip to main content

NumericValueComponent Class Template

Generic numeric value component with dirty-state tracking. More...

Declaration

template <typename TDomainTag, typename THandle, typename TNumericType> class helios::engine::core::components::NumericValueComponent<TDomainTag, THandle, TNumericType> { ... }

Public Constructors Index

template <typename TDomainTag, typename THandle, typename TNumericType>
NumericValueComponent ()=default
template <typename TDomainTag, typename THandle, typename TNumericType>
NumericValueComponent (const TNumericType value)

Constructs the component with an initial scalar value. More...

template <typename TDomainTag, typename THandle, typename TNumericType>
NumericValueComponent (const NumericValueComponent &other)

Copy constructor. More...

template <typename TDomainTag, typename THandle, typename TNumericType>
NumericValueComponent (NumericValueComponent &&) noexcept=default

Default move constructor. More...

Public Operators Index

template <typename TDomainTag, typename THandle, typename TNumericType>
NumericValueComponent &operator= (const NumericValueComponent &)=default

Default copy assignment. More...

template <typename TDomainTag, typename THandle, typename TNumericType>
NumericValueComponent &operator= (NumericValueComponent &&) noexcept=default

Default move assignment. More...

Public Member Functions Index

template <typename TDomainTag, typename THandle, typename TNumericType>
voidonAcquire () noexcept

Lifecycle hook called when the component is acquired. More...

template <typename TDomainTag, typename THandle, typename TNumericType>
voidonRelease () noexcept

Lifecycle hook called when the component is released. More...

template <typename TDomainTag, typename THandle, typename TNumericType>
voidclearDirty () noexcept

Clears the dirty flag after dependent systems consumed updates. More...

template <typename TDomainTag, typename THandle, typename TNumericType>
boolisDirty () const noexcept

Returns whether the component requires a refresh pass. More...

template <typename TDomainTag, typename THandle, typename TNumericType>
TNumericTypevalue () noexcept

Returns the current value. More...

template <typename TDomainTag, typename THandle, typename TNumericType>
TNumericTypevalue () const noexcept
template <typename TDomainTag, typename THandle, typename TNumericType>
voidsetValue (const TNumericType value) noexcept

Updates the value and marks the component dirty on change. More...

Private Member Attributes Index

template <typename TDomainTag, typename THandle, typename TNumericType>
TNumericTypevalue_ {}
template <typename TDomainTag, typename THandle, typename TNumericType>
boolisDirty_ = true

Description

Generic numeric value component with dirty-state tracking.

Template Parameters
TDomainTag

Semantic domain tag.

THandle

Owning entity handle type.

TNumericType

Scalar type for stored numeric values.

Definition at line 28 of file NumericValueComponent.ixx.

Public Constructors

NumericValueComponent()

template <typename TDomainTag, typename THandle, typename TNumericType>
helios::engine::core::components::NumericValueComponent< TDomainTag, THandle, TNumericType >::NumericValueComponent ()
default

Definition at line 36 of file NumericValueComponent.ixx.

NumericValueComponent()

template <typename TDomainTag, typename THandle, typename TNumericType>
helios::engine::core::components::NumericValueComponent< TDomainTag, THandle, TNumericType >::NumericValueComponent (const TNumericType value)
inline explicit

Constructs the component with an initial scalar value.

Parameters
value

Initial numeric value.

Definition at line 44 of file NumericValueComponent.ixx.

44 explicit NumericValueComponent(const TNumericType value) : value_(value){}

NumericValueComponent()

template <typename TDomainTag, typename THandle, typename TNumericType>
helios::engine::core::components::NumericValueComponent< TDomainTag, THandle, TNumericType >::NumericValueComponent (const NumericValueComponent & other)
inline

Copy constructor.

Copies the value and forces the copied component into a dirty state to ensure dependent systems refresh cached data.

Parameters
other

The component to copy from.

Definition at line 54 of file NumericValueComponent.ixx.

55 value_(other.value_),
56 isDirty_(true) {}

NumericValueComponent()

template <typename TDomainTag, typename THandle, typename TNumericType>
helios::engine::core::components::NumericValueComponent< TDomainTag, THandle, TNumericType >::NumericValueComponent (NumericValueComponent &&)
noexcept default

Default move constructor.

Definition at line 61 of file NumericValueComponent.ixx.

Public Operators

operator=()

template <typename TDomainTag, typename THandle, typename TNumericType>
NumericValueComponent & helios::engine::core::components::NumericValueComponent< TDomainTag, THandle, TNumericType >::operator= (const NumericValueComponent &)
default

Default copy assignment.

Definition at line 59 of file NumericValueComponent.ixx.

operator=()

template <typename TDomainTag, typename THandle, typename TNumericType>
NumericValueComponent & helios::engine::core::components::NumericValueComponent< TDomainTag, THandle, TNumericType >::operator= (NumericValueComponent &&)
noexcept default

Default move assignment.

Definition at line 63 of file NumericValueComponent.ixx.

Public Member Functions

clearDirty()

template <typename TDomainTag, typename THandle, typename TNumericType>
void helios::engine::core::components::NumericValueComponent< TDomainTag, THandle, TNumericType >::clearDirty ()
inline noexcept

Clears the dirty flag after dependent systems consumed updates.

Definition at line 86 of file NumericValueComponent.ixx.

87 isDirty_ = false;
88 }

isDirty()

template <typename TDomainTag, typename THandle, typename TNumericType>
bool helios::engine::core::components::NumericValueComponent< TDomainTag, THandle, TNumericType >::isDirty ()
inline noexcept

Returns whether the component requires a refresh pass.

Returns

true if value changed or lifecycle hooks marked dirty.

Definition at line 95 of file NumericValueComponent.ixx.

96 return isDirty_;
97 }

onAcquire()

template <typename TDomainTag, typename THandle, typename TNumericType>
void helios::engine::core::components::NumericValueComponent< TDomainTag, THandle, TNumericType >::onAcquire ()
inline noexcept

Lifecycle hook called when the component is acquired.

Marks the component dirty to trigger downstream recomputation.

Definition at line 70 of file NumericValueComponent.ixx.

71 isDirty_ = true;
72 }

onRelease()

template <typename TDomainTag, typename THandle, typename TNumericType>
void helios::engine::core::components::NumericValueComponent< TDomainTag, THandle, TNumericType >::onRelease ()
inline noexcept

Lifecycle hook called when the component is released.

Marks the component dirty to trigger downstream recomputation.

Definition at line 79 of file NumericValueComponent.ixx.

80 isDirty_ = true;
81 }

setValue()

template <typename TDomainTag, typename THandle, typename TNumericType>
void helios::engine::core::components::NumericValueComponent< TDomainTag, THandle, TNumericType >::setValue (const TNumericType value)
inline noexcept

Updates the value and marks the component dirty on change.

Integral types use exact comparison. Floating-point types use helios::math::EPSILON_LENGTH to suppress insignificant updates.

Parameters
value

New scalar value.

Definition at line 120 of file NumericValueComponent.ixx.

120 void setValue(const TNumericType value) noexcept {
121
122 if constexpr (std::floating_point<TNumericType>) {
123 if (std::abs(value_ - value) <= static_cast<TNumericType>(helios::math::EPSILON_LENGTH)) {
124 return;
125 }
126 } else {
127 if (value_ == value) {
128 return;
129 }
130 }
131
132
133 value_ = value;
134 isDirty_ = true;
135 };

References helios::registerComponents and helios::engine::core::components::NumericValueComponent< TDomainTag, THandle, TNumericType >::value.

value()

template <typename TDomainTag, typename THandle, typename TNumericType>
TNumericType helios::engine::core::components::NumericValueComponent< TDomainTag, THandle, TNumericType >::value ()
inline noexcept

Returns the current value.

Returns

Current value.

Definition at line 104 of file NumericValueComponent.ixx.

105 return value_;
106 }

Referenced by helios::engine::core::components::NumericValueComponent< TDomainTag, THandle, TNumericType >::setValue.

value()

template <typename TDomainTag, typename THandle, typename TNumericType>
TNumericType helios::engine::core::components::NumericValueComponent< TDomainTag, THandle, TNumericType >::value ()
inline noexcept

Definition at line 108 of file NumericValueComponent.ixx.

109 return value_;
110 }

Private Member Attributes

isDirty_

template <typename TDomainTag, typename THandle, typename TNumericType>
bool helios::engine::core::components::NumericValueComponent< TDomainTag, THandle, TNumericType >::isDirty_ = true

Definition at line 32 of file NumericValueComponent.ixx.

32 bool isDirty_ = true;

value_

template <typename TDomainTag, typename THandle, typename TNumericType>
TNumericType helios::engine::core::components::NumericValueComponent< TDomainTag, THandle, TNumericType >::value_ {}

Definition at line 30 of file NumericValueComponent.ixx.

30 TNumericType value_{};

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


Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.9.8.