Added visibility state to SceneNode
Former-commit-id: 5325e268a4276d6e2e3e72648641ca03225ab4da
This commit is contained in:
@@ -51,12 +51,12 @@ class NAZARA_API NzCamera : public NzSceneNode
|
||||
private:
|
||||
void AddToRenderQueue(NzRenderQueue& renderQueue) const;
|
||||
void Invalidate();
|
||||
bool IsVisible(const NzFrustumf& frustum) const override;
|
||||
void Register();
|
||||
void Unregister();
|
||||
void UpdateFrustum() const;
|
||||
void UpdateProjectionMatrix() const;
|
||||
void UpdateViewMatrix() const;
|
||||
bool VisibilityTest(const NzFrustumf& frustum) override;
|
||||
|
||||
mutable NzFrustumf m_frustum;
|
||||
mutable NzMatrix4f m_projectionMatrix;
|
||||
|
||||
@@ -36,8 +36,6 @@ class NAZARA_API NzLight : public NzSceneNode
|
||||
nzSceneNodeType GetSceneNodeType() const;
|
||||
NzColor GetSpecularColor() const;
|
||||
|
||||
bool IsVisible(const NzFrustumf& frustum) const;
|
||||
|
||||
void SetAmbientColor(const NzColor& ambient);
|
||||
void SetAttenuation(float attenuation);
|
||||
void SetDiffuseColor(const NzColor& diffuse);
|
||||
@@ -52,6 +50,7 @@ class NAZARA_API NzLight : public NzSceneNode
|
||||
void Register();
|
||||
void Unregister();
|
||||
void UpdateFrustum();
|
||||
bool VisibilityTest(const NzFrustumf& frustum);
|
||||
|
||||
nzLightType m_type;
|
||||
NzBoundingBoxf m_boundingBox;
|
||||
|
||||
@@ -54,7 +54,6 @@ class NAZARA_API NzModel : public NzSceneNode, public NzUpdatable
|
||||
|
||||
bool IsAnimationEnabled() const;
|
||||
bool IsDrawEnabled() const;
|
||||
bool IsVisible(const NzFrustumf& frustum) const override;
|
||||
|
||||
bool LoadFromFile(const NzString& meshPath, const NzModelParameters& modelParameters = NzModelParameters());
|
||||
bool LoadFromMemory(const void* data, std::size_t size, const NzModelParameters& modelParameters = NzModelParameters());
|
||||
@@ -77,6 +76,7 @@ class NAZARA_API NzModel : public NzSceneNode, public NzUpdatable
|
||||
void Unregister() override;
|
||||
void Update() override;
|
||||
void UpdateBoundingBox() const;
|
||||
bool VisibilityTest(const NzFrustumf& frustum) override;
|
||||
|
||||
std::vector<NzMaterial*> m_materials;
|
||||
mutable NzBoundingBoxf m_boundingBox;
|
||||
|
||||
@@ -10,10 +10,12 @@
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Core/Color.hpp>
|
||||
#include <Nazara/Core/Updatable.hpp>
|
||||
#include <Nazara/Math/Frustum.hpp>
|
||||
|
||||
class NzCamera;
|
||||
class NzLight;
|
||||
class NzModel;
|
||||
class NzRenderQueue;
|
||||
class NzSceneNode;
|
||||
struct NzSceneImpl;
|
||||
|
||||
@@ -45,6 +47,7 @@ class NAZARA_API NzScene
|
||||
operator const NzSceneNode&() const;
|
||||
|
||||
private:
|
||||
void RecursiveFrustumCull(NzRenderQueue& renderQueue, const NzFrustumf& frustum, NzSceneNode* node);
|
||||
void SetActiveCamera(const NzCamera* camera);
|
||||
|
||||
NzSceneImpl* m_impl;
|
||||
|
||||
@@ -31,17 +31,22 @@ class NAZARA_API NzSceneNode : public NzNode
|
||||
NzScene* GetScene() const;
|
||||
virtual nzSceneNodeType GetSceneNodeType() const = 0;
|
||||
|
||||
virtual bool IsVisible(const NzFrustumf& frustum) const = 0;
|
||||
bool IsVisible() const;
|
||||
|
||||
protected:
|
||||
virtual void OnParenting(const NzNode* parent) override;
|
||||
virtual void OnVisibilityChange(bool visibility);
|
||||
virtual void Register();
|
||||
void SetScene(NzScene* scene);
|
||||
virtual bool ShouldUpdateWhenVisible();
|
||||
virtual void Unregister();
|
||||
virtual void Update();
|
||||
virtual bool VisibilityTest(const NzFrustumf& frustum) = 0;
|
||||
|
||||
NzScene* m_scene;
|
||||
bool m_visible;
|
||||
|
||||
private:
|
||||
void UpdateVisibility(const NzFrustumf& frustum);
|
||||
};
|
||||
|
||||
#endif // NAZARA_SCENENODE_HPP
|
||||
|
||||
@@ -22,14 +22,13 @@ class NAZARA_API NzSceneRoot : public NzSceneNode
|
||||
const NzBoundingBoxf& GetBoundingBox() const override;
|
||||
nzSceneNodeType GetSceneNodeType() const override;
|
||||
|
||||
bool IsVisible(const NzFrustumf& frustum) const override;
|
||||
|
||||
private:
|
||||
NzSceneRoot(NzScene* scene);
|
||||
virtual ~NzSceneRoot();
|
||||
|
||||
void Register();
|
||||
void Unregister();
|
||||
bool VisibilityTest(const NzFrustumf& frustum) override;
|
||||
};
|
||||
|
||||
#endif // NAZARA_SCENEROOT_HPP
|
||||
|
||||
Reference in New Issue
Block a user