/** Called when a NavmeshCut or NavmeshAdd is enabled */ void HandleOnEnableCallback(GNavmeshClipper obj) { var graphSpaceBounds = obj.GetBounds(handler.graph.transform); var touchingTiles = handler.graph.GetTouchingTilesInGraphSpace(graphSpaceBounds); handler.gcuts.Add(obj, touchingTiles); obj.ForceUpdate(); }
void OnDisable() { if (handler != null) { GNavmeshClipper.RemoveEnableCallback(HandleOnEnableCallback, HandleOnDisableCallback); forcedReloadRects.Clear(); handler.graph.OnRecalculatedTiles -= OnRecalculatedTiles; } }
/** Called when a NavmeshCut or NavmeshAdd is disabled */ void HandleOnDisableCallback(GNavmeshClipper obj) { var root = handler.gcuts.GetRoot(obj); if (root != null) { forcedReloadRects.Add(root.previousBounds); handler.gcuts.Remove(obj); } lastUpdateTime = float.NegativeInfinity; }
/** Use the specified handler, will create one at start if not called */ public void UseSpecifiedHandler(TileHandler newHandler) { if (!enabled) { throw new System.InvalidOperationException("TileHandlerHelper is disabled"); } if (handler != null) { GNavmeshClipper.RemoveEnableCallback(HandleOnEnableCallback, HandleOnDisableCallback); handler.graph.OnRecalculatedTiles -= OnRecalculatedTiles; } handler = newHandler; if (handler != null) { GNavmeshClipper.AddEnableCallback(HandleOnEnableCallback, HandleOnDisableCallback); handler.graph.OnRecalculatedTiles += OnRecalculatedTiles; } }