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); }
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(); } } }