public override bool UpdateNodes(TrinityGrid grid, Structures.Avoidance avoidance) { var actor = Core.Actors.RactorByRactorId <TrinityActor>(avoidance.RActorId); if (actor == null || !actor.IsValid) { return(false); } var part = avoidance.Definition.GetPart(actor.Animation); var radius = Math.Max(part.Radius, actor.Radius) * avoidance.Settings.DistanceMultiplier; var nonCachedRotation = actor.Rotation; var arcDegrees = Math.Max(15, part.AngleDegrees); var nodes = grid.GetConeAsNodes(actor.Position, arcDegrees, radius, nonCachedRotation); HandleNavigationGrid(grid, nodes.SelectMany(n => n.AdjacentNodes), avoidance, actor, radius); return(true); }
public void UpdateNodes(TrinityGrid grid, Structures.Avoidance avoidance) { foreach (var actor in avoidance.Actors) { try { var part = avoidance.Definition.GetPart(actor.Animation); if (actor.Animation != part.Animation) { continue; } var radius = Math.Max(part.Radius, actor.Radius) * avoidance.Settings.DistanceMultiplier; var nonCachedRotation = actor.Rotation; var arcDegrees = Math.Max(15, part.AngleDegrees); var nodes = grid.GetConeAsNodes(actor.Position, arcDegrees, radius, nonCachedRotation); grid.FlagAvoidanceNodes(nodes.SelectMany(n => n.AdjacentNodes), AvoidanceFlags.Avoidance, avoidance, 10); } catch (Exception ex) { Core.Logger.Debug($"AnimationConeAvoidanceHandler Exception for Actor: {actor.InternalName}. {ex}"); } } }