Added ResourceRef (Automatic resource reference)
Former-commit-id: 97a0b2732f4dc443b8e1676e68b33b1b53ddf4fb
This commit is contained in:
@@ -28,8 +28,6 @@ m_startIndex(startIndex)
|
||||
throw std::runtime_error("Constructor failed");
|
||||
}
|
||||
#endif
|
||||
|
||||
m_buffer->AddResourceReference();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +37,6 @@ m_indexCount(length),
|
||||
m_startIndex(0)
|
||||
{
|
||||
m_buffer = new NzBuffer(nzBufferType_Index, length, (largeIndices) ? 4 : 2, storage, usage);
|
||||
m_buffer->AddResourceReference();
|
||||
m_buffer->SetPersistent(false);
|
||||
}
|
||||
|
||||
@@ -57,23 +54,15 @@ m_startIndex(indexBuffer.m_startIndex)
|
||||
NzBuffer* buffer = indexBuffer.m_buffer;
|
||||
|
||||
m_buffer = new NzBuffer(nzBufferType_Index, buffer->GetLength(), buffer->GetSize(), buffer->GetStorage(), buffer->GetUsage());
|
||||
m_buffer->AddResourceReference();
|
||||
m_buffer->SetPersistent(false);
|
||||
m_buffer->CopyContent(*indexBuffer.m_buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_buffer = indexBuffer.m_buffer;
|
||||
m_buffer->AddResourceReference();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NzIndexBuffer::~NzIndexBuffer()
|
||||
{
|
||||
if (m_buffer)
|
||||
m_buffer->RemoveResourceReference();
|
||||
}
|
||||
NzIndexBuffer::~NzIndexBuffer() = default;
|
||||
|
||||
bool NzIndexBuffer::Fill(const void* data, unsigned int offset, unsigned int length)
|
||||
{
|
||||
|
||||
@@ -136,7 +136,7 @@ struct NzSkeletalMeshImpl
|
||||
std::vector<NzWeight> weights;
|
||||
NzCubef aabb;
|
||||
nzUInt8* bindPoseBuffer;
|
||||
const NzIndexBuffer* indexBuffer = nullptr;
|
||||
NzIndexBufferConstRef indexBuffer;
|
||||
unsigned int vertexCount;
|
||||
};
|
||||
|
||||
@@ -401,11 +401,5 @@ void NzSkeletalMesh::Skin(NzMeshVertex* outputBuffer, const NzSkeleton* skeleton
|
||||
|
||||
void NzSkeletalMesh::SetIndexBuffer(const NzIndexBuffer* indexBuffer)
|
||||
{
|
||||
if (m_impl->indexBuffer)
|
||||
m_impl->indexBuffer->RemoveResourceReference();
|
||||
|
||||
if (indexBuffer)
|
||||
indexBuffer->AddResourceReference();
|
||||
|
||||
m_impl->indexBuffer = indexBuffer;
|
||||
}
|
||||
|
||||
@@ -29,9 +29,6 @@ m_vertexCount(vertexCount)
|
||||
throw std::invalid_argument("Invalid vertex declaration");
|
||||
}
|
||||
#endif
|
||||
|
||||
m_buffer->AddResourceReference();
|
||||
m_vertexDeclaration->AddResourceReference();
|
||||
}
|
||||
|
||||
NzVertexBuffer::NzVertexBuffer(const NzVertexDeclaration* vertexDeclaration, unsigned int length, nzBufferStorage storage, nzBufferUsage usage) :
|
||||
@@ -49,9 +46,7 @@ m_vertexCount(length)
|
||||
#endif
|
||||
|
||||
m_buffer = new NzBuffer(nzBufferType_Vertex, length, vertexDeclaration->GetStride(nzElementStream_VertexData), storage, usage);
|
||||
m_buffer->AddResourceReference();
|
||||
m_buffer->SetPersistent(false);
|
||||
m_vertexDeclaration->AddResourceReference();
|
||||
}
|
||||
|
||||
NzVertexBuffer::NzVertexBuffer(const NzVertexBuffer& vertexBuffer) :
|
||||
@@ -66,24 +61,14 @@ m_vertexCount(vertexBuffer.m_vertexCount)
|
||||
NzBuffer* buffer = vertexBuffer.m_buffer;
|
||||
|
||||
m_buffer = new NzBuffer(nzBufferType_Vertex, buffer->GetLength(), buffer->GetSize(), buffer->GetStorage(), buffer->GetUsage());
|
||||
m_buffer->AddResourceReference();
|
||||
m_buffer->SetPersistent(false);
|
||||
m_buffer->CopyContent(*vertexBuffer.m_buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_buffer = vertexBuffer.m_buffer;
|
||||
m_buffer->AddResourceReference();
|
||||
}
|
||||
|
||||
m_vertexDeclaration->AddResourceReference();
|
||||
}
|
||||
|
||||
NzVertexBuffer::~NzVertexBuffer()
|
||||
{
|
||||
m_buffer->RemoveResourceReference();
|
||||
m_vertexDeclaration->RemoveResourceReference();
|
||||
}
|
||||
NzVertexBuffer::~NzVertexBuffer() = default;
|
||||
|
||||
bool NzVertexBuffer::Fill(const void* data, unsigned int offset, unsigned int length)
|
||||
{
|
||||
|
||||
@@ -52,7 +52,7 @@ namespace
|
||||
}
|
||||
|
||||
protected:
|
||||
NzSubMesh* m_subMesh;
|
||||
NzSubMeshRef m_subMesh;
|
||||
};
|
||||
|
||||
class SkeletalMeshVertexMapper : public SubMeshVertexMapper
|
||||
@@ -63,13 +63,10 @@ namespace
|
||||
m_mesh(subMesh)
|
||||
{
|
||||
m_vertices = reinterpret_cast<NzMeshVertex*>(m_mesh->GetBindPoseBuffer());
|
||||
|
||||
m_mesh->AddResourceReference();
|
||||
}
|
||||
|
||||
virtual ~SkeletalMeshVertexMapper() noexcept
|
||||
{
|
||||
m_mesh->RemoveResourceReference();
|
||||
}
|
||||
|
||||
NzVector3f GetNormal(unsigned int i) const
|
||||
|
||||
Reference in New Issue
Block a user