Cogs.Core
|
Contains information on how the entity behaves in the scene. More...
#include <SceneComponent.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 | |
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< EntityPtr > | children |
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 | |
![]() | |
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 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.
|
static |
Register the type in the type system.
Definition at line 11 of file SceneComponent.cpp.
References Cogs::Core::AddInstanceTexcoords, Cogs::Core::AllSorted, Cogs::Core::AllUnsorted, children, Cogs::Core::Closest, Cogs::Core::FlatTexcoordInterpolation, Cogs::Core::None, pickable, Cogs::Core::PickSprites, Cogs::Core::RemoveDuplicateEntities, Cogs::Core::RemoveDuplicates, Cogs::Core::ReturnChildEntity, and visible.
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().
ComponentModel::ComponentHandle Cogs::Core::SceneComponent::parent = ComponentModel::ComponentHandle::Empty() |
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().
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.
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().
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().