Ndk/Camera: Invalidate when node invalidate
Former-commit-id: bda6e1f8a5b64f593c9f4ef95a99f1b0198790e7
This commit is contained in:
parent
fa2a269e5a
commit
3195a50114
|
|
@ -11,13 +11,14 @@
|
||||||
#include <Nazara/Math/Matrix4.hpp>
|
#include <Nazara/Math/Matrix4.hpp>
|
||||||
#include <Nazara/Math/Vector3.hpp>
|
#include <Nazara/Math/Vector3.hpp>
|
||||||
#include <Nazara/Renderer/RenderTarget.hpp>
|
#include <Nazara/Renderer/RenderTarget.hpp>
|
||||||
|
#include <Nazara/Utility/Node.hpp>
|
||||||
#include <NDK/Component.hpp>
|
#include <NDK/Component.hpp>
|
||||||
|
|
||||||
namespace Ndk
|
namespace Ndk
|
||||||
{
|
{
|
||||||
class Entity;
|
class Entity;
|
||||||
|
|
||||||
class NDK_API CameraComponent : public Component<CameraComponent>, NzRenderTarget::Listener
|
class NDK_API CameraComponent : public Component<CameraComponent>, NzNode::Listener, NzRenderTarget::Listener
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CameraComponent();
|
CameraComponent();
|
||||||
|
|
@ -62,6 +63,7 @@ namespace Ndk
|
||||||
void OnComponentAttached(BaseComponent& component) override;
|
void OnComponentAttached(BaseComponent& component) override;
|
||||||
void OnComponentDetached(BaseComponent& component) override;
|
void OnComponentDetached(BaseComponent& component) override;
|
||||||
void OnDetached() override;
|
void OnDetached() override;
|
||||||
|
bool OnNodeInvalidated(const NzNode* node, void* userdata) override;
|
||||||
void OnRenderTargetReleased(const NzRenderTarget* renderTarget, void* userdata) override;
|
void OnRenderTargetReleased(const NzRenderTarget* renderTarget, void* userdata) override;
|
||||||
bool OnRenderTargetSizeChange(const NzRenderTarget* renderTarget, void* userdata) override;
|
bool OnRenderTargetSizeChange(const NzRenderTarget* renderTarget, void* userdata) override;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,15 +8,6 @@
|
||||||
|
|
||||||
namespace Ndk
|
namespace Ndk
|
||||||
{
|
{
|
||||||
/*void CameraComponent::InvalidateNode()
|
|
||||||
{
|
|
||||||
NzNode::InvalidateNode();
|
|
||||||
|
|
||||||
// Le frustum et la view matrix dépendent des paramètres du node, invalidons-les
|
|
||||||
m_frustumUpdated = false;
|
|
||||||
m_viewMatrixUpdated = false;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
void CameraComponent::OnAttached()
|
void CameraComponent::OnAttached()
|
||||||
{
|
{
|
||||||
InvalidateViewMatrix();
|
InvalidateViewMatrix();
|
||||||
|
|
@ -25,20 +16,40 @@ namespace Ndk
|
||||||
void CameraComponent::OnComponentAttached(BaseComponent& component)
|
void CameraComponent::OnComponentAttached(BaseComponent& component)
|
||||||
{
|
{
|
||||||
if (IsComponent<NodeComponent>(component))
|
if (IsComponent<NodeComponent>(component))
|
||||||
|
{
|
||||||
|
NodeComponent& nodeComponent = static_cast<NodeComponent&>(component);
|
||||||
|
nodeComponent.AddListener(this);
|
||||||
|
|
||||||
InvalidateViewMatrix();
|
InvalidateViewMatrix();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CameraComponent::OnComponentDetached(BaseComponent& component)
|
void CameraComponent::OnComponentDetached(BaseComponent& component)
|
||||||
{
|
{
|
||||||
if (IsComponent<NodeComponent>(component))
|
if (IsComponent<NodeComponent>(component))
|
||||||
|
{
|
||||||
|
NodeComponent& nodeComponent = static_cast<NodeComponent&>(component);
|
||||||
|
nodeComponent.RemoveListener(this);
|
||||||
|
|
||||||
InvalidateViewMatrix();
|
InvalidateViewMatrix();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CameraComponent::OnDetached()
|
void CameraComponent::OnDetached()
|
||||||
{
|
{
|
||||||
InvalidateViewMatrix();
|
InvalidateViewMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CameraComponent::OnNodeInvalidated(const NzNode* node, void* userdata)
|
||||||
|
{
|
||||||
|
NazaraUnused(node);
|
||||||
|
NazaraUnused(userdata);
|
||||||
|
|
||||||
|
// La matrice de vue dépend directement des données du node, invalidons-là
|
||||||
|
InvalidateViewMatrix();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void CameraComponent::OnRenderTargetReleased(const NzRenderTarget* renderTarget, void* userdata)
|
void CameraComponent::OnRenderTargetReleased(const NzRenderTarget* renderTarget, void* userdata)
|
||||||
{
|
{
|
||||||
NazaraUnused(userdata);
|
NazaraUnused(userdata);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue