// Copyright (C) 2015 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 #include #include namespace Nz { /*! * \ingroup graphics * \class Nz::InstancedRenderable * \brief Graphics class that represents an instancer renderable * * \remark This class is abstract */ /*! * \brief Destructs the object and calls OnInstancedRenderableRelease * * \see OnInstancedRenderableRelease */ InstancedRenderable::~InstancedRenderable() { OnInstancedRenderableRelease(this); } /*! * \brief Culls the instanced if not in the frustum * \return true If instanced is in the frustum * * \param frustum Symbolizing the field of view * \param transformMatrix Matrix transformation for our object */ bool InstancedRenderable::Cull(const Frustumf& frustum, const InstanceData& instanceData) const { return frustum.Contains(instanceData.volume); } /*! * \brief Gets the bounding volume * \return Bounding volume of the instanced */ const BoundingVolumef& InstancedRenderable::GetBoundingVolume() const { EnsureBoundingVolumeUpdated(); return m_boundingVolume; } /*! * \brief Invalidates data for instanced * * \param instanceData Pointer to data of instances * \param flags Flags for the instances * * \remark Produces a NazaraAssert if instanceData is invalid */ void InstancedRenderable::InvalidateData(InstanceData* instanceData, UInt32 flags) const { NazaraAssert(instanceData, "Invalid instance data"); instanceData->flags |= flags; } /*! * \brief Updates the bounding volume * * \param instanceData Pointer to data of instances * * \remark Produces a NazaraAssert if instanceData is invalid */ void InstancedRenderable::UpdateBoundingVolume(InstanceData* instanceData) const { NazaraAssert(instanceData, "Invalid instance data"); NazaraUnused(instanceData); instanceData->volume.Update(instanceData->transformMatrix); } /*! * \brief Updates the instance data * * \param instanceData Pointer to data of instances * * \remark Produces a NazaraAssert if instanceData is invalid */ void InstancedRenderable::UpdateData(InstanceData* instanceData) const { NazaraAssert(instanceData, "Invalid instance data"); } InstancedRenderableLibrary::LibraryMap InstancedRenderable::s_library; }