/// <summary> /// target content will be added or update it's possition if already added /// </summary> public static void Process(IChunkContent processedContent) { Bounds2DInt processedContentBounds = PathFinder.ToChunkPosition(processedContent.chunkContentBounds); ChunkContentMetaData metaData; if (content.TryGetValue(processedContent, out metaData)) { Bounds2DInt currentContentBounds = metaData.lastUpdate; if (currentContentBounds == processedContentBounds) { return; //nothing to change since it occupy same space } GetChunkRemoveContent(currentContentBounds, processedContent); IncludeBounds(processedContentBounds); GetChunkAddContent(processedContentBounds, processedContent); content[processedContent] = new ChunkContentMetaData(processedContentBounds); } else { if (init == false) { beforeInit.Add(processedContent); return; } IncludeBounds(processedContentBounds); GetChunkAddContent(processedContentBounds, processedContent); content[processedContent] = new ChunkContentMetaData(processedContentBounds); } }
/// <summary> /// target content will be added or update it's possition if already added /// </summary> public static void Process <T>(List <T> processedContentList) where T : IChunkContent { //Debug.Log(processedContentList.Count); if (processedContentList == null || processedContentList.Count == 0) { return; } Bounds2DInt first = PathFinder.ToChunkPosition(processedContentList[0].chunkContentBounds); int minX = first.minX, minZ = first.minY, maxX = first.maxX, maxZ = first.maxY; Bounds2DInt[] array = new Bounds2DInt[processedContentList.Count]; array[0] = first; for (int i = 1; i < processedContentList.Count; i++) { Bounds2DInt curRange = PathFinder.ToChunkPosition(processedContentList[i].chunkContentBounds); array[i] = curRange; if (minX > curRange.minX) { minX = curRange.minX; } if (minZ > curRange.minY) { minZ = curRange.minY; } if (maxX < curRange.maxX) { maxX = curRange.maxX; } if (maxZ < curRange.maxY) { maxZ = curRange.maxY; } } IncludeBounds(new Bounds2DInt(minX, minZ, maxX, maxZ)); for (int i = 0; i < processedContentList.Count; i++) { Bounds2DInt processedContentBounds = array[i]; IChunkContent processedContent = processedContentList[i]; ChunkContentMetaData metaData; if (content.TryGetValue(processedContent, out metaData)) { Bounds2DInt currentContentBounds = metaData.lastUpdate; if (currentContentBounds == processedContentBounds) { return; //nothing to change since it occupy same space } GetChunkRemoveContent(currentContentBounds, processedContent); GetChunkAddContent(processedContentBounds, processedContent); content[processedContent] = new ChunkContentMetaData(processedContentBounds); } else { if (init == false) { beforeInit.Add(processedContent); return; } GetChunkAddContent(processedContentBounds, processedContent); content[processedContent] = new ChunkContentMetaData(processedContentBounds); } } //SceneDebug(); }