void searchSideways(Platform p, TileSheet tileSheet, Tile startTile, bool isRightDir)
    {
        bool finding = true;
        Tile currentTile = startTile;

        int addDirNumber = isRightDir ? 1 : -1;

        for (int x = startTile.m_pos.x+addDirNumber;
             x < tileSheet.m_width && x > 0 && finding;
             x += addDirNumber)
        {
          finding = false;

          for (int y = currentTile.m_pos.y - 1; y <= currentTile.m_pos.y + 1; y++)
          {
        Tile t = tileSheet.getTile (x, y);

        if (t != null)
        {
          t.m_meta = (int)Processing.Done;

          if (t.isWalkable ())
          {
            currentTile = t;
            p.addTile (t);

            finding = true;
            break;
          }
        }
          }
        }
    }
    void findPlatforms(TileSheet tileSheet)
    {
        for (int i = 0; i < tileSheet.nofTiles; i++)
        {
          Tile t = tileSheet.getTile (i);

          if (t != null && t.m_meta == (int)Processing.NotDone)
          {
        t.m_meta = (int)Processing.Done;

        if (t.isWalkable ())
          processPlatform (tileSheet, i);
          }
        }
    }
    void processPlatform(TileSheet tileSheet, int index)
    {
        Tile startTile = tileSheet.getTile (index);
        Platform p = new Platform (startTile);

        searchSideways (p, tileSheet, startTile, true);
        searchSideways (p, tileSheet, startTile, false);

        p.m_wallLeft = tileSheet.getTile (p.m_left.x - 1, p.m_left.y) != null;
        p.m_wallRight = tileSheet.getTile (p.m_right.x + 1, p.m_right.y) != null;

        m_platforms.Add (p);
    }
    public void CreateCandidate(TileSheet tileSheet, Sprite pfmSprite, Sprite leftDebugSprite, Sprite rightDebugSprite, Vector2 spacing)
    {
        if (m_baseObject != null)
          GameObject.Destroy (m_baseObject);

        m_platforms = new List<Platform> ();
        m_baseObject = new GameObject ("Platform debug");

        for (int i = 0; i < tileSheet.nofTiles; i++)
        {
          Tile t = tileSheet.getTile (i);
          if (t != null)
        t.m_meta = (int)Processing.NotDone;
        }

        findPlatforms (tileSheet);

        trimPlatforms ();

        setupConnections ();
    }