Fixed rails not updating with diagonals

master
Tiger Wang 2013-12-25 14:12:48 +00:00
parent 40c2826a21
commit 1a02d94ed2
1 changed files with 34 additions and 0 deletions

View File

@ -43,6 +43,40 @@ public:
} }
virtual void OnPlaced(cWorld *a_World, int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) override
{
super::OnPlaced(a_World, a_BlockX, a_BlockY, a_BlockZ, a_BlockType, a_BlockMeta);
// Alert diagonal rails
OnNeighborChanged(a_World, a_BlockX + 1, a_BlockY + 1, a_BlockZ);
OnNeighborChanged(a_World, a_BlockX - 1, a_BlockY + 1, a_BlockZ);
OnNeighborChanged(a_World, a_BlockX, a_BlockY + 1, a_BlockZ + 1);
OnNeighborChanged(a_World, a_BlockX, a_BlockY + 1, a_BlockZ - 1);
OnNeighborChanged(a_World, a_BlockX + 1, a_BlockY - 1, a_BlockZ);
OnNeighborChanged(a_World, a_BlockX - 1, a_BlockY - 1, a_BlockZ);
OnNeighborChanged(a_World, a_BlockX, a_BlockY - 1, a_BlockZ + 1);
OnNeighborChanged(a_World, a_BlockX, a_BlockY - 1, a_BlockZ - 1);
}
virtual void OnDestroyed(cWorld *a_World, int a_BlockX, int a_BlockY, int a_BlockZ) override
{
super::OnDestroyed(a_World, a_BlockX, a_BlockY, a_BlockZ);
// Alert diagonal rails
OnNeighborChanged(a_World, a_BlockX + 1, a_BlockY + 1, a_BlockZ);
OnNeighborChanged(a_World, a_BlockX - 1, a_BlockY + 1, a_BlockZ);
OnNeighborChanged(a_World, a_BlockX, a_BlockY + 1, a_BlockZ + 1);
OnNeighborChanged(a_World, a_BlockX, a_BlockY + 1, a_BlockZ - 1);
OnNeighborChanged(a_World, a_BlockX + 1, a_BlockY - 1, a_BlockZ);
OnNeighborChanged(a_World, a_BlockX - 1, a_BlockY - 1, a_BlockZ);
OnNeighborChanged(a_World, a_BlockX, a_BlockY - 1, a_BlockZ + 1);
OnNeighborChanged(a_World, a_BlockX, a_BlockY - 1, a_BlockZ - 1);
}
virtual void OnNeighborChanged(cWorld *a_World, int a_BlockX, int a_BlockY, int a_BlockZ) override virtual void OnNeighborChanged(cWorld *a_World, int a_BlockX, int a_BlockY, int a_BlockZ) override
{ {
NIBBLETYPE Meta = a_World->GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ); NIBBLETYPE Meta = a_World->GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ);