public void UpdatePlatforms() { // We need to duplicate everything to control updates of the launch data manually. LaunchingSegment = new TurnData(_currentTurn.CurrentTurn.Turn, _currentTurn.CurrentTurn.Impulse); LaunchingUnitPosition = _hexVectorUtility.CloneHexVector <HexGridCoordinate>(_launchingUnit.Position); TargetUnitPosition = _hexVectorUtility.CloneHexVector <HexGridCoordinate>(_targetUnit.Position); LaunchingUnitVelocity = _hexVectorUtility.CloneHexVector <RawHexVector>(_launchingUnit.Vectors); TargetUnitVelocity = _hexVectorUtility.CloneHexVector <RawHexVector>(_targetUnit.Vectors); CrossingVector = _hexGridCalculator.GetCrossingVector(LaunchingUnitVelocity, TargetUnitVelocity); TargetDistance = _hexGridCalculator.GetDistance(LaunchingUnitPosition, TargetUnitPosition); CourseOffset = 0; if (AvidVector.IsNullOrZero(TargetDistance)) { TargetDistance = _hexGridCalculator.GetVectorFromBacktracking(LaunchingUnitVelocity, TargetUnitVelocity); OnVerificationRequired(); } else { SubmitBearingVerificationResult(TargetDistance); } }
public void CheckBacktracking1() { var observerVelocity = new HexVector { PrimaryComponent = new HexVectorComponent(HexAxis.A, 6), SecondaryComponent = HexVectorComponent.Zero, VerticalComponent = HexVectorComponent.Zero }; var observedVelocity = new HexVector { PrimaryComponent = new HexVectorComponent(HexAxis.B, 5), SecondaryComponent = HexVectorComponent.Zero, VerticalComponent = HexVectorComponent.Zero }; var window = _calculator.GetVectorFromBacktracking(observerVelocity, observedVelocity); TestChecksUtility.CheckAvidWindow(window, AvidDirection.F, AvidRing.Ember, true); }