public void Init(DungeonUnity dungeonUnity, DungeonVector2 position, DungeonTile tile) { this.tile = tile; this.position = position; this.dungeonUnity = dungeonUnity; trans.position = dungeonUnity.GetWorldPosition(position); trans.rotation = Quaternion.identity; floor = AddSide(tile.floor, DungeonTileSideType.Floor); ceiling = AddSide(tile.ceiling, DungeonTileSideType.Ceiling); wallNorth = AddSide(tile.wallNorth, DungeonTileSideType.WallNorth); wallSouth = AddSide(tile.wallSouth, DungeonTileSideType.WallSouth); wallEast = AddSide(tile.wallEast, DungeonTileSideType.WallEast); wallWest = AddSide(tile.wallWest, DungeonTileSideType.WallWest); }
public void Clear() { if (!dungeonUnity) { return; } if (floor) { dungeonUnity.tilesSideFactory.ReturnSide(floor); floor = null; } if (ceiling) { dungeonUnity.tilesSideFactory.ReturnSide(ceiling); ceiling = null; } if (wallNorth) { dungeonUnity.tilesSideFactory.ReturnSide(wallNorth); wallNorth = null; } if (wallSouth) { dungeonUnity.tilesSideFactory.ReturnSide(wallSouth); wallSouth = null; } if (wallEast) { dungeonUnity.tilesSideFactory.ReturnSide(wallEast); wallEast = null; } if (wallWest) { dungeonUnity.tilesSideFactory.ReturnSide(wallWest); wallWest = null; } dungeonUnity = null; }
public void ReturnSide(DungeonTileSideUnity side) { List <DungeonTileSideUnity> sidePool; if (pool.ContainsKey(side.id)) { sidePool = pool[side.id]; } else { sidePool = new List <DungeonTileSideUnity>(); pool.Add(side.id, sidePool); } side.trans.parent = trans; side.go.SetActive(false); sidePool.Add(side); }
private DungeonTileSideUnity AddSide(string id, DungeonTileSideType sideType) { if (string.IsNullOrEmpty(id)) { return(null); } if (!IsSideNonSolid(dungeonUnity.dungeon, position, sideType)) { return(null); } DungeonTileSideUnity side = dungeonUnity.tilesSideFactory.GetSide(id); side.trans.parent = trans; side.trans.localPosition = GetSidePosition(sideType); side.trans.localRotation = GetSideRotation(sideType); return(side); }
public DungeonTileSideUnity GetSide(string id) { DungeonTileSideUnity side = null; if (pool.ContainsKey(id) && pool[id].Count > 0) { List <DungeonTileSideUnity> sidePool = pool[id]; side = sidePool[sidePool.Count - 1]; sidePool.RemoveAt(sidePool.Count - 1); side.go.SetActive(true); } else { GameObject prefab = GetPrefab(id); side = ((GameObject)GameObject.Instantiate(prefab)).GetComponent <DungeonTileSideUnity>(); } return(side); }