public override void Execute(TileManager tileManager, Tile tile, TilePosition pos) { pos += delta; if (tileManager.IsValidTile(pos)) { if (value == true) { tileManager.SetTileDynamic(pos, value, gravity, timeout); } else if (tileManager.GetTileDynamic(pos)) { //Call DynamicTile.MakeStatic because if the tile is inside it's update cycle //when this rule is executed, then the array of components would become invalid DynamicTile dynamicTile = tileManager.GetDynamicTile(pos); dynamicTile.MakeStatic(); } } }