Made FAST_FLOOR_DIV work correctly, replaced all floorf() divisions with it.
Still not perfect - chunk and region calculations can be made into a single CPU instruction - SAR - but not all compilers are known to support that (">>" operator on signed datatypes needs to perform arithmetic shift, C/C++ standard makes it implementation-specific; MSVC and GCC do what we need, LLVM unknown)
git-svn-id: http://mc-server.googlecode.com/svn/trunk@1224 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
@@ -87,8 +87,8 @@ cChunkMap::cChunkLayer * cChunkMap::GetLayer(int a_LayerX, int a_LayerZ)
|
||||
|
||||
cChunkMap::cChunkLayer * cChunkMap::FindLayerForChunk(int a_ChunkX, int a_ChunkZ)
|
||||
{
|
||||
const int LayerX = (int)(floorf((float)a_ChunkX / (float)(LAYER_SIZE)));
|
||||
const int LayerZ = (int)(floorf((float)a_ChunkZ / (float)(LAYER_SIZE)));
|
||||
const int LayerX = FAST_FLOOR_DIV(a_ChunkX, LAYER_SIZE);
|
||||
const int LayerZ = FAST_FLOOR_DIV(a_ChunkZ, LAYER_SIZE);
|
||||
return FindLayer(LayerX, LayerZ);
|
||||
}
|
||||
|
||||
@@ -118,9 +118,9 @@ cChunkMap::cChunkLayer * cChunkMap::FindLayer(int a_LayerX, int a_LayerZ)
|
||||
|
||||
cChunkMap::cChunkLayer * cChunkMap::GetLayerForChunk(int a_ChunkX, int a_ChunkZ)
|
||||
{
|
||||
const int LayerX = (int)(floorf((float)a_ChunkX / (float)(LAYER_SIZE)));
|
||||
const int LayerZ = (int)(floorf((float)a_ChunkZ / (float)(LAYER_SIZE)));
|
||||
return GetLayer( LayerX, LayerZ );
|
||||
const int LayerX = FAST_FLOOR_DIV(a_ChunkX, LAYER_SIZE);
|
||||
const int LayerZ = FAST_FLOOR_DIV(a_ChunkX, LAYER_SIZE);
|
||||
return GetLayer(LayerX, LayerZ);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user