forked from Mirrorlandia_minetest/irrlicht
Remove irrMap and use std::map instead
This commit is contained in:
parent
51ae495c4a
commit
00a7741cd4
1082
include/irrMap.h
1082
include/irrMap.h
File diff suppressed because it is too large
Load Diff
@ -113,7 +113,6 @@
|
|||||||
#include "IRenderTarget.h"
|
#include "IRenderTarget.h"
|
||||||
#include "IrrlichtDevice.h"
|
#include "IrrlichtDevice.h"
|
||||||
#include "irrList.h"
|
#include "irrList.h"
|
||||||
#include "irrMap.h"
|
|
||||||
#include "irrMath.h"
|
#include "irrMath.h"
|
||||||
#include "irrString.h"
|
#include "irrString.h"
|
||||||
#include "irrTypes.h"
|
#include "irrTypes.h"
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
#include "IMeshBuffer.h"
|
#include "IMeshBuffer.h"
|
||||||
#include "IWriteFile.h"
|
#include "IWriteFile.h"
|
||||||
#include "ITexture.h"
|
#include "ITexture.h"
|
||||||
#include "irrMap.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace irr
|
namespace irr
|
||||||
@ -60,7 +59,7 @@ bool CB3DMeshWriter::writeMesh(io::IWriteFile* file, IMesh* const mesh, s32 flag
|
|||||||
|
|
||||||
const u32 numMeshBuffers = mesh->getMeshBufferCount();
|
const u32 numMeshBuffers = mesh->getMeshBufferCount();
|
||||||
array<SB3dTexture> texs;
|
array<SB3dTexture> texs;
|
||||||
map<ITexture *, u32> tex2id; // TODO: texture pointer as key not sufficient as same texture can have several id's
|
std::map<ITexture *, u32> tex2id; // TODO: texture pointer as key not sufficient as same texture can have several id's
|
||||||
u32 texsizes = 0;
|
u32 texsizes = 0;
|
||||||
for (u32 i = 0; i < numMeshBuffers; i++)
|
for (u32 i = 0; i < numMeshBuffers; i++)
|
||||||
{
|
{
|
||||||
|
@ -165,7 +165,7 @@ bool CGUIFont::load(io::IXMLReader* xml, const io::path& directory)
|
|||||||
}
|
}
|
||||||
rectangle.LowerRightCorner.Y = val;
|
rectangle.LowerRightCorner.Y = val;
|
||||||
|
|
||||||
CharacterMap.insert(ch,Areas.size());
|
CharacterMap.emplace(ch, Areas.size());
|
||||||
|
|
||||||
// make frame
|
// make frame
|
||||||
f.rectNumber = SpriteBank->getPositions().size();
|
f.rectNumber = SpriteBank->getPositions().size();
|
||||||
@ -374,7 +374,7 @@ void CGUIFont::readPositions(video::IImage* image, s32& lowerRightPositions)
|
|||||||
Areas.push_back(a);
|
Areas.push_back(a);
|
||||||
// map letter to character
|
// map letter to character
|
||||||
wchar_t ch = (wchar_t)(lowerRightPositions + 32);
|
wchar_t ch = (wchar_t)(lowerRightPositions + 32);
|
||||||
CharacterMap.set(ch, lowerRightPositions);
|
CharacterMap[ch] = lowerRightPositions;
|
||||||
|
|
||||||
++lowerRightPositions;
|
++lowerRightPositions;
|
||||||
}
|
}
|
||||||
@ -435,9 +435,9 @@ u32 CGUIFont::getSpriteNoFromChar(const wchar_t *c) const
|
|||||||
|
|
||||||
s32 CGUIFont::getAreaFromCharacter(const wchar_t c) const
|
s32 CGUIFont::getAreaFromCharacter(const wchar_t c) const
|
||||||
{
|
{
|
||||||
core::map<wchar_t, s32>::Node* n = CharacterMap.find(c);
|
auto n = CharacterMap.find(c);
|
||||||
if (n)
|
if (n != CharacterMap.end())
|
||||||
return n->getValue();
|
return n->second;
|
||||||
else
|
else
|
||||||
return WrongCharacter;
|
return WrongCharacter;
|
||||||
}
|
}
|
||||||
|
@ -10,9 +10,9 @@
|
|||||||
|
|
||||||
#include "IGUIFontBitmap.h"
|
#include "IGUIFontBitmap.h"
|
||||||
#include "irrString.h"
|
#include "irrString.h"
|
||||||
#include "irrMap.h"
|
|
||||||
#include "IReadFile.h"
|
#include "IReadFile.h"
|
||||||
#include "irrArray.h"
|
#include "irrArray.h"
|
||||||
|
#include <map>
|
||||||
|
|
||||||
namespace irr
|
namespace irr
|
||||||
{
|
{
|
||||||
@ -97,7 +97,7 @@ private:
|
|||||||
void popTextureCreationFlags(const bool(&flags)[3]);
|
void popTextureCreationFlags(const bool(&flags)[3]);
|
||||||
|
|
||||||
core::array<SFontArea> Areas;
|
core::array<SFontArea> Areas;
|
||||||
core::map<wchar_t, s32> CharacterMap;
|
std::map<wchar_t, s32> CharacterMap;
|
||||||
video::IVideoDriver* Driver;
|
video::IVideoDriver* Driver;
|
||||||
IGUISpriteBank* SpriteBank;
|
IGUISpriteBank* SpriteBank;
|
||||||
IGUIEnvironment* Environment;
|
IGUIEnvironment* Environment;
|
||||||
|
@ -8,8 +8,8 @@
|
|||||||
#include "CMeshBuffer.h"
|
#include "CMeshBuffer.h"
|
||||||
#include "SAnimatedMesh.h"
|
#include "SAnimatedMesh.h"
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
#include "irrMap.h"
|
|
||||||
#include "triangle3d.h"
|
#include "triangle3d.h"
|
||||||
|
#include <map>
|
||||||
|
|
||||||
namespace irr
|
namespace irr
|
||||||
{
|
{
|
||||||
@ -1789,8 +1789,8 @@ IMesh* CMeshManipulator::createForsythOptimizedMesh(const IMesh *mesh) const
|
|||||||
buf->Vertices.reallocate(vcount);
|
buf->Vertices.reallocate(vcount);
|
||||||
buf->Indices.reallocate(icount);
|
buf->Indices.reallocate(icount);
|
||||||
|
|
||||||
core::map<const video::S3DVertex, const u16> sind; // search index for fast operation
|
std::map<const video::S3DVertex, const u16> sind; // search index for fast operation
|
||||||
typedef core::map<const video::S3DVertex, const u16>::Node snode;
|
typedef std::map<const video::S3DVertex, const u16>::iterator snode;
|
||||||
|
|
||||||
// Main algorithm
|
// Main algorithm
|
||||||
u32 highest = 0;
|
u32 highest = 0;
|
||||||
@ -1820,45 +1820,45 @@ IMesh* CMeshManipulator::createForsythOptimizedMesh(const IMesh *mesh) const
|
|||||||
// Output the best triangle
|
// Output the best triangle
|
||||||
u16 newind = buf->Vertices.size();
|
u16 newind = buf->Vertices.size();
|
||||||
|
|
||||||
snode *s = sind.find(v[tc[highest].ind[0]]);
|
snode s = sind.find(v[tc[highest].ind[0]]);
|
||||||
|
|
||||||
if (!s)
|
if (s == sind.end())
|
||||||
{
|
{
|
||||||
buf->Vertices.push_back(v[tc[highest].ind[0]]);
|
buf->Vertices.push_back(v[tc[highest].ind[0]]);
|
||||||
buf->Indices.push_back(newind);
|
buf->Indices.push_back(newind);
|
||||||
sind.insert(v[tc[highest].ind[0]], newind);
|
sind.emplace(v[tc[highest].ind[0]], newind);
|
||||||
newind++;
|
newind++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
buf->Indices.push_back(s->getValue());
|
buf->Indices.push_back(s->second);
|
||||||
}
|
}
|
||||||
|
|
||||||
s = sind.find(v[tc[highest].ind[1]]);
|
s = sind.find(v[tc[highest].ind[1]]);
|
||||||
|
|
||||||
if (!s)
|
if (s == sind.end())
|
||||||
{
|
{
|
||||||
buf->Vertices.push_back(v[tc[highest].ind[1]]);
|
buf->Vertices.push_back(v[tc[highest].ind[1]]);
|
||||||
buf->Indices.push_back(newind);
|
buf->Indices.push_back(newind);
|
||||||
sind.insert(v[tc[highest].ind[1]], newind);
|
sind.emplace(v[tc[highest].ind[1]], newind);
|
||||||
newind++;
|
newind++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
buf->Indices.push_back(s->getValue());
|
buf->Indices.push_back(s->second);
|
||||||
}
|
}
|
||||||
|
|
||||||
s = sind.find(v[tc[highest].ind[2]]);
|
s = sind.find(v[tc[highest].ind[2]]);
|
||||||
|
|
||||||
if (!s)
|
if (s == sind.end())
|
||||||
{
|
{
|
||||||
buf->Vertices.push_back(v[tc[highest].ind[2]]);
|
buf->Vertices.push_back(v[tc[highest].ind[2]]);
|
||||||
buf->Indices.push_back(newind);
|
buf->Indices.push_back(newind);
|
||||||
sind.insert(v[tc[highest].ind[2]], newind);
|
sind.emplace(v[tc[highest].ind[2]], newind);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
buf->Indices.push_back(s->getValue());
|
buf->Indices.push_back(s->second);
|
||||||
}
|
}
|
||||||
|
|
||||||
vc[tc[highest].ind[0]].NumActiveTris--;
|
vc[tc[highest].ind[0]].NumActiveTris--;
|
||||||
@ -1901,8 +1901,8 @@ IMesh* CMeshManipulator::createForsythOptimizedMesh(const IMesh *mesh) const
|
|||||||
buf->Vertices.reallocate(vcount);
|
buf->Vertices.reallocate(vcount);
|
||||||
buf->Indices.reallocate(icount);
|
buf->Indices.reallocate(icount);
|
||||||
|
|
||||||
core::map<const video::S3DVertex2TCoords, const u16> sind; // search index for fast operation
|
std::map<const video::S3DVertex2TCoords, const u16> sind; // search index for fast operation
|
||||||
typedef core::map<const video::S3DVertex2TCoords, const u16>::Node snode;
|
typedef std::map<const video::S3DVertex2TCoords, const u16>::iterator snode;
|
||||||
|
|
||||||
// Main algorithm
|
// Main algorithm
|
||||||
u32 highest = 0;
|
u32 highest = 0;
|
||||||
@ -1932,45 +1932,45 @@ IMesh* CMeshManipulator::createForsythOptimizedMesh(const IMesh *mesh) const
|
|||||||
// Output the best triangle
|
// Output the best triangle
|
||||||
u16 newind = buf->Vertices.size();
|
u16 newind = buf->Vertices.size();
|
||||||
|
|
||||||
snode *s = sind.find(v[tc[highest].ind[0]]);
|
snode s = sind.find(v[tc[highest].ind[0]]);
|
||||||
|
|
||||||
if (!s)
|
if (s == sind.end())
|
||||||
{
|
{
|
||||||
buf->Vertices.push_back(v[tc[highest].ind[0]]);
|
buf->Vertices.push_back(v[tc[highest].ind[0]]);
|
||||||
buf->Indices.push_back(newind);
|
buf->Indices.push_back(newind);
|
||||||
sind.insert(v[tc[highest].ind[0]], newind);
|
sind.emplace(v[tc[highest].ind[0]], newind);
|
||||||
newind++;
|
newind++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
buf->Indices.push_back(s->getValue());
|
buf->Indices.push_back(s->second);
|
||||||
}
|
}
|
||||||
|
|
||||||
s = sind.find(v[tc[highest].ind[1]]);
|
s = sind.find(v[tc[highest].ind[1]]);
|
||||||
|
|
||||||
if (!s)
|
if (s == sind.end())
|
||||||
{
|
{
|
||||||
buf->Vertices.push_back(v[tc[highest].ind[1]]);
|
buf->Vertices.push_back(v[tc[highest].ind[1]]);
|
||||||
buf->Indices.push_back(newind);
|
buf->Indices.push_back(newind);
|
||||||
sind.insert(v[tc[highest].ind[1]], newind);
|
sind.emplace(v[tc[highest].ind[1]], newind);
|
||||||
newind++;
|
newind++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
buf->Indices.push_back(s->getValue());
|
buf->Indices.push_back(s->second);
|
||||||
}
|
}
|
||||||
|
|
||||||
s = sind.find(v[tc[highest].ind[2]]);
|
s = sind.find(v[tc[highest].ind[2]]);
|
||||||
|
|
||||||
if (!s)
|
if (s == sind.end())
|
||||||
{
|
{
|
||||||
buf->Vertices.push_back(v[tc[highest].ind[2]]);
|
buf->Vertices.push_back(v[tc[highest].ind[2]]);
|
||||||
buf->Indices.push_back(newind);
|
buf->Indices.push_back(newind);
|
||||||
sind.insert(v[tc[highest].ind[2]], newind);
|
sind.emplace(v[tc[highest].ind[2]], newind);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
buf->Indices.push_back(s->getValue());
|
buf->Indices.push_back(s->second);
|
||||||
}
|
}
|
||||||
|
|
||||||
vc[tc[highest].ind[0]].NumActiveTris--;
|
vc[tc[highest].ind[0]].NumActiveTris--;
|
||||||
@ -2014,8 +2014,8 @@ IMesh* CMeshManipulator::createForsythOptimizedMesh(const IMesh *mesh) const
|
|||||||
buf->Vertices.reallocate(vcount);
|
buf->Vertices.reallocate(vcount);
|
||||||
buf->Indices.reallocate(icount);
|
buf->Indices.reallocate(icount);
|
||||||
|
|
||||||
core::map<const video::S3DVertexTangents, const u16> sind; // search index for fast operation
|
std::map<const video::S3DVertexTangents, const u16> sind; // search index for fast operation
|
||||||
typedef core::map<const video::S3DVertexTangents, const u16>::Node snode;
|
typedef std::map<const video::S3DVertexTangents, const u16>::iterator snode;
|
||||||
|
|
||||||
// Main algorithm
|
// Main algorithm
|
||||||
u32 highest = 0;
|
u32 highest = 0;
|
||||||
@ -2045,45 +2045,45 @@ IMesh* CMeshManipulator::createForsythOptimizedMesh(const IMesh *mesh) const
|
|||||||
// Output the best triangle
|
// Output the best triangle
|
||||||
u16 newind = buf->Vertices.size();
|
u16 newind = buf->Vertices.size();
|
||||||
|
|
||||||
snode *s = sind.find(v[tc[highest].ind[0]]);
|
snode s = sind.find(v[tc[highest].ind[0]]);
|
||||||
|
|
||||||
if (!s)
|
if (s == sind.end())
|
||||||
{
|
{
|
||||||
buf->Vertices.push_back(v[tc[highest].ind[0]]);
|
buf->Vertices.push_back(v[tc[highest].ind[0]]);
|
||||||
buf->Indices.push_back(newind);
|
buf->Indices.push_back(newind);
|
||||||
sind.insert(v[tc[highest].ind[0]], newind);
|
sind.emplace(v[tc[highest].ind[0]], newind);
|
||||||
newind++;
|
newind++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
buf->Indices.push_back(s->getValue());
|
buf->Indices.push_back(s->second);
|
||||||
}
|
}
|
||||||
|
|
||||||
s = sind.find(v[tc[highest].ind[1]]);
|
s = sind.find(v[tc[highest].ind[1]]);
|
||||||
|
|
||||||
if (!s)
|
if (s == sind.end())
|
||||||
{
|
{
|
||||||
buf->Vertices.push_back(v[tc[highest].ind[1]]);
|
buf->Vertices.push_back(v[tc[highest].ind[1]]);
|
||||||
buf->Indices.push_back(newind);
|
buf->Indices.push_back(newind);
|
||||||
sind.insert(v[tc[highest].ind[1]], newind);
|
sind.emplace(v[tc[highest].ind[1]], newind);
|
||||||
newind++;
|
newind++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
buf->Indices.push_back(s->getValue());
|
buf->Indices.push_back(s->second);
|
||||||
}
|
}
|
||||||
|
|
||||||
s = sind.find(v[tc[highest].ind[2]]);
|
s = sind.find(v[tc[highest].ind[2]]);
|
||||||
|
|
||||||
if (!s)
|
if (s == sind.end())
|
||||||
{
|
{
|
||||||
buf->Vertices.push_back(v[tc[highest].ind[2]]);
|
buf->Vertices.push_back(v[tc[highest].ind[2]]);
|
||||||
buf->Indices.push_back(newind);
|
buf->Indices.push_back(newind);
|
||||||
sind.insert(v[tc[highest].ind[2]], newind);
|
sind.emplace(v[tc[highest].ind[2]], newind);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
buf->Indices.push_back(s->getValue());
|
buf->Indices.push_back(s->second);
|
||||||
}
|
}
|
||||||
|
|
||||||
vc[tc[highest].ind[0]].NumActiveTris--;
|
vc[tc[highest].ind[0]].NumActiveTris--;
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
#include "IGPUProgrammingServices.h"
|
#include "IGPUProgrammingServices.h"
|
||||||
#include "irrArray.h"
|
#include "irrArray.h"
|
||||||
#include "irrString.h"
|
#include "irrString.h"
|
||||||
#include "irrMap.h"
|
|
||||||
#include "IAttributes.h"
|
#include "IAttributes.h"
|
||||||
#include "IMesh.h"
|
#include "IMesh.h"
|
||||||
#include "IMeshBuffer.h"
|
#include "IMeshBuffer.h"
|
||||||
|
@ -250,16 +250,16 @@ IAnimatedMesh* COBJMeshFileLoader::createMesh(io::IReadFile* file)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int vertLocation;
|
int vertLocation;
|
||||||
core::map<video::S3DVertex, int>::Node* n = currMtl->VertMap.find(v);
|
auto n = currMtl->VertMap.find(v);
|
||||||
if (n)
|
if (n != currMtl->VertMap.end())
|
||||||
{
|
{
|
||||||
vertLocation = n->getValue();
|
vertLocation = n->second;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
currMtl->Meshbuffer->Vertices.push_back(v);
|
currMtl->Meshbuffer->Vertices.push_back(v);
|
||||||
vertLocation = currMtl->Meshbuffer->Vertices.size() -1;
|
vertLocation = currMtl->Meshbuffer->Vertices.size() -1;
|
||||||
currMtl->VertMap.insert(v, vertLocation);
|
currMtl->VertMap.emplace(v, vertLocation);
|
||||||
}
|
}
|
||||||
|
|
||||||
faceCorners.push_back(vertLocation);
|
faceCorners.push_back(vertLocation);
|
||||||
|
@ -5,12 +5,12 @@
|
|||||||
#ifndef __C_OBJ_MESH_FILE_LOADER_H_INCLUDED__
|
#ifndef __C_OBJ_MESH_FILE_LOADER_H_INCLUDED__
|
||||||
#define __C_OBJ_MESH_FILE_LOADER_H_INCLUDED__
|
#define __C_OBJ_MESH_FILE_LOADER_H_INCLUDED__
|
||||||
|
|
||||||
|
#include <map>
|
||||||
#include "IMeshLoader.h"
|
#include "IMeshLoader.h"
|
||||||
#include "IFileSystem.h"
|
#include "IFileSystem.h"
|
||||||
#include "ISceneManager.h"
|
#include "ISceneManager.h"
|
||||||
#include "irrString.h"
|
#include "irrString.h"
|
||||||
#include "SMeshBuffer.h"
|
#include "SMeshBuffer.h"
|
||||||
#include "irrMap.h"
|
|
||||||
|
|
||||||
namespace irr
|
namespace irr
|
||||||
{
|
{
|
||||||
@ -61,7 +61,7 @@ private:
|
|||||||
Meshbuffer->Material = o.Meshbuffer->Material;
|
Meshbuffer->Material = o.Meshbuffer->Material;
|
||||||
}
|
}
|
||||||
|
|
||||||
core::map<video::S3DVertex, int> VertMap;
|
std::map<video::S3DVertex, int> VertMap;
|
||||||
scene::SMeshBuffer *Meshbuffer;
|
scene::SMeshBuffer *Meshbuffer;
|
||||||
core::stringc Name;
|
core::stringc Name;
|
||||||
core::stringc Group;
|
core::stringc Group;
|
||||||
|
Loading…
Reference in New Issue
Block a user