コード例 #1
0
        public void OnTargetFound(HaE_Entity target)
        {
            Vector3D targetPos = target.entityInfo.Position;

            if (mode == CurrentMode.Idle || mode == CurrentMode.Launching)
            {
                return;
            }
            else if (mode == CurrentMode.TurretGuided)
            {
                if (target.trackingType != HaE_Entity.TrackingType.Turret)
                {
                    return;
                }
            }
            else if (mode == CurrentMode.LidarGuided)
            {
                if (target.trackingType != HaE_Entity.TrackingType.Lidar)
                {
                    return;
                }

                if (target.entityInfo.HitPosition.HasValue)
                {
                    targetPos = target.entityInfo.HitPosition.Value;
                }
            }

            if ((target.entityInfo.Relationship != MyRelationsBetweenPlayerAndBlock.Enemies) &&
                (target.entityInfo.Relationship != MyRelationsBetweenPlayerAndBlock.Neutral) &&
                (target.entityInfo.Relationship != MyRelationsBetweenPlayerAndBlock.NoOwnership))
            {
                return;
            }

            double distSq = Vector3D.DistanceSquared(Me.GetPosition(), targetPos);

            payload.UpdateDist(distSq);

            Vector3D reqDir = proNav.Navigate(target);
            double   reqMag = reqDir.Normalize();

            controlModule.AimMissile(reqDir);

            controlModule.ApplyThrust(reqDir);
        }