Initial commit
This commit is contained in:
42
Minecraft.Client/PSVita/PSVitaExtras/CustomSet.h
Normal file
42
Minecraft.Client/PSVita/PSVitaExtras/CustomSet.h
Normal file
@@ -0,0 +1,42 @@
|
||||
#ifndef CustomSet_H
|
||||
#define CustomSet_H
|
||||
// AP - This replaces the std::unordered_set used in Level.h
|
||||
// The problem with the original system is that it calls malloc for every insert it does. Not only is that expensive in itself but it also
|
||||
// clashes with any other mallocs on other threads (specifically the large amount of mallocing being done in MobSpawner for the std::unordered_map)
|
||||
// causing huge stalls.
|
||||
// This isn't really a univeral replacement for std::unordered_set and is quite specific to Level.h
|
||||
|
||||
#include "../../../Minecraft.World/ChunkPos.h"
|
||||
|
||||
typedef struct SCustomSetNode
|
||||
{
|
||||
unsigned int Hash;
|
||||
ChunkPos key;
|
||||
struct SCustomSetNode *Next;
|
||||
} SCustomSetNode;
|
||||
|
||||
class CustomSet
|
||||
{
|
||||
private:
|
||||
SCustomSetNode **m_NodePool;
|
||||
int m_NodePoolSize;
|
||||
int m_NodePoolIndex;
|
||||
|
||||
int m_HashSize;
|
||||
SCustomSetNode **m_HashTable;
|
||||
|
||||
public:
|
||||
CustomSet();
|
||||
~CustomSet();
|
||||
|
||||
void clear();
|
||||
SCustomSetNode* find(const ChunkPos &Key);
|
||||
int end();
|
||||
ChunkPos get(int index);
|
||||
void insert(const ChunkPos &Key);
|
||||
|
||||
private:
|
||||
void resize();
|
||||
};
|
||||
|
||||
#endif // CustomSet_H
|
||||
Reference in New Issue
Block a user