mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-05-31 20:52:53 +00:00
better rounding and s int overflow
This commit is contained in:
parent
5aef20e37e
commit
a24f9f5a5e
|
|
@ -334,14 +334,15 @@ __int64 ConsoleSchematicFile::applyBlocksAndData(LevelChunk *chunk, AABB *chunkB
|
|||
__int64 ConsoleSchematicFile::applyLighting(LevelChunk *chunk, AABB *chunkBox, AABB *destinationBox, ESchematicRotation rot)
|
||||
{
|
||||
int xStart = std::max(destinationBox->x0, (double)chunk->x*16);
|
||||
int xEnd = std::min(destinationBox->x1, (double)((xStart>>4)<<4) + 16);
|
||||
// 4jcraft changed >>4<<4 to & ~15
|
||||
int xEnd = std::min(destinationBox->x1, (double)(xStart & ~15) + 16);
|
||||
|
||||
int yStart = destinationBox->y0;
|
||||
int yEnd = destinationBox->y1;
|
||||
if(yEnd > Level::maxBuildHeight) yEnd = Level::maxBuildHeight;
|
||||
|
||||
int zStart = std::max(destinationBox->z0, (double)chunk->z*16);
|
||||
int zEnd = std::min(destinationBox->z1, (double)((zStart>>4)<<4) + 16);
|
||||
int zEnd = std::min(destinationBox->z1, (double)(zStart & ~15) + 16);
|
||||
|
||||
int rowBlocksIncluded = (yEnd-yStart)*(zEnd-zStart);
|
||||
int blocksIncluded = (xEnd-xStart)*rowBlocksIncluded;
|
||||
|
|
|
|||
|
|
@ -30,7 +30,8 @@ bool TickNextTickData::equals(const void *o) const
|
|||
|
||||
int TickNextTickData::hashCode() const
|
||||
{
|
||||
return (((x * 1024 * 1024) + (z * 1024) + y) * 256) + tileId;
|
||||
// 4jcraft added cast to unsigned
|
||||
return ((((unsigned) x * 1024 * 1024) + ((unsigned) z * 1024) + (unsigned) y) * 256) + tileId;
|
||||
}
|
||||
|
||||
TickNextTickData *TickNextTickData::delay(__int64 l)
|
||||
|
|
@ -66,4 +67,4 @@ int TickNextTickData::hash_fnct(const TickNextTickData &k)
|
|||
bool TickNextTickData::eq_test(const TickNextTickData &x, const TickNextTickData &y)
|
||||
{
|
||||
return ( x.x == y.x ) && ( x.y == y.y ) && ( x.z == y.z ) && ( x.tileId == y.tileId );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue