Пример #1
0
        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;
                }
            }
        }