void DestroyedTile(Tile2D t) { if (nTile != null && nTile == t) { nTile = null; } if (eTile != null && eTile == t) { eTile = null; } if (sTile != null && sTile == t) { sTile = null; } if (wTile != null && wTile == t) { wTile = null; } if (nwTile != null && nwTile == t) { nwTile = null; } if (neTile != null && neTile == t) { neTile = null; } if (seTile != null && seTile == t) { seTile = null; } if (swTile != null && swTile == t) { swTile = null; } }
public static Tile2D CreateTile(Sprite sprite, bool addCollider) { Tile2D t = null; GameObject go = new GameObject(); SpriteRenderer sr = go.AddComponent <SpriteRenderer>(); go.AddComponent <Tile2D>(); t = go.GetComponent <Tile2D>(); if (sprite) { sr.sprite = sprite; Sprite[] sa = t.tileA = new Sprite[1]; sa[0] = sprite; go.name = sprite.name; } else { go.name = "New Tile2D"; } if (addCollider) { go.AddComponent <BoxCollider2D>(); } EditorUtility.SetDirty(t); return(t); }
public void DrawCustomInspector() { Tile2D t = (Tile2D)target; EditorGUILayout.BeginHorizontal("Box"); GUIStyle lab = new GUIStyle(); lab.richText = true; GUILayout.Label("Correct sprite naming is required to auto-fill arrays\n\n<b>NAME_SEGMENT TYPE_NUMBER</b>\n\nExample:\nGRASS_C_4", lab); EditorGUILayout.EndHorizontal(); if (GUILayout.Button("Find and apply sprite properties")) { t.transform.position = Vector3.one; Debug.Log(t); if (t.tileTexture == null) { Debug.LogError("TileTool2D: Assign Texture containing multiple Sprites to [Tile Texture] property. (Texture must be in Resources folder)"); return; } if (t.tileName == "") { Debug.LogWarning("TileTool2D: Assign Sprite Name to look for in the Tile Name property\nTrying to use texture name: " + t.tileTexture.name); t.tileName = t.tileTexture.name; } Texture tex = t.tileTexture; Sprite[] sprites = Resources.LoadAll <Sprite>(tex.name); Fill(sprites, t, true, true); } }
void TileSelectGUI() { EditorGUILayout.LabelField("TileTool2D Tile", GUILayout.Width(100f)); gTile = (GameObject)EditorGUILayout.ObjectField(gTile, typeof(GameObject), false, GUILayout.Width(175f)); GUILayout.FlexibleSpace(); if (GUILayout.Button("Create Tile", GUILayout.Width(120), GUILayout.Height(18))) { Tile2D oldTile; oldTile = PrefabCreator.CreateTile(null, false); String path = null; if (Directory.Exists("Assets/TileTool2D/Tiles/Wizard Tiles/")) { path = SaveFile("Assets/TileTool2D/Tiles/Wizard Tiles/", oldTile.transform.name + "", "prefab"); } else { path = SaveFile("Assets/", oldTile.transform.name + "", "prefab"); } if (path != null) { var asset = AssetDatabase.LoadAssetAtPath(path, typeof(GameObject)); if (asset) { asset = PrefabUtility.ReplacePrefab(oldTile.gameObject, (GameObject)AssetDatabase.LoadAssetAtPath(path, typeof(GameObject))); } else { asset = PrefabUtility.CreatePrefab(path, oldTile.gameObject); } string spritePath = AssetDatabase.GetAssetPath(asset); gTile = (GameObject)AssetDatabase.LoadAssetAtPath(spritePath, typeof(GameObject)); } DestroyImmediate(oldTile.gameObject); } if (gTile && GUI.changed) { tile = (Tile2D)gTile.GetComponent <Tile2D>(); } else if (!gTile) { tile = null; } GUI.color = Color.white; }
private void GenerateTiles() { for (int row = 0; row < mapSize.y; row++) { for (int column = 0; column < mapSize.x; column++) { int randomTileIndex = (int)Random.Range(0, tilePrefabs.Length); Tile2D newTile = Instantiate(tilePrefabs[randomTileIndex]); newTile.transform.position = new Vector3( x: column * tileSize, y: 0, z: row * tileSize); newTile.transform.SetParent(this.transform);//Asigna el nuevo objeto al transform del MapGenerator } } }
public ActionStatus Move(Direction direction) { var destinationPoint = Location; if (direction == Direction.West) { destinationPoint += new Point2D(-1, 0); } else if (direction == Direction.East) { destinationPoint += new Point2D(1, 0); } else if (direction == Direction.North) { destinationPoint += new Point2D(0, -1); } else if (direction == Direction.South) { destinationPoint += new Point2D(0, 1); } var lockRect = new Rectangle2D(Location, destinationPoint); using (var map = LockRect(Point2D.Zero, lockRect)) { if (map[destinationPoint].Entity != null) { return(new ActionStatus(ActionStatus.Status.InvalidAction, "Target cell contains an entity.")); } var energyStatus = DeltaEnergy(-1); if (energyStatus.Success) { var obj = map[Location]; map[Location] = new Tile2D(); map[destinationPoint] = obj; } return(energyStatus); } }
string currentTileSprite; // Current sprite type void Start() { tile = transform.GetComponent <Tile2D>(); currentTileSprite = tile.tileSprite; if (animateAllVariations || animateLimitedVariations.Length > 0) { if (loop && randomStart) { animateVariationsCounter = Random.Range(0, 100); if (autoStart) { Invoke("AnimateVariations", Random.value); } return; } if (autoStart) { Invoke("AnimateVariations", speed); } } }
public void FindTiles(bool enablePhysics) { nwTile = neTile = seTile = swTile = nTile = eTile = sTile = wTile = null; float overLapSize = 2f * tileSize; int layer = cacheRenderer.sortingLayerID; if (enablePhysics) { if (layer != 0) { tiles = Physics2D.OverlapAreaAll(new Vector2(transform.position.x - overLapSize, transform.position.y - overLapSize), new Vector2(transform.position.x + overLapSize, transform.position.y + overLapSize), cacheRenderer.sortingLayerID); } else { tiles = Physics2D.OverlapAreaAll(new Vector2(transform.position.x - overLapSize, transform.position.y - overLapSize), new Vector2(transform.position.x + overLapSize, transform.position.y + overLapSize)); } for (int i = 0; i < tiles.Length; i++) { Tile2D t = tiles[i].transform.GetComponent <Tile2D>(); if (t != null && t != this) { FindTile(t); } } } else { for (int i = 0; i < transform.parent.childCount; i++) { Tile2D t = transform.parent.GetChild(i).GetComponent <Tile2D>(); if (t != null && t != this) { FindTile(t); } } } }
public void Beautify() { Tile2D nTileXXX = null; Tile2D eTileXXX = null; Tile2D sTileXXX = null; Tile2D wTileXXX = null; Tile2D neTileX = null; Tile2D nwTileX = null; Tile2D seTileX = null; Tile2D swTileX = null; if ((nTile != null) && nTile.tileType == tileType) { nTileXXX = nTile; } if ((eTile != null) && eTile.tileType == tileType) { eTileXXX = eTile; } if ((sTile != null) && sTile.tileType == tileType) { sTileXXX = sTile; } if ((wTile != null) && wTile.tileType == tileType) { wTileXXX = wTile; } if ((nwTile != null) && nwTile.tileType == tileType) { nwTileX = nwTile; } if ((neTile != null) && neTile.tileType == tileType) { neTileX = neTile; } if ((seTile != null) && seTile.tileType == tileType) { seTileX = seTile; } if ((swTile != null) && swTile.tileType == tileType) { swTileX = swTile; } if (passive || (nTileXXX == null) && (eTileXXX == null) && (sTileXXX == null) && (wTileXXX == null) && t2.tileA.Length > 0) { cacheRenderer.sprite = t2.tileA[Random.Range(0, t2.tileA.Length)]; } //Has a tile at all NESW sides if ((nTileXXX != null) && (eTileXXX != null) && (sTileXXX != null) && (wTileXXX != null)) { if (swTileX == null && seTileX == null && nwTileX == null && neTileX == null && t2.tileCNSWE.Length > 0) { cacheRenderer.sprite = t2.tileCNSWE[Random.Range(0, t2.tileCNSWE.Length)]; tileSprite = "CNSWE"; return; } if (nwTileX == null && neTileX == null && seTileX == null && t2.tileCENSW.Length > 0) { cacheRenderer.sprite = t2.tileCENSW[Random.Range(0, t2.tileCENSW.Length)]; tileSprite = "CENSW"; return; } if (nwTileX == null && neTileX == null && swTileX == null && t2.tileCNWES.Length > 0) { cacheRenderer.sprite = t2.tileCNWES[Random.Range(0, t2.tileCNWES.Length)]; tileSprite = "CNWES"; return; } if (neTileX == null && seTileX == null && swTileX == null && t2.tileCSWEN.Length > 0) { cacheRenderer.sprite = t2.tileCSWEN[Random.Range(0, t2.tileCSWEN.Length)]; tileSprite = "CSWEN"; return; } if (nwTileX == null && seTileX == null && swTileX == null && t2.tileCWNSE.Length > 0) { cacheRenderer.sprite = t2.tileCWNSE[Random.Range(0, t2.tileCWNSE.Length)]; tileSprite = "CWNSE"; return; } if (nwTileX == null && seTileX == null && t2.tileCNWSE.Length > 0) { cacheRenderer.sprite = t2.tileCNWSE[Random.Range(0, t2.tileCNWSE.Length)]; tileSprite = "CNWSE"; return; } if (neTileX == null && swTileX == null && t2.tileCNESW.Length > 0) { cacheRenderer.sprite = t2.tileCNESW[Random.Range(0, t2.tileCNESW.Length)]; tileSprite = "CNESW"; return; } if (nwTileX == null && neTileX == null && t2.tileCNWE.Length > 0) { cacheRenderer.sprite = t2.tileCNWE[Random.Range(0, t2.tileCNWE.Length)]; tileSprite = "CNWE"; return; } if (seTileX == null && neTileX == null && t2.tileCENS.Length > 0) { cacheRenderer.sprite = t2.tileCENS[Random.Range(0, t2.tileCENS.Length)]; tileSprite = "CENS"; return; } if (seTileX == null && swTileX == null && t2.tileCSWE.Length > 0) { cacheRenderer.sprite = t2.tileCSWE[Random.Range(0, t2.tileCSWE.Length)]; tileSprite = "CSWE"; return; } if (nwTileX == null && swTileX == null && t2.tileCWNS.Length > 0) { cacheRenderer.sprite = t2.tileCWNS[Random.Range(0, t2.tileCWNS.Length)]; tileSprite = "CWNS"; return; } if (nwTileX == null && t2.tileCNW.Length > 0) { cacheRenderer.sprite = t2.tileCNW[Random.Range(0, t2.tileCNW.Length)]; tileSprite = "CNW"; return; } if (neTileX == null && t2.tileCNE.Length > 0) { cacheRenderer.sprite = t2.tileCNE[Random.Range(0, t2.tileCNE.Length)]; tileSprite = "CNE"; return; } if (seTileX == null && t2.tileCSE.Length > 0) { cacheRenderer.sprite = t2.tileCSE[Random.Range(0, t2.tileCSE.Length)]; tileSprite = "CSE"; return; } if (swTileX == null && t2.tileCSW.Length > 0) { cacheRenderer.sprite = t2.tileCSW[Random.Range(0, t2.tileCSW.Length)]; tileSprite = "CSW"; return; } if (t2.tileC.Length > 0) { cacheRenderer.sprite = t2.tileC[Random.Range(0, t2.tileC.Length)]; tileSprite = "C"; return; } } if ((nTileXXX == null) && (eTileXXX != null) && (sTileXXX != null) && (wTileXXX != null)) { if (seTileX == null && swTileX == null && t2.tileCNS.Length > 0) { cacheRenderer.sprite = t2.tileCNS[Random.Range(0, t2.tileCNS.Length)]; tileSprite = "CNS"; return; } if (seTileX == null && t2.tileCNEE.Length > 0) { cacheRenderer.sprite = t2.tileCNEE[Random.Range(0, t2.tileCNEE.Length)]; tileSprite = "CNEE"; return; } if (swTileX == null && t2.tileCNSS.Length > 0) { cacheRenderer.sprite = t2.tileCNSS[Random.Range(0, t2.tileCNSS.Length)]; tileSprite = "CNSS"; return; } if (t2.tileCN.Length > 0) { cacheRenderer.sprite = t2.tileCN[Random.Range(0, t2.tileCN.Length)]; tileSprite = "CN"; return; } } if ((nTileXXX != null) && (eTileXXX != null) && (sTileXXX == null) && (wTileXXX != null)) { if (neTileX == null && nwTileX == null && t2.tileCSN.Length > 0) { cacheRenderer.sprite = t2.tileCSN[Random.Range(0, t2.tileCSN.Length)]; tileSprite = "CSN"; return; } if (nwTileX == null && t2.tileCSWW.Length > 0) { cacheRenderer.sprite = t2.tileCSWW[Random.Range(0, t2.tileCSWW.Length)]; tileSprite = "CSWW"; return; } if (neTileX == null && t2.tileCSEE.Length > 0) { cacheRenderer.sprite = t2.tileCSEE[Random.Range(0, t2.tileCSEE.Length)]; tileSprite = "CSEE"; return; } if (t2.tileCS.Length > 0) { cacheRenderer.sprite = t2.tileCS[Random.Range(0, t2.tileCS.Length)]; tileSprite = "CS"; return; } } if ((nTileXXX != null) && (eTileXXX != null) && (sTileXXX != null) && (wTileXXX == null)) { if (neTileX == null && seTileX == null && t2.tileCWE.Length > 0) { cacheRenderer.sprite = t2.tileCWE[Random.Range(0, t2.tileCWE.Length)]; tileSprite = "CWE"; return; } if (neTileX == null && t2.tileCWNN.Length > 0) { cacheRenderer.sprite = t2.tileCWNN[Random.Range(0, t2.tileCWNN.Length)]; tileSprite = "CWNN"; return; } if (seTileX == null && t2.tileCWSS.Length > 0) { cacheRenderer.sprite = t2.tileCWSS[Random.Range(0, t2.tileCWSS.Length)]; tileSprite = "CWSS"; return; } if (t2.tileCW.Length > 0) { cacheRenderer.sprite = t2.tileCW[Random.Range(0, t2.tileCW.Length)]; tileSprite = "CW"; return; } } if ((nTileXXX != null) && (eTileXXX == null) && (sTileXXX != null) && (wTileXXX != null)) { if (nwTileX == null && swTileX == null && t2.tileCEW.Length > 0) { cacheRenderer.sprite = t2.tileCEW[Random.Range(0, t2.tileCEW.Length)]; tileSprite = "CEW"; return; } if (swTileX == null && t2.tileCESS.Length > 0) { cacheRenderer.sprite = t2.tileCESS[Random.Range(0, t2.tileCESS.Length)]; tileSprite = "CESS"; return; } if (nwTileX == null && t2.tileCENN.Length > 0) { cacheRenderer.sprite = t2.tileCENN[Random.Range(0, t2.tileCENN.Length)]; tileSprite = "CENN"; return; } if (t2.tileCE.Length > 0) { cacheRenderer.sprite = t2.tileCE[Random.Range(0, t2.tileCE.Length)]; tileSprite = "CE"; return; } } // Check if this is NWt2.tile if ((nTileXXX == null) && (eTileXXX != null) && (sTileXXX != null) && (wTileXXX == null)) { if (seTileX == null && t2.tileNWSE.Length > 0) { cacheRenderer.sprite = t2.tileNWSE[Random.Range(0, t2.tileNWSE.Length)]; tileSprite = "NWSE"; return; } if (t2.tileNW.Length > 0) { cacheRenderer.sprite = t2.tileNW[Random.Range(0, t2.tileNW.Length)]; tileSprite = "NW"; return; } } // Check if this is NEt2.tile if ((nTileXXX == null) && (eTileXXX == null) && (sTileXXX != null) && (wTileXXX != null)) { if (swTileX == null && t2.tileNESW.Length > 0) { cacheRenderer.sprite = t2.tileNESW[Random.Range(0, t2.tileNESW.Length)]; tileSprite = "NESW"; return; } if (t2.tileNE.Length > 0) { cacheRenderer.sprite = t2.tileNE[Random.Range(0, t2.tileNE.Length)]; tileSprite = "NE"; return; } } // Check if this is SWt2.tile if ((nTileXXX != null) && (eTileXXX != null) && (sTileXXX == null) && (wTileXXX == null)) { if (neTileX == null && t2.tileSWNE.Length > 0) { cacheRenderer.sprite = t2.tileSWNE[Random.Range(0, t2.tileSWNE.Length)]; tileSprite = "SWNE"; return; } if (t2.tileSW.Length > 0) { cacheRenderer.sprite = t2.tileSW[Random.Range(0, t2.tileSW.Length)]; tileSprite = "SW"; return; } } // Check if this is SEt2.tile if ((nTileXXX != null) && (eTileXXX == null) && (sTileXXX == null) && (wTileXXX != null)) { if (nwTileX == null && t2.tileSENW.Length > 0) { cacheRenderer.sprite = t2.tileSENW[Random.Range(0, t2.tileSENW.Length)]; tileSprite = "SENW"; return; } if (t2.tileSE.Length > 0) { cacheRenderer.sprite = t2.tileSE[Random.Range(0, t2.tileSE.Length)]; tileSprite = "SE"; return; } } // Check if this is Nt2.tile if ((nTileXXX == null) && (eTileXXX == null) && (sTileXXX != null) && (wTileXXX == null)) { if (t2.tileN.Length > 0) { cacheRenderer.sprite = t2.tileN[Random.Range(0, t2.tileN.Length)]; tileSprite = "N"; return; } } // Check if this is Et2.tile if ((nTileXXX == null) && (eTileXXX == null) && (sTileXXX == null) && (wTileXXX != null)) { if (t2.tileE.Length > 0) { cacheRenderer.sprite = t2.tileE[Random.Range(0, t2.tileE.Length)]; tileSprite = "E"; return; } } // Check if this is St2.tile if ((nTileXXX != null) && (eTileXXX == null) && (sTileXXX == null) && (wTileXXX == null)) { if (t2.tileS.Length > 0) { cacheRenderer.sprite = t2.tileS[Random.Range(0, t2.tileS.Length)]; tileSprite = "S"; return; } } // Check if this is Wt2.tile if ((nTileXXX == null) && (eTileXXX != null) && (sTileXXX == null) && (wTileXXX == null)) { if (t2.tileW.Length > 0) { cacheRenderer.sprite = t2.tileW[Random.Range(0, t2.tileW.Length)]; tileSprite = "W"; return; } } // Check if this is NSt2.tile if ((nTileXXX == null) && (eTileXXX != null) && (sTileXXX == null) && (wTileXXX != null)) { if (t2.tileNS.Length > 0) { cacheRenderer.sprite = t2.tileNS[Random.Range(0, t2.tileNS.Length)]; tileSprite = "NS"; return; } } // Check if this is WEt2.tile if ((nTileXXX != null) && (eTileXXX == null) && (sTileXXX != null) && (wTileXXX == null)) { if (t2.tileWE.Length > 0) { cacheRenderer.sprite = t2.tileWE[Random.Range(0, t2.tileWE.Length)]; tileSprite = "WE"; return; } } // Check if this is A tile if (t2.tileA.Length > 0) { cacheRenderer.sprite = t2.tileA[Random.Range(0, t2.tileA.Length)]; tileSprite = "A"; return; } }
public void FindTile(Tile2D t) { Transform tt = t.transform; if (tt.parent != transform.parent) { return; } // Check if tile is directly above if (tt.position.y == Round(transform.position.y + tileSize, tileSize) && tt.position.x == transform.position.x) { if (!t.passive) { nTile = t; } #if UNITY_EDITOR if (nTile != null) { EditorUtility.SetDirty(nTile); } #endif return; } // Check if tile is directly below if (tt.position.y == Round(transform.position.y - tileSize, tileSize) && tt.position.x == transform.position.x) { if (!t.passive) { sTile = t; } #if UNITY_EDITOR if (sTile != null) { EditorUtility.SetDirty(sTile); } #endif return; } // Check if tile is directly to the right if (tt.position.x == Round(transform.position.x + tileSize, tileSize) && tt.position.y == transform.position.y) { if (!t.passive) { eTile = t; } #if UNITY_EDITOR if (eTile != null) { EditorUtility.SetDirty(eTile); } #endif return; } // Check if tile is directly to the left if (tt.position.x == Round(transform.position.x - tileSize, tileSize) && tt.position.y == transform.position.y) { if (!t.passive) { wTile = t; } #if UNITY_EDITOR if (wTile != null) { EditorUtility.SetDirty(wTile); } #endif return; } // Check if tile is north west if (tt.position.x == Round(transform.position.x - tileSize, tileSize) && tt.position.y == Round(transform.position.y + tileSize, tileSize)) { if (!t.passive) { nwTile = t; } #if UNITY_EDITOR if (nwTile != null) { EditorUtility.SetDirty(nwTile); } #endif return; } // Check if tile is north east if (tt.position.x == Round(transform.position.x + tileSize, tileSize) && tt.position.y == Round(transform.position.y + tileSize, tileSize)) { if (!t.passive) { neTile = t; } #if UNITY_EDITOR if (neTile != null) { EditorUtility.SetDirty(neTile); } #endif return; } // Check if tile is south east if (tt.position.x == Round(transform.position.x + tileSize, tileSize) && tt.position.y == Round(transform.position.y - tileSize, tileSize)) { if (!t.passive) { seTile = t; } #if UNITY_EDITOR if (seTile != null) { EditorUtility.SetDirty(seTile); } #endif return; } // Check if tile is south west if (tt.position.x == Round(transform.position.x - tileSize, tileSize) && tt.position.y == Round(transform.position.y - tileSize, tileSize)) { if (!t.passive) { swTile = t; } #if UNITY_EDITOR if (swTile != null) { EditorUtility.SetDirty(swTile); } #endif return; } // Check if tile is overlapping (EDITOR ONLY) //#if UNITY_EDITOR // if (gameObject != null && tt.position.x == transform.position.x && tt.position.y == transform.position.y) { // tt.position = new Vector3(9999999.999999f, 9999999.999999f, 0); // //Undo.DestroyObjectImmediate(t.gameObject); // //DestroyImmediate(t.gameObject); // return; // } //#endif // // Check if tile is overlapping // if (gameObject != null && tt.position.x == transform.position.x && tt.position.y == transform.position.y) { // tt.position = new Vector3(9999999.999999f, 9999999.999999f, 0); // Destroy(t.gameObject); // return; // } }
public void CheckOverlap(bool enableUndo, bool enablePhysics) { //Only useable in Editor #if UNITY_EDITOR float overLapSize = 2f * tileSize; int layer = cacheRenderer.sortingLayerID; if (enablePhysics) { if (layer != 0) { tiles = Physics2D.OverlapAreaAll(new Vector2(transform.position.x - overLapSize, transform.position.y - overLapSize), new Vector2(transform.position.x + overLapSize, transform.position.y + overLapSize), cacheRenderer.sortingLayerID); } else { tiles = Physics2D.OverlapAreaAll(new Vector2(transform.position.x - overLapSize, transform.position.y - overLapSize), new Vector2(transform.position.x + overLapSize, transform.position.y + overLapSize)); } for (int i = 0; i < tiles.Length; i++) { Tile2D t = tiles[i].GetComponent <Tile2D>(); if (t != null) { Transform tt = t.transform; if (t != this && gameObject != null && tt.parent == transform.parent && tt.position.x == transform.position.x && tt.position.y == transform.position.y) { tt.position = new Vector3(9999999.999999f, 9999999.999999f, 0); if (enableUndo) { Undo.DestroyObjectImmediate(t.gameObject); } else { DestroyImmediate(t.gameObject); } } } } } else { for (int i = 0; i < transform.parent.childCount; i++) { Tile2D t = transform.parent.GetChild(i).GetComponent <Tile2D>(); if (t != null) { Transform tt = t.transform; if (t != this && gameObject != null && tt.position.x == transform.position.x && tt.position.y == transform.position.y) { tt.position = new Vector3(9999999.999999f, 9999999.999999f, 0); if (enableUndo) { Undo.DestroyObjectImmediate(t.gameObject); } else { DestroyImmediate(t.gameObject); } } } } } #endif }
public void AttackToTile(Tile2D tile) { GameObject newExplosion = Instantiate(attackPrefab); newExplosion.transform.position = tile.transform.position; }
public void MoveToTile(Tile2D tile) { targetTile = tile; }
public void Fill(Sprite[] sprites, Tile2D tile2DTarget, bool useName, bool warnings) { tile2DTarget.cacheRenderer = tile2DTarget.GetComponent <SpriteRenderer>(); ArrayList fooList = new ArrayList(); for (int i = 0; i < sprites.Length; i++) { string[] splitString = sprites[i].name.Split("_"[0]); if (!useName || splitString[0].ToUpper() == tile2DTarget.tileName.ToUpper()) { fooList.Add(sprites[i]); } } if (tile2DTarget.tileType == "") { tile2DTarget.tileType = tile2DTarget.tileName; } string log = "TileTool2D: Couldn't find MAIN tile types :"; string olog = "TileTool2D: Couldn't find OPTIONAL tile types :"; if (FindTiles(fooList, "A", "0").Length > 0) { tile2DTarget.tileA = FindTiles(fooList, "A", "0"); } if (tile2DTarget.tileA.Length == 0) { log = log + " A"; } tile2DTarget.tileC = FindTiles(fooList, "C", "4"); if (tile2DTarget.tileC.Length == 0) { log = log + " - C"; } tile2DTarget.tileCE = FindTiles(fooList, "CE", "15"); if (tile2DTarget.tileCE.Length == 0) { log = log + " - CE"; } tile2DTarget.tileCN = FindTiles(fooList, "CN", "5"); if (tile2DTarget.tileCN.Length == 0) { log = log + " - CN"; } tile2DTarget.tileCS = FindTiles(fooList, "CS", "6"); if (tile2DTarget.tileCS.Length == 0) { log = log + " - CS"; } tile2DTarget.tileCW = FindTiles(fooList, "CW", "14"); if (tile2DTarget.tileCW.Length == 0) { log = log + " - CW"; } tile2DTarget.tileE = FindTiles(fooList, "E", "3"); if (tile2DTarget.tileE.Length == 0) { log = log + " - E"; } tile2DTarget.tileN = FindTiles(fooList, "N", "9"); if (tile2DTarget.tileN.Length == 0) { log = log + " - N"; } tile2DTarget.tileNE = FindTiles(fooList, "NE", "8"); if (tile2DTarget.tileNE.Length == 0) { log = log + " - NE"; } tile2DTarget.tileNS = FindTiles(fooList, "NS", "2"); if (tile2DTarget.tileNS.Length == 0) { log = log + " - NS"; } tile2DTarget.tileNW = FindTiles(fooList, "NW", "7"); if (tile2DTarget.tileNW.Length == 0) { log = log + " - NW"; } tile2DTarget.tileS = FindTiles(fooList, "S", "23"); if (tile2DTarget.tileS.Length == 0) { log = log + " - S"; } tile2DTarget.tileSE = FindTiles(fooList, "SE", "22"); if (tile2DTarget.tileSE.Length == 0) { log = log + " - SE"; } tile2DTarget.tileSW = FindTiles(fooList, "SW", "21"); if (tile2DTarget.tileSW.Length == 0) { log = log + " - SW"; } tile2DTarget.tileW = FindTiles(fooList, "W", "1"); if (tile2DTarget.tileW.Length == 0) { log = log + " - W"; } tile2DTarget.tileWE = FindTiles(fooList, "WE", "16"); if (tile2DTarget.tileWE.Length == 0) { log = log + " - WE"; } tile2DTarget.tileCNW = FindTiles(fooList, "CNW", "26"); if (tile2DTarget.tileCNW.Length == 0) { olog = olog + " CNW"; } tile2DTarget.tileCNE = FindTiles(fooList, "CNE", "24"); if (tile2DTarget.tileCNE.Length == 0) { olog = olog + " - CNE"; } tile2DTarget.tileCSW = FindTiles(fooList, "CSW", "12"); if (tile2DTarget.tileCSW.Length == 0) { olog = olog + " - CSW"; } tile2DTarget.tileCSE = FindTiles(fooList, "CSE", "10"); if (tile2DTarget.tileCSE.Length == 0) { olog = olog + " - CSE"; } tile2DTarget.tileCNWE = FindTiles(fooList, "CNWE", "25"); if (tile2DTarget.tileCNWE.Length == 0) { olog = olog + " - CNWE"; } tile2DTarget.tileCENS = FindTiles(fooList, "CENS", "17"); if (tile2DTarget.tileCENS.Length == 0) { olog = olog + " - CENS"; } tile2DTarget.tileCSWE = FindTiles(fooList, "CSWE", "11"); if (tile2DTarget.tileCSWE.Length == 0) { olog = olog + " - CSWE"; } tile2DTarget.tileCWNS = FindTiles(fooList, "CWNS", "19"); if (tile2DTarget.tileCWNS.Length == 0) { olog = olog + " - CWNS"; } tile2DTarget.tileCNSWE = FindTiles(fooList, "CNSWE", "18"); if (tile2DTarget.tileCNSWE.Length == 0) { olog = olog + " - CNSWE"; } tile2DTarget.tileCWE = FindTiles(fooList, "CWE", "13"); if (tile2DTarget.tileCWE.Length == 0) { olog = olog + " - CWE"; } tile2DTarget.tileCNS = FindTiles(fooList, "CNS", "27"); if (tile2DTarget.tileCNS.Length == 0) { olog = olog + " - CNS"; } tile2DTarget.tileCSN = FindTiles(fooList, "CSN", "34"); if (tile2DTarget.tileCSN.Length == 0) { olog = olog + " - CSN"; } tile2DTarget.tileCEW = FindTiles(fooList, "CEW", "20"); if (tile2DTarget.tileCEW.Length == 0) { olog = olog + " - CEW"; } tile2DTarget.tileCWNN = FindTiles(fooList, "CWNN", "37"); if (tile2DTarget.tileCWNN.Length == 0) { olog = olog + " - CWNN"; } tile2DTarget.tileCNEE = FindTiles(fooList, "CNEE", "32"); if (tile2DTarget.tileCNEE.Length == 0) { olog = olog + " - CNEE"; } tile2DTarget.tileCSWW = FindTiles(fooList, "CSWW", "40"); if (tile2DTarget.tileCSWW.Length == 0) { olog = olog + " - CSWW"; } tile2DTarget.tileCESS = FindTiles(fooList, "CESS", "31"); if (tile2DTarget.tileCESS.Length == 0) { olog = olog + " - CESS"; } tile2DTarget.tileCNSS = FindTiles(fooList, "CNSS", "33"); if (tile2DTarget.tileCNSS.Length == 0) { olog = olog + " - CNSS"; } tile2DTarget.tileCENN = FindTiles(fooList, "CENN", "38"); if (tile2DTarget.tileCENN.Length == 0) { olog = olog + " - CENN"; } tile2DTarget.tileCWSS = FindTiles(fooList, "CWSS", "30"); if (tile2DTarget.tileCWSS.Length == 0) { olog = olog + " - CWSS"; } tile2DTarget.tileCSEE = FindTiles(fooList, "CSEE", "39"); if (tile2DTarget.tileCSEE.Length == 0) { olog = olog + " - CSEE"; } tile2DTarget.tileSENW = FindTiles(fooList, "SENW", "36"); if (tile2DTarget.tileSENW.Length == 0) { olog = olog + " - SENW"; } tile2DTarget.tileSWNE = FindTiles(fooList, "SWNE", "35"); if (tile2DTarget.tileSWNE.Length == 0) { olog = olog + " - SWNE"; } tile2DTarget.tileNESW = FindTiles(fooList, "NESW", "29"); if (tile2DTarget.tileNESW.Length == 0) { olog = olog + " - NESW"; } tile2DTarget.tileNWSE = FindTiles(fooList, "NWSE", "28"); if (tile2DTarget.tileNWSE.Length == 0) { olog = olog + " - NWSE"; } tile2DTarget.tileCENSW = FindTiles(fooList, "CENSW", "43"); if (tile2DTarget.tileCENSW.Length == 0) { olog = olog + " - CENSW"; } tile2DTarget.tileCNWES = FindTiles(fooList, "CNWES", "44"); if (tile2DTarget.tileCNWES.Length == 0) { olog = olog + " - CNWES"; } tile2DTarget.tileCSWEN = FindTiles(fooList, "CSWEN", "45"); if (tile2DTarget.tileCSWEN.Length == 0) { olog = olog + " - CSWEN"; } tile2DTarget.tileCWNSE = FindTiles(fooList, "CWNSE", "46"); if (tile2DTarget.tileCWNSE.Length == 0) { olog = olog + " - CWNSE"; } tile2DTarget.tileCNWSE = FindTiles(fooList, "CNWSE", "41"); if (tile2DTarget.tileCNWSE.Length == 0) { olog = olog + " - CNWSE"; } tile2DTarget.tileCNESW = FindTiles(fooList, "CNESW", "42"); if (tile2DTarget.tileCNESW.Length == 0) { olog = olog + " - CNESW"; } if (log != "TileTool2D: Couldn't find MAIN tile types :") { Debug.LogWarning(log); } if (warnings && log != "TileTool2D: Couldn't find MAIN tile types :") { Debug.LogWarning("\n<b> (Textures must be in the resource folder while auto detecting)</b>"); } if (olog != "TileTool2D: Couldn't find OPTIONAL tile types :") { Debug.LogWarning(olog); } if (tile2DTarget.tileA.Length > 0) { tile2DTarget.cacheRenderer.sprite = tile2DTarget.tileA[0]; } else if (tile2DTarget.tileCN.Length > 0) { tile2DTarget.cacheRenderer.sprite = tile2DTarget.tileCN[0]; } else if (tile2DTarget.tileCE.Length > 0) { tile2DTarget.cacheRenderer.sprite = tile2DTarget.tileCE[0]; } else if (tile2DTarget.tileCS.Length > 0) { tile2DTarget.cacheRenderer.sprite = tile2DTarget.tileCS[0]; } else if (tile2DTarget.tileCW.Length > 0) { tile2DTarget.cacheRenderer.sprite = tile2DTarget.tileCW[0]; } else if (tile2DTarget.tileC.Length > 0) { tile2DTarget.cacheRenderer.sprite = tile2DTarget.tileC[0]; } else if (warnings) { Debug.LogWarning("Please assign default sprite to tile manually"); } EditorUtility.SetDirty(tile2DTarget.gameObject); string spritePath = AssetDatabase.GetAssetPath(tile2DTarget.gameObject); AssetDatabase.ImportAsset(spritePath, ImportAssetOptions.ForceUpdate); }
public void FindTiles() { nwTile = neTile = seTile = swTile= nTile = eTile = sTile = wTile = null; //// Previous version of neighbour tiles used physics check // float overLapSize = 2.0f *tileSize; // tiles = Physics2D.OverlapAreaAll(new Vector2(transform.position.x - overLapSize, transform.position.y - overLapSize), new Vector2(transform.position.x + overLapSize, transform.position.y + overLapSize)); // for (int i = 0; i < tiles.Length; i++) { // Debug.Log(tiles[i].name); // Tile2D t = tiles[i].transform.GetComponent<Tile2D>(); // if (t != this) FindTile(t); // } for (int i = 0; i < transform.parent.childCount; i++) { Tile2D t = transform.parent.GetChild(i).GetComponent<Tile2D>(); if (t != this) FindTile(t); } }
public void FindTile(Tile2D t) { Transform tt = t.transform; if (tt.parent != transform.parent) return; // Check if tile is directly above if (tt.position.y == Round(transform.position.y + tileSize, tileSize) && tt.position.x == transform.position.x) { if (!t.passive) nTile = t; #if UNITY_EDITOR if (nTile != null) EditorUtility.SetDirty(nTile); #endif return; } // Check if tile is directly below if (tt.position.y == Round(transform.position.y - tileSize, tileSize) && tt.position.x == transform.position.x) { if (!t.passive) sTile = t; #if UNITY_EDITOR if (sTile != null) EditorUtility.SetDirty(sTile); #endif return; } // Check if tile is directly to the right if (tt.position.x == Round(transform.position.x + tileSize, tileSize) && tt.position.y == transform.position.y) { if (!t.passive) eTile = t; #if UNITY_EDITOR if (eTile != null) EditorUtility.SetDirty(eTile); #endif return; } // Check if tile is directly to the left if (tt.position.x == Round(transform.position.x - tileSize, tileSize) && tt.position.y == transform.position.y) { if (!t.passive) wTile = t; #if UNITY_EDITOR if (wTile != null) EditorUtility.SetDirty(wTile); #endif return; } // Check if tile is north west if (tt.position.x == Round(transform.position.x - tileSize, tileSize) && tt.position.y == Round(transform.position.y + tileSize, tileSize)) { if (!t.passive) nwTile = t; #if UNITY_EDITOR if (nwTile != null) EditorUtility.SetDirty(nwTile); #endif return; } // Check if tile is north east if (tt.position.x == Round(transform.position.x + tileSize, tileSize) && tt.position.y == Round(transform.position.y + tileSize, tileSize)) { if (!t.passive) neTile = t; #if UNITY_EDITOR if (neTile != null) EditorUtility.SetDirty(neTile); #endif return; } // Check if tile is south east if (tt.position.x == Round(transform.position.x + tileSize, tileSize) && tt.position.y == Round(transform.position.y - tileSize, tileSize)) { if (!t.passive) seTile = t; #if UNITY_EDITOR if (seTile != null) EditorUtility.SetDirty(seTile); #endif return; } // Check if tile is south west if (tt.position.x == Round(transform.position.x - tileSize, tileSize) && tt.position.y == Round(transform.position.y - tileSize, tileSize)) { if (!t.passive) swTile = t; #if UNITY_EDITOR if (swTile != null) EditorUtility.SetDirty(swTile); #endif return; } // Check if tile is overlapping (EDITOR ONLY) #if UNITY_EDITOR if (gameObject != null && tt.position.x == transform.position.x && tt.position.y == transform.position.y) { tt.position = new Vector3(9999999.999999f, 9999999.999999f, 0); Undo.DestroyObjectImmediate(t.gameObject); //DestroyImmediate(t.gameObject); return; } #endif // Check if tile is overlapping if (gameObject != null && tt.position.x == transform.position.x && tt.position.y == transform.position.y) { tt.position = new Vector3(9999999.999999f, 9999999.999999f, 0); Destroy(t.gameObject); return; } }
public void NewArray(string s, int length, Tile2D tileTarget) { if (s == "tileA") { tileTarget.tileA = new Sprite[length]; } else if (s == "tileC") { tileTarget.tileC = new Sprite[length]; } else if (s == "tileCE") { tileTarget.tileCE = new Sprite[length]; } else if (s == "tileCN") { tileTarget.tileCN = new Sprite[length]; } else if (s == "tileCS") { tileTarget.tileCS = new Sprite[length]; } else if (s == "tileCW") { tileTarget.tileCW = new Sprite[length]; } else if (s == "tileE") { tileTarget.tileE = new Sprite[length]; } else if (s == "tileN") { tileTarget.tileN = new Sprite[length]; } else if (s == "tileNE") { tileTarget.tileNE = new Sprite[length]; } else if (s == "tileNS") { tileTarget.tileNS = new Sprite[length]; } else if (s == "tileNW") { tileTarget.tileNW = new Sprite[length]; } else if (s == "tileS") { tileTarget.tileS = new Sprite[length]; } else if (s == "tileSE") { tileTarget.tileSE = new Sprite[length]; } else if (s == "tileSW") { tileTarget.tileSW = new Sprite[length]; } else if (s == "tileW") { tileTarget.tileW = new Sprite[length]; } else if (s == "tileWE") { tileTarget.tileWE = new Sprite[length]; } else if (s == "tileCNW") { tileTarget.tileCNW = new Sprite[length]; } else if (s == "tileCNE") { tileTarget.tileCNE = new Sprite[length]; } else if (s == "tileCSE") { tileTarget.tileCSE = new Sprite[length]; } else if (s == "tileCSW") { tileTarget.tileCSW = new Sprite[length]; } else if (s == "tileCWE") { tileTarget.tileCWE = new Sprite[length]; } else if (s == "tileCNS") { tileTarget.tileCNS = new Sprite[length]; } else if (s == "tileCSN") { tileTarget.tileCSN = new Sprite[length]; } else if (s == "tileCEW") { tileTarget.tileCEW = new Sprite[length]; } else if (s == "tileCWNN") { tileTarget.tileCWNN = new Sprite[length]; } else if (s == "tileCNEE") { tileTarget.tileCNEE = new Sprite[length]; } else if (s == "tileCSWW") { tileTarget.tileCSWW = new Sprite[length]; } else if (s == "tileCESS") { tileTarget.tileCESS = new Sprite[length]; } else if (s == "tileCNSS") { tileTarget.tileCNSS = new Sprite[length]; } else if (s == "tileCENN") { tileTarget.tileCENN = new Sprite[length]; } else if (s == "tileCWSS") { tileTarget.tileCWSS = new Sprite[length]; } else if (s == "tileCSEE") { tileTarget.tileCSEE = new Sprite[length]; } else if (s == "tileSENW") { tileTarget.tileSENW = new Sprite[length]; } else if (s == "tileSWNE") { tileTarget.tileSWNE = new Sprite[length]; } else if (s == "tileNESW") { tileTarget.tileNESW = new Sprite[length]; } else if (s == "tileNWSE") { tileTarget.tileNWSE = new Sprite[length]; } else if (s == "tileCNWE") { tileTarget.tileCNWE = new Sprite[length]; } else if (s == "tileCENS") { tileTarget.tileCENS = new Sprite[length]; } else if (s == "tileCSWE") { tileTarget.tileCSWE = new Sprite[length]; } else if (s == "tileCWNS") { tileTarget.tileCWNS = new Sprite[length]; } else if (s == "tileCENSW") { tileTarget.tileCENSW = new Sprite[length]; } else if (s == "tileCSWEN") { tileTarget.tileCSWEN = new Sprite[length]; } else if (s == "tileCNWES") { tileTarget.tileCNWES = new Sprite[length]; } else if (s == "tileCWNSE") { tileTarget.tileCWNSE = new Sprite[length]; } else if (s == "tileCNWSE") { tileTarget.tileCNWSE = new Sprite[length]; } else if (s == "tileCNESW") { tileTarget.tileCNESW = new Sprite[length]; } else if (s == "tileCNSWE") { tileTarget.tileCNSWE = new Sprite[length]; } }