コード例 #1
0
ファイル: TriggerSystem.cs プロジェクト: jturp/RivalAI
        public bool IsPlayerNearby(TriggerProfile control, bool playerOutsideDistance = false)
        {
            IMyPlayer player = null;

            var remotePosition = Vector3D.Transform(control.PlayerNearPositionOffset, RemoteControl.WorldMatrix);

            if (control.MinPlayerReputation != -1501 || control.MaxPlayerReputation != 1501)
            {
                player = TargetHelper.GetClosestPlayerWithReputation(remotePosition, _owner.FactionId, control);
            }
            else
            {
                player = TargetHelper.GetClosestPlayer(remotePosition);
            }

            if (player == null)
            {
                //Logger.MsgDebug(control.ProfileSubtypeId + ": No Eligible Player for PlayerNear Check", DebugTypeEnum.Trigger);
                return(false);
            }

            var playerDist = Vector3D.Distance(player.GetPosition(), remotePosition);

            if (playerOutsideDistance)
            {
                if (playerDist < control.TargetDistance)
                {
                    return(false);
                }
            }
            else
            {
                if (playerDist > control.TargetDistance)
                {
                    return(false);
                }
            }



            if (control.InsideAntenna == true)
            {
                var antenna = _behavior.Grid.GetAntennaWithHighestRange(control.InsideAntennaName);

                if (antenna != null)
                {
                    playerDist = Vector3D.Distance(player.GetPosition(), antenna.GetPosition());
                    if (playerDist > antenna.Radius)
                    {
                        return(false);
                    }
                }
                else
                {
                    return(false);
                }
            }

            return(true);
        }