コード例 #1
0
        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);
        }
コード例 #2
0
 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;
         }
     }
 }
コード例 #3
0
        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();
                    // }
                }
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 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;
     }
 }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        /// <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);
        }
コード例 #11
0
ファイル: TileChunkPool.cs プロジェクト: yabos/BattleHit
 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;
 }
コード例 #12
0
        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);
        }
コード例 #13
0
		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;
		}