void GraphicsComponent::OnNodeInvalidated(const Nz::Node* node) { NazaraUnused(node); // Our view matrix depends on NodeComponent position/rotation InvalidateTransformMatrix(); }
void GraphicsComponent::OnAttached() { if (m_entity->HasComponent<NodeComponent>()) m_nodeInvalidationSlot.Connect(m_entity->GetComponent<NodeComponent>().OnNodeInvalidation, this, &GraphicsComponent::OnNodeInvalidated); InvalidateTransformMatrix(); }
void GraphicsComponent::OnComponentDetached(BaseComponent& component) { if (IsComponent<NodeComponent>(component)) { m_nodeInvalidationSlot.Disconnect(); InvalidateTransformMatrix(); } }
void GraphicsComponent::OnComponentAttached(BaseComponent& component) { if (IsComponent<NodeComponent>(component)) { NodeComponent& nodeComponent = static_cast<NodeComponent&>(component); m_nodeInvalidationSlot.Connect(nodeComponent.OnNodeInvalidation, this, &GraphicsComponent::OnNodeInvalidated); InvalidateTransformMatrix(); } }
void GraphicsComponent::OnNodeInvalidated(const Nz::Node* node) { NazaraUnused(node); // Our view matrix depends on NodeComponent position/rotation InvalidateBoundingVolume(); InvalidateTransformMatrix(); for (VolumeCullingEntry& entry : m_volumeCullingEntries) entry.listEntry.ForceInvalidation(); //< Force invalidation on movement }
void GraphicsComponent::OnDetached() { m_nodeInvalidationSlot.Disconnect(); InvalidateTransformMatrix(); }