Graphics/DeferredRenderQueue: Replace listener by signals

Former-commit-id: b874409b523a1bfd6d9dd0d74c0f28189411bcca
This commit is contained in:
Lynix
2015-06-07 18:09:37 +02:00
parent c0c6179acc
commit 65c4409f9c
3 changed files with 42 additions and 128 deletions

View File

@@ -22,7 +22,7 @@
class NzForwardRenderQueue;
class NAZARA_API NzDeferredRenderQueue : public NzAbstractRenderQueue, NzObjectListener
class NAZARA_API NzDeferredRenderQueue : public NzAbstractRenderQueue
{
public:
NzDeferredRenderQueue(NzForwardRenderQueue* forwardQueue);
@@ -50,15 +50,10 @@ class NAZARA_API NzDeferredRenderQueue : public NzAbstractRenderQueue, NzObjectL
struct MeshInstanceEntry
{
MeshInstanceEntry(NzObjectListener* listener, int indexBufferValue, int vertexBufferValue) :
indexBufferListener(listener, indexBufferValue),
vertexBufferListener(listener, vertexBufferValue)
{
}
NazaraSlot(NzIndexBuffer, OnIndexBufferRelease, indexBufferReleaseSlot);
NazaraSlot(NzVertexBuffer, OnVertexBufferRelease, vertexBufferReleaseSlot);
std::vector<NzMatrix4f> instances;
NzIndexBufferConstListener indexBufferListener;
NzVertexBufferConstListener vertexBufferListener;
};
typedef std::map<NzMeshData, MeshInstanceEntry, MeshDataComparator> MeshInstanceContainer;
@@ -70,12 +65,8 @@ class NAZARA_API NzDeferredRenderQueue : public NzAbstractRenderQueue, NzObjectL
struct BatchedModelEntry
{
BatchedModelEntry(NzObjectListener* listener, int materialValue) :
materialListener(listener, materialValue)
{
}
NazaraSlot(NzMaterial, OnMaterialRelease, materialReleaseSlot);
NzMaterialConstListener materialListener;
MeshInstanceContainer meshMap;
bool enabled = false;
bool instancingEnabled = false;
@@ -86,9 +77,9 @@ class NAZARA_API NzDeferredRenderQueue : public NzAbstractRenderQueue, NzObjectL
ModelBatches opaqueModels;
NzForwardRenderQueue* m_forwardQueue;
private:
bool OnObjectDestroy(const NzRefCounted* object, int index) override;
void OnObjectReleased(const NzRefCounted* object, int index) override;
void OnIndexBufferInvalidation(const NzIndexBuffer* indexBuffer);
void OnMaterialInvalidation(const NzMaterial* material);
void OnVertexBufferInvalidation(const NzVertexBuffer* vertexBuffer);
};
#endif // NAZARA_DEFERREDRENDERQUEUE_HPP

View File

@@ -47,12 +47,6 @@ class NAZARA_API NzForwardRenderQueue : public NzAbstractRenderQueue
void Sort(const NzAbstractViewer* viewer);
private:
void OnIndexBufferInvalidation(const NzIndexBuffer* indexBuffer);
void OnMaterialInvalidation(const NzMaterial* material);
void OnTextureInvalidation(const NzTexture* texture);
void OnVertexBufferInvalidation(const NzVertexBuffer* vertexBuffer);
/// Billboards
struct BillboardData
{
@@ -156,6 +150,12 @@ class NAZARA_API NzForwardRenderQueue : public NzAbstractRenderQueue
TransparentModelContainer transparentModels;
std::vector<TransparentModelData> transparentModelData;
std::vector<const NzDrawable*> otherDrawables;
private:
void OnIndexBufferInvalidation(const NzIndexBuffer* indexBuffer);
void OnMaterialInvalidation(const NzMaterial* material);
void OnTextureInvalidation(const NzTexture* texture);
void OnVertexBufferInvalidation(const NzVertexBuffer* vertexBuffer);
};
#endif // NAZARA_FORWARDRENDERQUEUE_HPP