Graphics/InstancedRenderable: Replace constructor AABB with UpdateAABB method
This commit is contained in:
@@ -23,7 +23,7 @@ namespace Nz
|
||||
class NAZARA_GRAPHICS_API InstancedRenderable
|
||||
{
|
||||
public:
|
||||
inline InstancedRenderable(const Boxf& aabb);
|
||||
inline InstancedRenderable();
|
||||
InstancedRenderable(const InstancedRenderable&) = delete;
|
||||
InstancedRenderable(InstancedRenderable&&) noexcept = default;
|
||||
~InstancedRenderable();
|
||||
@@ -37,8 +37,12 @@ namespace Nz
|
||||
InstancedRenderable& operator=(const InstancedRenderable&) = delete;
|
||||
InstancedRenderable& operator=(InstancedRenderable&&) noexcept = default;
|
||||
|
||||
NazaraSignal(OnAABBUpdate, InstancedRenderable* /*instancedRenderable*/, const Boxf& /*aabb*/);
|
||||
NazaraSignal(OnMaterialInvalidated, InstancedRenderable* /*instancedRenderable*/, std::size_t /*materialIndex*/, const std::shared_ptr<Material>& /*newMaterial*/);
|
||||
|
||||
protected:
|
||||
inline void UpdateAABB(Boxf aabb);
|
||||
|
||||
private:
|
||||
Boxf m_aabb;
|
||||
};
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
inline InstancedRenderable::InstancedRenderable(const Boxf& aabb) :
|
||||
m_aabb(aabb)
|
||||
inline InstancedRenderable::InstancedRenderable() :
|
||||
m_aabb(Boxf::Zero())
|
||||
{
|
||||
}
|
||||
|
||||
@@ -16,6 +16,12 @@ namespace Nz
|
||||
{
|
||||
return m_aabb;
|
||||
}
|
||||
|
||||
inline void InstancedRenderable::UpdateAABB(Boxf aabb)
|
||||
{
|
||||
OnAABBUpdate(this, aabb);
|
||||
m_aabb = aabb;
|
||||
}
|
||||
}
|
||||
|
||||
#include <Nazara/Graphics/DebugOff.hpp>
|
||||
|
||||
@@ -39,25 +39,36 @@ namespace Nz
|
||||
VertexStruct_XYZ_Color_UV* vertices = m_vertices.data();
|
||||
|
||||
Vector3f origin = Vector3f::Zero();
|
||||
Boxf aabb;
|
||||
|
||||
vertices->color = m_color * m_cornerColor[UnderlyingCast(RectCorner::LeftTop)];
|
||||
vertices->position = Vector3f(-origin);
|
||||
vertices->uv = m_textureCoords.GetCorner(RectCorner::LeftTop);
|
||||
vertices++;
|
||||
|
||||
aabb.Set(vertices->position);
|
||||
|
||||
vertices++;
|
||||
vertices->color = m_color * m_cornerColor[UnderlyingCast(RectCorner::RightTop)];
|
||||
vertices->position = m_size.x * Vector3f::Right() - origin;
|
||||
vertices->uv = m_textureCoords.GetCorner(RectCorner::RightTop);
|
||||
vertices++;
|
||||
|
||||
aabb.ExtendTo(vertices->position);
|
||||
|
||||
vertices++;
|
||||
vertices->color = m_color * m_cornerColor[UnderlyingCast(RectCorner::LeftBottom)];
|
||||
vertices->position = m_size.y * Vector3f::Down() - origin;
|
||||
vertices->uv = m_textureCoords.GetCorner(RectCorner::LeftBottom);
|
||||
vertices++;
|
||||
|
||||
aabb.ExtendTo(vertices->position);
|
||||
|
||||
vertices++;
|
||||
vertices->color = m_color * m_cornerColor[UnderlyingCast(RectCorner::RightBottom)];
|
||||
vertices->position = m_size.x * Vector3f::Right() + m_size.y * Vector3f::Down() - origin;
|
||||
vertices->uv = m_textureCoords.GetCorner(RectCorner::RightBottom);
|
||||
|
||||
aabb.ExtendTo(vertices->position);
|
||||
|
||||
UpdateAABB(aabb);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user