public void LoadMapElement(Vector3 isoPos, GameObject go) { Vector3Int index = EffectiveUtility.IsoPositionToIndex(isoPos); if (go.GetComponent <Player>() != null) { return; } GameObject instance = Instantiate(go, isoPos, Quaternion.identity, transform); Character entity = instance.GetComponent <Character>(); if (entity != null) { RoomAllEntitys.Add(entity); entity.OwnerRoom = this; } Door door = instance.GetComponent <Door>(); if (door != null) { RoomDoors.Add(door); RoomWays.Add(door.DoorType); door.OwnerRoom = this; } }
private void OnDrawGizmos() { if (!visible && Application.IsPlaying(gameObject)) { return; } Vector3 boxSize = EffectiveUtility.VectorMultiple(guideSize, Isometric.IsometricTileSize); Vector3[] box = new Vector3[] { transform.parent.position + EffectiveUtility.VectorMultiple(new Vector3(-0.5f, 1f, 0.5f), boxSize), transform.parent.position + EffectiveUtility.VectorMultiple(new Vector3(-0.5f, 1f, -0.5f), boxSize), transform.parent.position + EffectiveUtility.VectorMultiple(new Vector3(0.5f, 1f, -0.5f), boxSize), transform.parent.position + EffectiveUtility.VectorMultiple(new Vector3(0.5f, 1f, 0.5f), boxSize), transform.parent.position + EffectiveUtility.VectorMultiple(new Vector3(-0.5f, 0f, -0.5f), boxSize), transform.parent.position + EffectiveUtility.VectorMultiple(new Vector3(0.5f, 0f, -0.5f), boxSize), transform.parent.position + EffectiveUtility.VectorMultiple(new Vector3(0.5f, 0f, 0.5f), boxSize) }; Gizmos.color = new Color(0.1f, 0.9f, 0.1f); Gizmos.DrawLine(Isometric.TranslationIsometricToScreen(box[0]), Isometric.TranslationIsometricToScreen(box[1])); Gizmos.DrawLine(Isometric.TranslationIsometricToScreen(box[1]), Isometric.TranslationIsometricToScreen(box[2])); Gizmos.DrawLine(Isometric.TranslationIsometricToScreen(box[2]), Isometric.TranslationIsometricToScreen(box[3])); Gizmos.DrawLine(Isometric.TranslationIsometricToScreen(box[3]), Isometric.TranslationIsometricToScreen(box[0])); Gizmos.DrawLine(Isometric.TranslationIsometricToScreen(box[1]), Isometric.TranslationIsometricToScreen(box[4])); Gizmos.DrawLine(Isometric.TranslationIsometricToScreen(box[2]), Isometric.TranslationIsometricToScreen(box[5])); Gizmos.DrawLine(Isometric.TranslationIsometricToScreen(box[3]), Isometric.TranslationIsometricToScreen(box[6])); Gizmos.DrawLine(Isometric.TranslationIsometricToScreen(box[4]), Isometric.TranslationIsometricToScreen(box[5])); Gizmos.DrawLine(Isometric.TranslationIsometricToScreen(box[5]), Isometric.TranslationIsometricToScreen(box[6])); Gizmos.color = Color.white; }
public void AddTile(Vector3 isoPos, GameObject go, bool activateLogic = false) { Vector3Int index = EffectiveUtility.IsoPositionToIndex(isoPos); if (!ContainsTile(index)) { if (_tileMap.Count == 0) { min = index; max = index; } else { min = EffectiveUtility.Min(min, index); max = EffectiveUtility.Min(max, index); } GameObject instance = Instantiate(go, isoPos, Quaternion.identity, _tileMapPivotObject.transform); if (instance.GetComponent <Character>()) { instance.GetComponent <Character>().enabled = activateLogic; } _tileMap.Add(index, instance); } }
public static Room CreateRoom(string roomName, Vector2Int index) { string jsonData = ResourceManager.GetResource <TextAsset>("Map/" + roomName).text; TileMapData data = JsonUtility.FromJson <TileMapData>(jsonData); Room room = new GameObject(roomName).AddComponent <Room>(); room.RoomIndex = index; room.RoomAllEntitys = new List <Character>(); room.RoomDoors = new List <Door>(); room.RoomWays = new List <MapWay>(); room.MapData = data; room.SupportDrawCount = data.mapDraw; room.SupportCostCount = data.mapCost; foreach (var pair in data.mapData.data) { room.LoadMapElement(EffectiveUtility.VectorMultiple(new Vector3(pair.index.x, pair.index.y, pair.index.z), Isometric.IsometricTileSize), ResourceManager.GetResource <GameObject>("Tiles/" + pair.tag)); } room.NavData = DynamicNavigation.Instance.BuildNavigation(room.transform); room.gameObject.SetActive(false); return(room); }
public void FromJson(TileData data, bool activateLogic = false) { DestroyMap(); CreatePivot(); foreach (var pair in data.data) { AddTile(EffectiveUtility.VectorMultiple(new Vector3(pair.index.x, pair.index.y, pair.index.z), Isometric.IsometricTileSize), ResourceManager.GetResource <GameObject>("Tiles/" + pair.tag), activateLogic); } }
public void RemoveTile(Vector3 isoPos) { Vector3Int index = EffectiveUtility.IsoPositionToIndex(isoPos); if (ContainsTile(index)) { GameObject instance = _tileMap[index]; Destroy(instance); _tileMap.Remove(index); } }
public GameObject GetTile(Vector3 isoPos) { Vector3Int index = EffectiveUtility.IsoPositionToIndex(isoPos); if (ContainsTile(index)) { return(_tileMap[index]); } else { return(null); } }
public void RemoveTile(Vector3 isoPos) { Vector3Int index = EffectiveUtility.IsoPositionToIndex(isoPos); if (ContainsTile(index)) { List <GameObject> objectList = _tileMap[index]; GameObject instance = objectList[objectList.Count - 1]; Destroy(instance); objectList.Remove(objectList[objectList.Count - 1]); if (objectList.Count == 0) { _tileMap.Remove(index); } } }
public bool ContainsTile(Vector3 isoPos) { Vector3Int index = EffectiveUtility.IsoPositionToIndex(isoPos); return(ContainsTile(index)); }