// Token: 0x060005EB RID: 1515 RVA: 0x00037D0C File Offset: 0x0003610C public void LoadTile(TileHandler.TileType tile, int x, int z, int rotation, int yoffset) { if (tile == null) { throw new ArgumentNullException("tile"); } if (AstarPath.active == null) { return; } int index = x + z * this.graph.tileXCount; rotation %= 4; if (this.isBatching && this.reloadedInBatch[index] && this.activeTileOffsets[index] == yoffset && this.activeTileRotations[index] == rotation && this.activeTileTypes[index] == tile) { return; } if (this.isBatching) { this.reloadedInBatch[index] = true; } this.activeTileOffsets[index] = yoffset; this.activeTileRotations[index] = rotation; this.activeTileTypes[index] = tile; AstarPath.active.AddWorkItem(new AstarPath.AstarWorkItem(delegate(bool force) { if (this.activeTileOffsets[index] != yoffset || this.activeTileRotations[index] != rotation || this.activeTileTypes[index] != tile) { return(true); } GraphModifier.TriggerEvent(GraphModifier.EventType.PreUpdate); Int3[] verts; int[] tris; tile.Load(out verts, out tris, rotation, yoffset); Bounds tileBounds = this.graph.GetTileBounds(x, z, tile.Width, tile.Depth); Int3 @int = (Int3)tileBounds.min; @int = -@int; Int3[] array = null; int[] array2 = null; int num; int num2; this.CutPoly(verts, tris, ref array, ref array2, out num, out num2, null, @int, tileBounds, (TileHandler.CutMode) 3, 0); this.DelaunayRefinement(array, array2, ref num, ref num2, true, false, -@int); if (num2 != array2.Length) { array2 = TileHandler.ShrinkArray <int>(array2, num2); } if (num != array.Length) { array = TileHandler.ShrinkArray <Int3>(array, num); } int w = (rotation % 2 != 0) ? tile.Depth : tile.Width; int d = (rotation % 2 != 0) ? tile.Width : tile.Depth; this.graph.ReplaceTile(x, z, w, d, array, array2, false); GraphModifier.TriggerEvent(GraphModifier.EventType.PostUpdate); AstarPath.active.QueueWorkItemFloodFill(); return(true); })); }
// Token: 0x060029BC RID: 10684 RVA: 0x001C4000 File Offset: 0x001C2200 public void LoadTile(TileHandler.TileType tile, int x, int z, int rotation, int yoffset) { if (tile == null) { throw new ArgumentNullException("tile"); } if (AstarPath.active == null) { return; } int index = x + z * this.tileXCount; rotation %= 4; if (this.isBatching && this.reloadedInBatch[index] && this.activeTileOffsets[index] == yoffset && this.activeTileRotations[index] == rotation && this.activeTileTypes[index] == tile) { return; } this.reloadedInBatch[index] |= this.isBatching; this.activeTileOffsets[index] = yoffset; this.activeTileRotations[index] = rotation; this.activeTileTypes[index] = tile; AstarPath.active.AddWorkItem(new AstarWorkItem(delegate(IWorkItemContext context, bool force) { if (this.activeTileOffsets[index] != yoffset || this.activeTileRotations[index] != rotation || this.activeTileTypes[index] != tile) { return(true); } GraphModifier.TriggerEvent(GraphModifier.EventType.PreUpdate); Int3[] verts; int[] tris; tile.Load(out verts, out tris, rotation, yoffset); TileHandler.CuttingResult cuttingResult = this.CutPoly(verts, tris, null, this.graph.transform, new IntRect(x, z, x + tile.Width - 1, z + tile.Depth - 1), TileHandler.CutMode.CutAll | TileHandler.CutMode.CutDual, -1); int num = cuttingResult.tris.Length; this.DelaunayRefinement(cuttingResult.verts, cuttingResult.tris, ref num, true, false); if (num != cuttingResult.tris.Length) { cuttingResult.tris = Memory.ShrinkArray <int>(cuttingResult.tris, num); } int num2 = (rotation % 2 == 0) ? tile.Width : tile.Depth; int num3 = (rotation % 2 == 0) ? tile.Depth : tile.Width; if (num2 != 1 || num3 != 1) { throw new Exception("Only tiles of width = depth = 1 are supported at this time"); } this.graph.ReplaceTile(x, z, cuttingResult.verts, cuttingResult.tris); if (!this.isBatching) { GraphModifier.TriggerEvent(GraphModifier.EventType.PostUpdate); } context.QueueFloodFill(); return(true); })); }