Exemple #1
0
        void SlavedAim()
        {
            Vector3 targetVel;
            Vector3 targetAccel;

            if (weaponManager.slavingTurrets)
            {
                targetPosition = weaponManager.slavedPosition;
                targetVel      = weaponManager.slavedVelocity;
                targetAccel    = weaponManager.slavedAcceleration;

                //targetPosition -= vessel.Velocity * predictedFlightTime;
            }
            else if (legacyGuardTarget)
            {
                targetPosition = legacyGuardTarget.CoM;
                targetVel      = legacyGuardTarget.Velocity();
                targetAccel    = legacyGuardTarget.acceleration;
            }
            else
            {
                targetInTurretView = false;
                return;
            }

            currentTgtRange = Vector3.Distance(targetPosition, rockets[0].parent.transform.position);

            targetPosition += trajectoryOffset;
            targetPosition += targetVel * predictedFlightTime;
            targetPosition += 0.5f * targetAccel * predictedFlightTime * predictedFlightTime;

            turret.AimToTarget(targetPosition);
            targetInTurretView = turret.TargetInRange(targetPosition, 2, maxTargetingRange);
        }
Exemple #2
0
        public void SlavedAim()
        {
            if (pausingAfterShot)
            {
                return;
            }

            turret.AimToTarget(slavedTargetPosition);
        }
        void UpdateModel()
        {
            //model rotation
            if (radarEnabled)
            {
                if (rotationTransform && canScan)
                {
                    Vector3 direction;
                    if (locked)
                    {
                        direction =
                            Quaternion.AngleAxis(canTrackWhileScan ? currentAngle : lockScanAngle, referenceTransform.up) *
                            referenceTransform.forward;
                    }
                    else
                    {
                        direction = Quaternion.AngleAxis(currentAngle, referenceTransform.up) * referenceTransform.forward;
                    }

                    Vector3 localDirection =
                        Vector3.ProjectOnPlane(rotationTransform.parent.InverseTransformDirection(direction), Vector3.up);
                    if (localDirection != Vector3.zero)
                    {
                        rotationTransform.localRotation = Quaternion.Lerp(rotationTransform.localRotation,
                                                                          Quaternion.LookRotation(localDirection, Vector3.up), 10 * TimeWarp.fixedDeltaTime);
                    }
                }

                //lock turret
                if (lockingTurret && canLock)
                {
                    if (locked)
                    {
                        lockingTurret.AimToTarget(lockedTarget.predictedPosition, lockingPitch, lockingYaw);
                    }
                    else
                    {
                        lockingTurret.ReturnTurret();
                    }
                }
            }
            else
            {
                if (rotationTransform)
                {
                    rotationTransform.localRotation = Quaternion.Lerp(rotationTransform.localRotation,
                                                                      Quaternion.identity, 5 * TimeWarp.fixedDeltaTime);
                }

                if (lockingTurret)
                {
                    lockingTurret.ReturnTurret();
                }
            }
        }