// Copyright (C) 2014 Jérôme Leclercq // This file is part of the "Nazara Engine - Graphics module" // For conditions of distribution and use, see copyright notice in Config.hpp #pragma once #ifndef NAZARA_SCENENODE_HPP #define NAZARA_SCENENODE_HPP #include #include #include #include #include #include class NAZARA_API NzSceneNode : public NzNode { friend class NzScene; public: NzSceneNode(); NzSceneNode(const NzSceneNode& node); virtual ~NzSceneNode(); virtual void AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const = 0; virtual const NzBoundingVolumef& GetBoundingVolume() const = 0; nzNodeType GetNodeType() const final; NzScene* GetScene() const; virtual nzSceneNodeType GetSceneNodeType() const = 0; bool IsVisible() const; protected: virtual void OnParenting(const NzNode* parent) override; virtual void OnVisibilityChange(bool visibility); void RecursiveSetScene(NzScene* scene, NzNode* node); virtual void Register(); void SetScene(NzScene* scene); virtual void Unregister(); virtual void Update(); virtual bool VisibilityTest(const NzCamera* camera) = 0; NzScene* m_scene; bool m_visible; private: void UpdateVisibility(const NzCamera& camera); }; #endif // NAZARA_SCENENODE_HPP