Cogs.Core
Static Public Member Functions | Public Attributes | List of all members
Cogs::Core::SceneComponent Class Reference

Contains information on how the entity behaves in the scene. More...

#include <SceneComponent.h>

Inheritance diagram for Cogs::Core::SceneComponent:
Cogs::ComponentModel::Component

Static Public Member Functions

static void registerType ()
 Register the type in the type system.
 
- Static Public Member Functions inherited from Cogs::ComponentModel::Component
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

bool visible = true
 If the entity this component is a member of should be visible.
 
bool pickable = true
 If the entity this component is a member of should be pickable.
 
std::vector< EntityPtrchildren
 Contains all child entities owned by this component.
 
ComponentModel::ComponentHandle parent = ComponentModel::ComponentHandle::Empty()
 Handle to the scene component of the parent entity.
 

Additional Inherited Members

- Public Member Functions inherited from Cogs::ComponentModel::Component
class EntitygetContainer () 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 ComponentgetComponent (const Reflection::Name &name) const
 
COGSFOUNDATION_API ComponentgetComponent (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::TypegetType () 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.
 

Detailed Description

Contains information on how the entity behaves in the scene.

The scene component is used to represent an entity as a member of the scene, with behavior similar to that of a scene graph in terms of handling child visibility and picking.

Using the scene component, an entity can store owning references to child entities in the children field, which are automatically cleaned up when the entity itself is removed from the scene.

The scene component has interactions with several of the core systems, for example the LodSystem uses the children field to enumerate children when switching LoD is enabled.

Definition at line 23 of file SceneComponent.h.

Member Function Documentation

◆ registerType()

void Cogs::Core::SceneComponent::registerType ( )
static

Member Data Documentation

◆ children

std::vector<EntityPtr> Cogs::Core::SceneComponent::children

Contains all child entities owned by this component.

All child entities are affected by the state of visible and pickable. This field is used by internal code to enumerate children whenever necessary.

Clearing this collection will lead to the destruction of all child entities and components in these entities if no other owning shared pointers exist.

Definition at line 56 of file SceneComponent.h.

Referenced by Cogs::Core::EntityStore::addChild(), Cogs::Core::applyRecursiveFieldChange(), Cogs::Core::EntityStore::dumpHierarchy(), Cogs::Core::EntityStore::findEntity(), Cogs::Core::findHierarchyWithMatch(), Cogs::Core::EchoSounder::OctProviderSystem::preUpdate(), registerType(), and Cogs::Core::SceneSystem::update().

◆ parent

Handle to the scene component of the parent entity.

Only valid if a parent entity is present.

Definition at line 61 of file SceneComponent.h.

Referenced by Cogs::Core::EntityStore::addChild(), Cogs::Core::EntityStore::removeChildren(), and Cogs::Core::SceneSystem::update().

◆ pickable

bool Cogs::Core::SceneComponent::pickable = true

If the entity this component is a member of should be pickable.

Setting this field affects the entity this component is attached to, in addition to all child entities in the children member.

See also
visible for a description on how the value of pickable propagates to children.

Definition at line 47 of file SceneComponent.h.

Referenced by Cogs::Core::VectorField::VectorFieldPick::pickCamera(), Cogs::Core::MarkerPointSetPicker::pickCamera(), Cogs::Core::MarkerPointSetPicker::pickRay(), and registerType().

◆ visible

bool Cogs::Core::SceneComponent::visible = true

If the entity this component is a member of should be visible.

Setting this field affects the entity this component is attached to, in addition to all child entities in the children member. Setting visible to false will result in all entities in the subgraph formed by children being invisible. Setting the value to true results in all entities in the same graph being visible as long as no other component modifies any visibilities to false.

Definition at line 37 of file SceneComponent.h.

Referenced by Cogs::Core::InstancedMeshRenderBounds::getBounds(), Cogs::Core::MarkerPointSetPicker::pickCamera(), Cogs::Core::MarkerPointSetPicker::pickRay(), Cogs::Core::OGC3DTilesSystem::pruneTileCache(), registerType(), Cogs::Core::LodSystem::update(), Cogs::Core::Volumetric::DensityFieldSystem::update(), Cogs::Core::Volumetric::PointVisualizationSystem::update(), and Cogs::Core::AssetSystem::update().


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