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 (); }