|
@@ -37,7 +37,6 @@ void Dimension::getAddrOf( Punkt cPos, char* addr ) const
|
|
|
{
|
|
|
*(int*)addr = cPos.x;
|
|
|
*((int*)addr + 1) = cPos.y;
|
|
|
- addr[ 8 ] = 0;
|
|
|
}
|
|
|
|
|
|
void Dimension::getAddrOfWorld( Punkt wPos, char* addr ) const
|
|
@@ -52,9 +51,9 @@ void Dimension::getAddrOfWorld( Punkt wPos, char* addr ) const
|
|
|
|
|
|
Chunk* Dimension::zChunk( Punkt wPos ) const
|
|
|
{
|
|
|
- char addr[ 9 ];
|
|
|
+ char addr[ 8 ];
|
|
|
getAddrOfWorld( wPos, addr );
|
|
|
- return chunks->z( addr, 9 );
|
|
|
+ return chunks->z( addr, 8 );
|
|
|
}
|
|
|
|
|
|
Framework::Either<Block*, int> Dimension::zBlock( Vec3<int> location )
|
|
@@ -80,43 +79,38 @@ void Dimension::addEntity( Entity* entity )
|
|
|
|
|
|
void Dimension::addChunk( Chunk* chunk )
|
|
|
{
|
|
|
- char addr[ 9 ];
|
|
|
+ char addr[ 8 ];
|
|
|
getAddrOfWorld( chunk->getCenter(), addr );
|
|
|
- if( !chunks->z( addr, 9 ) )
|
|
|
+ chunks->set( addr, 8, chunk );
|
|
|
+ chunkList.add( chunk );
|
|
|
+ getAddrOfWorld( chunk->getCenter() + Punkt( CHUNK_SIZE, 0 ), addr );
|
|
|
+ Chunk* zChunk = chunks->z( addr, 8 );
|
|
|
+ if( zChunk )
|
|
|
{
|
|
|
- chunks->set( addr, 9, chunk );
|
|
|
- chunkList.add( chunk );
|
|
|
- getAddrOfWorld( chunk->getCenter() + Punkt( CHUNK_SIZE, 0 ), addr );
|
|
|
- Chunk* zChunk = chunks->z( addr, 9 );
|
|
|
- if( zChunk )
|
|
|
- {
|
|
|
- zChunk->setNeighbor( WEST, chunk );
|
|
|
- chunk->setNeighbor( EAST, chunk );
|
|
|
- }
|
|
|
- getAddrOfWorld( chunk->getCenter() + Punkt( -CHUNK_SIZE, 0 ), addr );
|
|
|
- zChunk = chunks->z( addr, 9 );
|
|
|
- if( zChunk )
|
|
|
- {
|
|
|
- zChunk->setNeighbor( EAST, chunk );
|
|
|
- chunk->setNeighbor( WEST, chunk );
|
|
|
- }
|
|
|
- getAddrOfWorld( chunk->getCenter() + Punkt( 0, CHUNK_SIZE ), addr );
|
|
|
- zChunk = chunks->z( addr, 9 );
|
|
|
- if( zChunk )
|
|
|
- {
|
|
|
- zChunk->setNeighbor( NORTH, chunk );
|
|
|
- chunk->setNeighbor( SOUTH, chunk );
|
|
|
- }
|
|
|
- getAddrOfWorld( chunk->getCenter() + Punkt( 0, -CHUNK_SIZE ), addr );
|
|
|
- zChunk = chunks->z( addr, 9 );
|
|
|
- if( zChunk )
|
|
|
- {
|
|
|
- zChunk->setNeighbor( SOUTH, chunk );
|
|
|
- chunk->setNeighbor( NORTH, chunk );
|
|
|
- }
|
|
|
+ zChunk->setNeighbor( WEST, chunk );
|
|
|
+ chunk->setNeighbor( EAST, chunk );
|
|
|
+ }
|
|
|
+ getAddrOfWorld( chunk->getCenter() + Punkt( -CHUNK_SIZE, 0 ), addr );
|
|
|
+ zChunk = chunks->z( addr, 8 );
|
|
|
+ if( zChunk )
|
|
|
+ {
|
|
|
+ zChunk->setNeighbor( EAST, chunk );
|
|
|
+ chunk->setNeighbor( WEST, chunk );
|
|
|
+ }
|
|
|
+ getAddrOfWorld( chunk->getCenter() + Punkt( 0, CHUNK_SIZE ), addr );
|
|
|
+ zChunk = chunks->z( addr, 8 );
|
|
|
+ if( zChunk )
|
|
|
+ {
|
|
|
+ zChunk->setNeighbor( NORTH, chunk );
|
|
|
+ chunk->setNeighbor( SOUTH, chunk );
|
|
|
+ }
|
|
|
+ getAddrOfWorld( chunk->getCenter() + Punkt( 0, -CHUNK_SIZE ), addr );
|
|
|
+ zChunk = chunks->z( addr, 8 );
|
|
|
+ if( zChunk )
|
|
|
+ {
|
|
|
+ zChunk->setNeighbor( SOUTH, chunk );
|
|
|
+ chunk->setNeighbor( NORTH, chunk );
|
|
|
}
|
|
|
- else
|
|
|
- chunk->release();
|
|
|
}
|
|
|
|
|
|
int Dimension::getDimensionId() const
|