public static void UpdateLineOfSight(TrinityActor actor) { var grid = TrinityGrid.GetUnsafeGrid(); if (grid == null) { return; } if (actor.Position != Vector3.Zero && grid.GridBounds != 0) { var inLineOfSight = grid.CanRayCast(Core.Player.Position, actor.Position); actor.IsInLineOfSight = inLineOfSight; if (!actor.HasBeenInLoS && inLineOfSight) { actor.HasBeenInLoS = true; } if (inLineOfSight) { actor.IsWalkable = grid.CanRayWalk(actor); if (actor.IsWalkable) { actor.HasBeenWalkable = true; } } else { actor.IsWalkable = false; } } }