Remove unused block tick related cChunk functions
This commit is contained in:
parent
225c2fa9f6
commit
71ffa76847
@ -1159,23 +1159,6 @@ bool cChunk::UnboundedRelFastSetBlock(Vector3i a_RelPos, BLOCKTYPE a_BlockType,
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cChunk::UnboundedQueueTickBlock(Vector3i a_RelPos)
|
|
||||||
{
|
|
||||||
if (!cChunkDef::IsValidHeight(a_RelPos.y))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
auto chunk = GetRelNeighborChunkAdjustCoords(a_RelPos);
|
|
||||||
if ((chunk != nullptr) && chunk->IsValid())
|
|
||||||
{
|
|
||||||
chunk->QueueTickBlock(a_RelPos);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int cChunk::GetHeight(int a_X, int a_Z)
|
int cChunk::GetHeight(int a_X, int a_Z)
|
||||||
{
|
{
|
||||||
ASSERT((a_X >= 0) && (a_X < Width) && (a_Z >= 0) && (a_Z < Width));
|
ASSERT((a_X >= 0) && (a_X < Width) && (a_Z >= 0) && (a_Z < Width));
|
||||||
@ -1283,10 +1266,8 @@ void cChunk::SetBlock(Vector3i a_RelPos, BLOCKTYPE a_BlockType, NIBBLETYPE a_Blo
|
|||||||
FastSetBlock(a_RelPos, a_BlockType, a_BlockMeta);
|
FastSetBlock(a_RelPos, a_BlockType, a_BlockMeta);
|
||||||
|
|
||||||
// Tick this block and its neighbors:
|
// Tick this block and its neighbors:
|
||||||
m_ToTickBlocks.push_back(a_RelPos);
|
|
||||||
QueueTickBlockNeighbors(a_RelPos);
|
QueueTickBlockNeighbors(a_RelPos);
|
||||||
|
|
||||||
// TODO: use relative coordinates, cChunk reference
|
|
||||||
// Wake up the simulators for this block:
|
// Wake up the simulators for this block:
|
||||||
GetWorld()->GetSimulatorManager()->WakeUp(*this, a_RelPos);
|
GetWorld()->GetSimulatorManager()->WakeUp(*this, a_RelPos);
|
||||||
|
|
||||||
@ -1332,38 +1313,26 @@ void cChunk::SetBlock(Vector3i a_RelPos, BLOCKTYPE a_BlockType, NIBBLETYPE a_Blo
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cChunk::QueueTickBlock(Vector3i a_RelPos)
|
void cChunk::QueueTickBlockNeighbors(Vector3i a_Position)
|
||||||
{
|
{
|
||||||
ASSERT(IsValidRelPos(a_RelPos));
|
m_ToTickBlocks.push(a_Position);
|
||||||
|
|
||||||
if (!IsValid())
|
for (const auto & Offset : cSimulator::AdjacentOffsets)
|
||||||
{
|
{
|
||||||
return;
|
auto Relative = a_Position + Offset;
|
||||||
}
|
|
||||||
|
|
||||||
m_ToTickBlocks.push_back(a_RelPos);
|
if (!cChunkDef::IsValidHeight(Relative.y))
|
||||||
}
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto Chunk = GetRelNeighborChunkAdjustCoords(Relative);
|
||||||
|
if ((Chunk == nullptr) || !Chunk->IsValid())
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Chunk->m_ToTickBlocks.push(Relative);
|
||||||
|
|
||||||
|
|
||||||
void cChunk::QueueTickBlockNeighbors(Vector3i a_RelPos)
|
|
||||||
{
|
|
||||||
// Contains our direct adjacents
|
|
||||||
static const Vector3i Offsets[] =
|
|
||||||
{
|
|
||||||
{ 1, 0, 0 },
|
|
||||||
{ -1, 0, 0 },
|
|
||||||
{ 0, 1, 0 },
|
|
||||||
{ 0, -1, 0 },
|
|
||||||
{ 0, 0, 1 },
|
|
||||||
{ 0, 0, -1 },
|
|
||||||
};
|
|
||||||
|
|
||||||
for (const auto & Offset : Offsets)
|
|
||||||
{
|
|
||||||
UnboundedQueueTickBlock(a_RelPos + Offset);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
19
src/Chunk.h
19
src/Chunk.h
@ -158,18 +158,9 @@ public:
|
|||||||
void SetBlock(Vector3i a_RelBlockPos, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta);
|
void SetBlock(Vector3i a_RelBlockPos, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta);
|
||||||
// SetBlock() does a lot of work (heightmap, tickblocks, blockentities) so a BlockIdx version doesn't make sense
|
// SetBlock() does a lot of work (heightmap, tickblocks, blockentities) so a BlockIdx version doesn't make sense
|
||||||
|
|
||||||
/** Queues block for ticking (m_ToTickQueue) */
|
/** Queues the position itself, and all 6 neighbors of the specified position for ticking (m_ToTickQueue).
|
||||||
void QueueTickBlock(Vector3i a_RelPos);
|
If any are outside the chunk, relays the checking to the proper neighboring chunk. */
|
||||||
|
void QueueTickBlockNeighbors(Vector3i a_Position);
|
||||||
/** OBSOLETE, use the Vector3i-based overload instead.
|
|
||||||
Queues block for ticking (m_ToTickQueue) */
|
|
||||||
void QueueTickBlock(int a_RelX, int a_RelY, int a_RelZ)
|
|
||||||
{
|
|
||||||
return QueueTickBlock({a_RelX, a_RelY, a_RelZ});
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Queues all 6 neighbors of the specified block for ticking (m_ToTickQueue). If any are outside the chunk, relays the checking to the proper neighboring chunk */
|
|
||||||
void QueueTickBlockNeighbors(Vector3i a_RelPos);
|
|
||||||
|
|
||||||
void FastSetBlock(int a_RelX, int a_RelY, int a_RelZ, BLOCKTYPE a_BlockType, BLOCKTYPE a_BlockMeta, bool a_SendToClients = true); // Doesn't force block updates on neighbors, use for simple changes such as grass growing etc.
|
void FastSetBlock(int a_RelX, int a_RelY, int a_RelZ, BLOCKTYPE a_BlockType, BLOCKTYPE a_BlockMeta, bool a_SendToClients = true); // Doesn't force block updates on neighbors, use for simple changes such as grass growing etc.
|
||||||
void FastSetBlock(Vector3i a_RelPos, BLOCKTYPE a_BlockType, BLOCKTYPE a_BlockMeta, bool a_SendToClients = true)
|
void FastSetBlock(Vector3i a_RelPos, BLOCKTYPE a_BlockType, BLOCKTYPE a_BlockMeta, bool a_SendToClients = true)
|
||||||
@ -525,10 +516,6 @@ public:
|
|||||||
return UnboundedRelFastSetBlock({a_RelX, a_RelY, a_RelZ}, a_BlockType, a_BlockMeta);
|
return UnboundedRelFastSetBlock({a_RelX, a_RelY, a_RelZ}, a_BlockType, a_BlockMeta);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Same as QueueTickBlock(), but relative coords needn't be in this chunk (uses m_Neighbor-s in such a case)
|
|
||||||
Ignores unsuccessful attempts */
|
|
||||||
void UnboundedQueueTickBlock(Vector3i a_RelPos);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Per-chunk simulator data:
|
// Per-chunk simulator data:
|
||||||
|
@ -2191,23 +2191,6 @@ void cChunkMap::ChunkValidated(void)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cChunkMap::QueueTickBlock(Vector3i a_AbsPos)
|
|
||||||
{
|
|
||||||
auto chunkCoords = cChunkDef::BlockToChunk(a_AbsPos);
|
|
||||||
auto relPos = cChunkDef::AbsoluteToRelative(a_AbsPos, chunkCoords);
|
|
||||||
|
|
||||||
cCSLock Lock(m_CSChunks);
|
|
||||||
cChunkPtr Chunk = GetChunkNoLoad(chunkCoords);
|
|
||||||
if (Chunk != nullptr)
|
|
||||||
{
|
|
||||||
Chunk->QueueTickBlock(relPos);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cChunkMap::SetChunkAlwaysTicked(int a_ChunkX, int a_ChunkZ, bool a_AlwaysTicked)
|
void cChunkMap::SetChunkAlwaysTicked(int a_ChunkX, int a_ChunkZ, bool a_AlwaysTicked)
|
||||||
{
|
{
|
||||||
cCSLock Lock(m_CSChunks);
|
cCSLock Lock(m_CSChunks);
|
||||||
|
@ -401,9 +401,6 @@ public:
|
|||||||
|
|
||||||
void ChunkValidated(void); // Called by chunks that have become valid
|
void ChunkValidated(void); // Called by chunks that have become valid
|
||||||
|
|
||||||
/** Queues the specified block for ticking (block update) */
|
|
||||||
void QueueTickBlock(Vector3i a_AbsPos);
|
|
||||||
|
|
||||||
/** Returns the CS for locking the chunkmap; only cWorld::cLock may use this function! */
|
/** Returns the CS for locking the chunkmap; only cWorld::cLock may use this function! */
|
||||||
cCriticalSection & GetCS(void) { return m_CSChunks; }
|
cCriticalSection & GetCS(void) { return m_CSChunks; }
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user