mirror of
https://github.com/minetest/irrlicht.git
synced 2025-07-01 15:50:27 +02:00
Replace HWBufferMap with a list and back pointers (#99)
This commit is contained in:
@ -21,6 +21,7 @@
|
||||
#include "SVertexIndex.h"
|
||||
#include "SLight.h"
|
||||
#include "SExposedVideoData.h"
|
||||
#include <list>
|
||||
|
||||
namespace irr
|
||||
{
|
||||
@ -388,25 +389,29 @@ namespace video
|
||||
{
|
||||
SHWBufferLink(const scene::IMeshBuffer *_MeshBuffer)
|
||||
:MeshBuffer(_MeshBuffer),
|
||||
ChangedID_Vertex(0),ChangedID_Index(0),LastUsed(0),
|
||||
ChangedID_Vertex(0),ChangedID_Index(0),
|
||||
Mapped_Vertex(scene::EHM_NEVER),Mapped_Index(scene::EHM_NEVER)
|
||||
{
|
||||
if (MeshBuffer)
|
||||
if (MeshBuffer) {
|
||||
MeshBuffer->grab();
|
||||
MeshBuffer->setHWBuffer(reinterpret_cast<void*>(this));
|
||||
}
|
||||
}
|
||||
|
||||
virtual ~SHWBufferLink()
|
||||
{
|
||||
if (MeshBuffer)
|
||||
if (MeshBuffer) {
|
||||
MeshBuffer->setHWBuffer(NULL);
|
||||
MeshBuffer->drop();
|
||||
}
|
||||
}
|
||||
|
||||
const scene::IMeshBuffer *MeshBuffer;
|
||||
u32 ChangedID_Vertex;
|
||||
u32 ChangedID_Index;
|
||||
u32 LastUsed;
|
||||
scene::E_HARDWARE_MAPPING Mapped_Vertex;
|
||||
scene::E_HARDWARE_MAPPING Mapped_Index;
|
||||
std::list<SHWBufferLink*>::iterator listPosition;
|
||||
};
|
||||
|
||||
//! Gets hardware buffer link from a meshbuffer (may create or update buffer)
|
||||
@ -818,8 +823,7 @@ namespace video
|
||||
core::array<SLight> Lights;
|
||||
core::array<SMaterialRenderer> MaterialRenderers;
|
||||
|
||||
//core::array<SHWBufferLink*> HWBufferLinks;
|
||||
core::map< const scene::IMeshBuffer* , SHWBufferLink* > HWBufferMap;
|
||||
std::list<SHWBufferLink*> HWBufferList;
|
||||
|
||||
io::IFileSystem* FileSystem;
|
||||
|
||||
|
Reference in New Issue
Block a user