02-22-2014, 06:15 AM
So, it seems that cBlockArea:Write()'s assertion line
For instance, for a simple plugin I wrote to test some changes:
I will enter the game and right-click a block. The first time everything works fine and I've set a break point up to check this; Both the passed datatype and the datatype of the object are the same.
I will then click a second time. The Write function will run correctly at first, but then it runs a second time immediately afterwards and this time the object has a datatype of "0," so the assertion triggers.
I don't know why it's doing this, and it's getting in the way of fixing an unrelated issue (Implementing Rotation functions for the block handlers.)
ASSERT((a_DataTypes & GetDataTypes()) == a_DataTypes);is randomly triggering, Russian Roulette style.
For instance, for a simple plugin I wrote to test some changes:
function OnPlayerUsedItem(Player, BlockX, BlockY, BlockZ, BlockFace, CursorX, CursorY, CursorZ, BlockType, BlockMeta) local Area = cBlockArea(); Area:Read(Player:GetWorld(), BlockX - MOVER_SIZE_X, BlockX + MOVER_SIZE_X, BlockY - MOVER_SIZE_Y, BlockY + MOVER_SIZE_Y, BlockZ - MOVER_SIZE_Z, BlockZ + MOVER_SIZE_Z, cBlockArea().baMetas + cBlockArea().baTypes ); --[[ if (Player:GetEquippedItem().m_ItemType == E_ITEM_EMERALD) then print("RotateCW Test\n"); Area:RotateCW(); elseif (Player:GetEquippedItem().m_ItemType == E_ITEM_DIAMOND) then print("RotateCCW Test\n"); Area:RotateCCW(); end ]] Area:Write( Player:GetWorld(), BlockX - MOVER_SIZE_X, BlockY - MOVER_SIZE_Y, BlockZ - MOVER_SIZE_Z, cBlockArea().baMetas + cBlockArea().baTypes ); return false; end
I will enter the game and right-click a block. The first time everything works fine and I've set a break point up to check this; Both the passed datatype and the datatype of the object are the same.
I will then click a second time. The Write function will run correctly at first, but then it runs a second time immediately afterwards and this time the object has a datatype of "0," so the assertion triggers.
I don't know why it's doing this, and it's getting in the way of fixing an unrelated issue (Implementing Rotation functions for the block handlers.)