Cogs.Core
|
Contains data describing level of detail behavior for the entity the component belongs to. More...
#include <LodComponent.h>
Static Public Member Functions | |
static void | registerType () |
Register the type in the type system. | |
![]() | |
static COGSFOUNDATION_API void | registerType () |
Register the Component type in the global type database. | |
static COGSFOUNDATION_API Reflection::TypeId | getComponentTypeId (const StringView &name) |
Get the type id of the component type with the given name. | |
Public Attributes | |
LodPolicy | policy = LodPolicy::CenterDistance |
The policy used for determining the level of detail for this entity. | |
std::vector< float > | thresholds |
Threshold values to switch levels of detail at when the policy in use is distance based (for example LodPolicy::CenterDistance). | |
float | geometricTolerance = 1.0f |
Geometric tolerance value applied when the lodPolicy field is set to LodPolicy::GeometricTolerance. | |
bool | separateHierarchies = false |
Enable old-style lod'ing with a completely separate hierarchy for each lod-level. | |
Additional Inherited Members | |
![]() | |
class Entity * | getContainer () const |
Get the container currently owning this component instance. | |
void | setContainer (class Entity *container) |
Set the container owning this component instance. | |
template<typename ComponentType > | |
ComponentType * | getComponent () const |
COGSFOUNDATION_API Component * | getComponent (const Reflection::Name &name) const |
COGSFOUNDATION_API Component * | getComponent (const Reflection::TypeId &id) const |
template<typename ComponentType > | |
ComponentHandle | getComponentHandle () const |
COGSFOUNDATION_API ComponentHandle | getComponentHandle (const Reflection::Name &name) const |
COGSFOUNDATION_API ComponentHandle | getComponentHandle (const Reflection::TypeId &id) const |
void | setActive () |
Sets the component to the ComponentFlags::Active state. | |
bool | isActive () const |
Gets if the component is currently set to the ComponentFlags::Active state. | |
void | setChanged () |
Sets the component to the ComponentFlags::Changed state with carry. | |
void | setChangedTransient () |
Sets the component to the ComponentFlags::Changed state without carry. | |
void | setFieldChanged (const Reflection::FieldId fieldId) |
Sets the component to the ComponentFlags::Changed state without carry. | |
template<typename ClassType , typename FieldType > | |
void | setFieldChanged (FieldType ClassType::*field) |
Sets a flag indicating that the given field has changed. | |
void | setFieldChangedTransient (const Reflection::FieldId fieldId) |
Sets the component to the ComponentFlags::Changed state without carry. | |
bool | hasChanged () const |
bool | hasAnyfieldChanged () const |
Gets if any fields have been changed. | |
bool | hasFieldChanged (const Reflection::FieldId fieldId) const |
Gets if the field with the given id on this component instance has changed. | |
template<typename ClassType , typename FieldType > | |
bool | hasFieldChanged (FieldType ClassType::*field) const |
Gets if the given field has changed. | |
void | resetCarryChanged () |
Reset the CarryChanged flag. Called at start of redraw. See ComponentFlags::CarryChanged. | |
void | resetChanged () |
Resets the changed state of the component, respecting any carry state set. | |
template<typename ClassType , typename FieldType > | |
Reflection::FieldId | getFieldId (FieldType ClassType::*field) const |
Gets field ID of the given field. | |
void | resetFieldsChanged () |
Resets the state of all changed field flags. | |
void | resetFieldChanged (const Reflection::FieldId fieldId) |
Resets the changed state of the given fieldId. | |
template<typename ClassType , typename FieldType > | |
void | resetFieldChanged (FieldType ClassType::*field) |
Resets the changed state of the given field. | |
constexpr void | setFlags (const uint32_t flags) |
Override all flags of the Component, setting the given flags. | |
constexpr void | setFlag (const uint32_t flag) |
Set the given flags. Does not override the currently set flags. | |
constexpr void | unsetFlag (const uint32_t flag) |
Unset the given flag. Does not remove the status of other than the given flags. | |
constexpr bool | isSet (const uint32_t flag) const |
Checks if the given flag is set. Requires exact bit match if test of several bits. | |
constexpr void | setTypeId (const Reflection::TypeId typeId) |
Set the Reflection::TypeId of the component. | |
constexpr Reflection::TypeId | getTypeId () const |
Get the Reflection::TypeId of the component. | |
COGSFOUNDATION_API const Reflection::Type & | getType () const |
Get the full Reflection::Type of the component. | |
constexpr void | setIndex (const ComponentIndex index) |
Set the components pool index. For internal use only. | |
constexpr ComponentIndex | getIndex () const |
Get the components pool index. For internal use only. | |
constexpr void | setGeneration (uint16_t generation) |
Sets the component generation. | |
constexpr uint16_t | getGeneration () const |
Gets the component generation. | |
size_t | hash (size_t hashValue=Cogs::hash()) const |
Calculates a hash of this component's members. | |
Contains data describing level of detail behavior for the entity the component belongs to.
Depending on the policy set, the LodSystem does not necessarily perform any actions on other components of the entity. Some level of detail policies might be implemented in different systems, using the LodComponent instance as control data.
Definition at line 42 of file LodComponent.h.
|
static |
Register the type in the type system.
Definition at line 9 of file LodComponent.cpp.
References Cogs::Core::CenterDistance, Cogs::Core::GeometricTolerance, geometricTolerance, Cogs::Core::None, policy, separateHierarchies, and thresholds.
float Cogs::Core::LodComponent::geometricTolerance = 1.0f |
Geometric tolerance value applied when the lodPolicy field is set to LodPolicy::GeometricTolerance.
Definition at line 68 of file LodComponent.h.
Referenced by registerType(), and Cogs::Core::TrajectorySystem::update().
LodPolicy Cogs::Core::LodComponent::policy = LodPolicy::CenterDistance |
The policy used for determining the level of detail for this entity.
Definition at line 51 of file LodComponent.h.
Referenced by registerType(), Cogs::Core::LodSystem::update(), and Cogs::Core::TrajectorySystem::update().
bool Cogs::Core::LodComponent::separateHierarchies = false |
Enable old-style lod'ing with a completely separate hierarchy for each lod-level.
Definition at line 73 of file LodComponent.h.
Referenced by registerType(), and Cogs::Core::LodSystem::update().
std::vector<float> Cogs::Core::LodComponent::thresholds |
Threshold values to switch levels of detail at when the policy in use is distance based (for example LodPolicy::CenterDistance).
The thresholds tells the LodSystem at which distances it may switch the visibility of child entities on and off. The number of threshold values should typically equal the number of children - 1. This results in the first child being shown when the distance is less than the first threshold value, then stepping through the children, one per threshold value, finally showing the last child if the distance is greater than the last threshold value.
Definition at line 63 of file LodComponent.h.
Referenced by registerType().