private TileChunkLayer _CreateTileChunkLayer(int layer) { int rowTotalChunks = 1 + ((m_autoTileMap.MapTileWidth - 1) / k_TileChunkWidth); int colTotalChunks = 1 + ((m_autoTileMap.MapTileHeight - 1) / k_TileChunkHeight); int totalChunks = rowTotalChunks * colTotalChunks; TileChunkLayer chunkLayer = null; while (TileChunkLayers.Count <= layer) { chunkLayer = new TileChunkLayer(); chunkLayer.TileChunks = new TileChunk[totalChunks]; chunkLayer.ObjNode = new GameObject(); chunkLayer.ObjNode.transform.parent = transform; chunkLayer.ObjNode.transform.localPosition = Vector3.zero + new Vector3(0f, 0f, m_autoTileMap.MapLayers[TileChunkLayers.Count].Depth); chunkLayer.ObjNode.transform.localRotation = Quaternion.identity; chunkLayer.SortingOrder = m_autoTileMap.MapLayers[TileChunkLayers.Count].SortingOrder; chunkLayer.SortingLayer = m_autoTileMap.MapLayers[TileChunkLayers.Count].SortingLayer; chunkLayer.ObjNode.name = m_autoTileMap.MapLayers[TileChunkLayers.Count].Name + "_" + TileChunkLayers.Count; int defaultLayer = 0; m_dicDefaultLayerId.TryGetValue(chunkLayer.ObjNode.name, out defaultLayer); chunkLayer.ObjNode.layer = defaultLayer; TileChunkLayers.Add(chunkLayer); } return(chunkLayer); }
public void UpdateLayersData(bool isPlayMode) { for (int i = 0; i < TileChunkLayers.Count; ++i) { AutoTileMap.MapLayer mapLayer = m_autoTileMap.MapLayers[i]; TileChunkLayer tileChunkLayer = TileChunkLayers[i]; tileChunkLayer.ObjNode.SetActive(mapLayer.Visible); if (isPlayMode) { tileChunkLayer.ObjNode.transform.localPosition = Vector3.zero; } else { if (mapLayer.TileLayerIdx == 0) { tileChunkLayer.ObjNode.transform.localPosition = Vector3.zero; } else { tileChunkLayer.ObjNode.transform.localPosition = Vector3.zero + new Vector3(0f, 0f, -5 - mapLayer.TileLayerIdx); } tileChunkLayer.SortingLayer = mapLayer.SortingLayer; tileChunkLayer.SortingOrder = mapLayer.SortingOrder; } } }
public void BuildNavByMesh(ref List <NavMeshBuildSource> sources) { ShowAllChuck(); sources.Clear(); for (int i = 0; i < TileChunkLayers.Count; ++i) { if (i >= m_autoTileMap.MapSelect.TileData.Count) { continue; } var tileData = m_autoTileMap.MapSelect.TileData[i]; if (tileData.LayerType == eSlotAonTypeLayer.Ground) { TileChunkLayer tileChunkLayer = TileChunkLayers[i]; if (tileChunkLayer == null) { continue; } foreach (TileChunk tileChunk in tileChunkLayer.TileChunks) { if (tileChunk == null) { continue; } tileChunk.BuildNavByMesh(ref sources); } } else if (tileData.LayerType == eSlotAonTypeLayer.Overlay) { TileChunkLayer tileChunkLayer = TileChunkLayers[i]; if (tileChunkLayer == null) { continue; } foreach (TileChunk tileChunk in tileChunkLayer.TileChunks) { if (tileChunk == null) { continue; } tileChunk.BuildNavByMesh(ref sources); } } else if (tileData.LayerType == eSlotAonTypeLayer.Trigger) { // TileChunkLayer tileChunkLayer = TileChunkLayers[i]; // if(tileChunkLayer == null) continue; // foreach( TileChunk tileChunk in tileChunkLayer.TileChunks) // { // if(tileChunk == null) continue; // tileChunk.BuildMeshCollider(); // } } } }
private TileChunk _GetTileChunk(int tileX, int tileY, int layer) { TileChunkLayer chunkLayer = _GetTileChunkLayer(layer); int rowTotalChunks = 1 + ((m_autoTileMap.MapTileWidth - 1) / k_TileChunkWidth); int chunkIdx = (tileY / k_TileChunkHeight) * rowTotalChunks + (tileX / k_TileChunkWidth); TileChunk tileChunk = chunkLayer.TileChunks[chunkIdx]; return(tileChunk); }
public void UpdateLayersData( ) { for (int i = 0; i < TileChunkLayers.Count; ++i) { AutoTileMap.MapLayer mapLayer = m_autoTileMap.MapLayers[i]; TileChunkLayer tileChunkLayer = TileChunkLayers[i]; tileChunkLayer.ObjNode.SetActive(mapLayer.Visible); tileChunkLayer.ObjNode.transform.localPosition = Vector3.zero + new Vector3(0f, 0f, mapLayer.Depth); tileChunkLayer.SortingLayer = mapLayer.SortingLayer; tileChunkLayer.SortingOrder = mapLayer.SortingOrder; } }
private TileChunkLayer _CreateTileChunkLayer(int layer) { int rowTotalChunks = 1 + ((m_autoTileMap.MapTileWidth - 1) / k_TileChunkWidth); int colTotalChunks = 1 + ((m_autoTileMap.MapTileHeight - 1) / k_TileChunkHeight); int totalChunks = rowTotalChunks * colTotalChunks; TileChunkLayer chunkLayer = null; while (TileChunkLayers.Count <= layer) { chunkLayer = new TileChunkLayer(); chunkLayer.TileChunks = new TileChunk[totalChunks]; chunkLayer.ObjNode = new GameObject(); chunkLayer.ObjNode.transform.parent = transform; chunkLayer.ObjNode.transform.position = m_autoTileMap.TileLayerPosition[layer]; chunkLayer.ObjNode.name = "" + TileChunkLayers.Count; TileChunkLayers.Add(chunkLayer); } return(chunkLayer); }
private TileChunkLayer _CreateTileChunkLayer(int layer) { int rowTotalChunks = 1 + ((m_autoTileMap.MapTileWidth - 1) / k_TileChunkWidth); int colTotalChunks = 1 + ((m_autoTileMap.MapTileHeight - 1) / k_TileChunkHeight); int totalChunks = rowTotalChunks * colTotalChunks; TileChunkLayer chunkLayer = null; while (TileChunkLayers.Count <= layer) { chunkLayer = new TileChunkLayer(); chunkLayer.TileChunks = new TileChunk[totalChunks]; chunkLayer.ObjNode = new GameObject(); chunkLayer.ObjNode.transform.parent = transform; chunkLayer.ObjNode.transform.position = m_autoTileMap.transform.position + new Vector3(0f, 0f, m_autoTileMap.MapLayers[TileChunkLayers.Count].Depth); chunkLayer.SortingOrder = m_autoTileMap.MapLayers[TileChunkLayers.Count].SortingOrder; chunkLayer.SortingLayer = m_autoTileMap.MapLayers[TileChunkLayers.Count].SortingLayer; chunkLayer.ObjNode.name = m_autoTileMap.MapLayers[TileChunkLayers.Count].Name + "_" + TileChunkLayers.Count; TileChunkLayers.Add(chunkLayer); } return(chunkLayer); }
private TileChunk _GetTileChunk(int tileX, int tileY, int layer) { TileChunkLayer chunkLayer = _GetTileChunkLayer(layer); int rowTotalChunks = 1 + ((m_autoTileMap.MapTileWidth - 1) / k_TileChunkWidth); int chunkIdx = (tileY / k_TileChunkHeight) * rowTotalChunks + (tileX / k_TileChunkWidth); TileChunk tileChunk = chunkLayer.TileChunks[chunkIdx]; if (tileChunk == null) { int startTileX = tileX - tileX % k_TileChunkWidth; int startTileY = tileY - tileY % k_TileChunkHeight; GameObject chunkObj = new GameObject(); chunkObj.name = "TileChunk" + startTileX + "_" + startTileY; chunkObj.transform.parent = chunkLayer.ObjNode.transform; chunkObj.hideFlags = HideFlags.NotEditable; tileChunk = chunkObj.AddComponent <TileChunk>(); chunkLayer.TileChunks[chunkIdx] = tileChunk; tileChunk.Configure(m_autoTileMap, layer, startTileX, startTileY, k_TileChunkWidth, k_TileChunkHeight); } return(tileChunk); }
private TileChunkLayer _CreateTileChunkLayer(int layer) { int rowTotalChunks = 1 + ((m_autoTileMap.MapTileWidth - 1) / k_TileChunkWidth); int colTotalChunks = 1 + ((m_autoTileMap.MapTileHeight - 1) / k_TileChunkHeight); int totalChunks = rowTotalChunks * colTotalChunks; TileChunkLayer chunkLayer = null; while (TileChunkLayers.Count <= layer) { chunkLayer = new TileChunkLayer(); chunkLayer.TileChunks = new TileChunk[totalChunks]; chunkLayer.ObjNode = new GameObject(); chunkLayer.ObjNode.transform.parent = transform; // chunkLayer.ObjNode.transform.localPosition = Vector3.zero + new Vector3(0f, 0f, m_autoTileMap.MapLayers[TileChunkLayers.Count].Depth); if (TileChunkLayers.Count == 0) { chunkLayer.ObjNode.transform.localPosition = Vector3.zero; } else { chunkLayer.ObjNode.transform.localPosition = Vector3.zero + new Vector3(0f, 0f, -5 - TileChunkLayers.Count); } chunkLayer.ObjNode.transform.localRotation = Quaternion.identity; chunkLayer.SortingOrder = m_autoTileMap.MapLayers[TileChunkLayers.Count].SortingOrder; chunkLayer.SortingLayer = m_autoTileMap.MapLayers[TileChunkLayers.Count].SortingLayer; chunkLayer.ObjNode.name = m_autoTileMap.MapLayers[TileChunkLayers.Count].Name + "_" + TileChunkLayers.Count; for (int i = 0; i < totalChunks; i++) { int startTileX = (i % rowTotalChunks) * k_TileChunkWidth; int startTileY = (i / rowTotalChunks) * k_TileChunkHeight; chunkLayer.TileChunks[i] = _CreateTileChunk(startTileX, startTileY, TileChunkLayers.Count, chunkLayer); } TileChunkLayers.Add(chunkLayer); } return(chunkLayer); }
/// <summary> /// Mark all tilechunks of a layer to be updated /// </summary> /// <param name="layer"></param> public void MarkLayerChunksForUpdate(int layer) { TileChunkLayer chunkLayer = _GetTileChunkLayer(layer); m_tileChunkToBeUpdated.AddRange(chunkLayer.TileChunks); }
private TileChunkLayer _CreateTileChunkLayer( int layer ) { int rowTotalChunks = 1 + ((m_autoTileMap.MapTileWidth - 1) / k_TileChunkWidth); int colTotalChunks = 1 + ((m_autoTileMap.MapTileHeight - 1) / k_TileChunkHeight); int totalChunks = rowTotalChunks * colTotalChunks; TileChunkLayer chunkLayer = null; while( TileChunkLayers.Count <= layer ) { chunkLayer = new TileChunkLayer(); chunkLayer.TileChunks = new TileChunk[ totalChunks ]; chunkLayer.ObjNode = new GameObject(); chunkLayer.ObjNode.transform.parent = transform; chunkLayer.ObjNode.transform.localPosition = Vector3.zero + new Vector3(0f, 0f, m_autoTileMap.MapLayers[TileChunkLayers.Count].Depth); chunkLayer.ObjNode.transform.localRotation = Quaternion.identity; chunkLayer.SortingOrder = m_autoTileMap.MapLayers[TileChunkLayers.Count].SortingOrder; chunkLayer.SortingLayer = m_autoTileMap.MapLayers[TileChunkLayers.Count].SortingLayer; chunkLayer.ObjNode.name = m_autoTileMap.MapLayers[TileChunkLayers.Count].Name + "_" + TileChunkLayers.Count; TileChunkLayers.Add( chunkLayer ); } return chunkLayer; }
private TileChunk _CreateTileChunk(int startTileX, int startTileY, int layer, TileChunkLayer chunkLayer) { GameObject chunkObj = new GameObject(); chunkObj.name = m_autoTileMap.MapLayers[layer].Name + "_" + startTileX + "_" + startTileY; chunkObj.transform.SetParent(chunkLayer.ObjNode.transform, false); chunkObj.layer = chunkLayer.ObjNode.layer; TileChunk tileChunk = chunkObj.AddComponent <TileChunk>(); tileChunk.Configure(m_autoTileMap, layer, startTileX, startTileY, k_TileChunkWidth, k_TileChunkHeight); return(tileChunk); }
private TileChunkLayer _CreateTileChunkLayer( int layer ) { int rowTotalChunks = 1 + ((m_autoTileMap.MapTileWidth - 1) / k_TileChunkWidth); int colTotalChunks = 1 + ((m_autoTileMap.MapTileHeight - 1) / k_TileChunkHeight); int totalChunks = rowTotalChunks * colTotalChunks; TileChunkLayer chunkLayer = null; while( TileChunkLayers.Count <= layer ) { chunkLayer = new TileChunkLayer(); chunkLayer.TileChunks = new TileChunk[ totalChunks ]; chunkLayer.ObjNode = new GameObject(); chunkLayer.ObjNode.transform.parent = transform; chunkLayer.ObjNode.transform.position = m_autoTileMap.TileLayerPosition[layer]; chunkLayer.ObjNode.name = ""+TileChunkLayers.Count; TileChunkLayers.Add( chunkLayer ); } return chunkLayer; }