private void DockToConnector() { try { //log.Debug("Processing Dock Order"); //log.Debug(CurrentOrder.dockroute.Count()+" Number of dock Orders"); var preDockLocation = CurrentOrder.dockroute[CurrentOrder.DockRouteIndex]; if (preDockLocation != null) { var remoteControl = shipComponents.ControlUnits.FirstOrDefault(); var connector = shipComponents.Connectors.First(); var myloc = remoteControl.GetPosition(); var connectorAdjustrange = (connector.GetPosition() - remoteControl.GetPosition()).Length(); if (connector.Status != MyShipConnectorStatus.Connected) { log.Debug("Dock cp2"); var distanceFromCPK1 = (myloc - preDockLocation).Length(); if (distanceFromCPK1 <= .5 && CurrentOrder.DockRouteIndex > (int)connectorAdjustrange) { CurrentOrder.DockRouteIndex--; } var distanceFromConnector = (myloc - CurrentOrder.PrimaryLocation).Length(); if (distanceFromConnector < 10) { log.Debug("Dock cp3: " + distanceFromConnector + " " + connector.Status); connector.GetActionWithName("OnOff_On").Apply(connector); log.Debug("Connecter Status: " + connector.Status); connector.Connect(); } log.Debug("dockpos: " + preDockLocation); log.Debug("endpos: " + CurrentOrder.PrimaryLocation); navigationSystems.DockApproach(myloc, preDockLocation); navigationSystems.AlignAgainstGravity(); navigationSystems.AlignUp(navigationSystems.RemoteControl.GetPosition() + (CurrentOrder.ThirdLocation * 400)); } else { navigationSystems.EnableDockedMode(); } } else { log.Error("No Predock Location"); navigationSystems.SlowDown(); } } catch (Exception e) { log.Error("In Dock\n" + e.Message + "\n" + e.StackTrace); } }