public HumanTaskDefEscalationToPartAddedEvent(string id, string aggregateId, int version, string deadlineId, string escalationId, ToPart toPart, DateTime updateDateTime) : base(id, aggregateId, version) { DeadlineId = deadlineId; EscalationId = escalationId; ToPart = toPart; UpdateDateTime = updateDateTime; }
public static ToPartResult ToDto(ToPart p) { return(new ToPartResult { Expression = p.Expression, Name = p.Name }); }
internal void CrewTransferAction() { try { // Both parts have internal models... if (FromPart.internalModel != null && ToPart.internalModel != null) { if (ToSeat.taken) { // Remove the crew members from the part(s)... RemoveCrewMember(FromCrewMember, FromPart); // Swap places if there is no standing room available if (ToPart.CrewCapacity == ToPart.protoModuleCrew.Count) { RemoveCrewMember(ToCrewMember, ToPart); FromPart.AddCrewmemberAt(ToCrewMember, FromPart.internalModel.seats.IndexOf(FromSeat)); // Add the crew members back into the part(s) at their new seats. ToPart.AddCrewmemberAt(FromCrewMember, ToPart.internalModel.seats.IndexOf(ToSeat)); } else { // Just move. RemoveCrewMember(FromCrewMember, FromPart); AddCrewMember(FromCrewMember, ToPart); } SMAddon.FireEventTriggers(); } else { // Just move. RemoveCrewMember(FromCrewMember, FromPart); ToPart.AddCrewmemberAt(FromCrewMember, ToPart.internalModel.seats.IndexOf(ToSeat)); SMAddon.FireEventTriggers(); } } else // one or both parts do not have an internal model { // no portraits, so let's just move kerbals... if (ToCrewMember != null) { RemoveCrewMember(FromCrewMember, FromPart); RemoveCrewMember(ToCrewMember, ToPart); AddCrewMember(FromCrewMember, ToPart); AddCrewMember(ToCrewMember, FromPart); } else { RemoveCrewMember(FromCrewMember, FromPart); AddCrewMember(FromCrewMember, ToPart); } SMAddon.FireEventTriggers(); } if (SMSettings.EnableStockCrewXfer) { // Now let's deal with third party mod support... SourceAction = new GameEvents.HostedFromToAction <ProtoCrewMember, Part>(FromCrewMember, FromPart, ToPart); FireSourceXferEvent = true; //If a swap, we need to handle that too... if (ToCrewMember != null) { TargetAction = new GameEvents.HostedFromToAction <ProtoCrewMember, Part>(ToCrewMember, ToPart, FromPart); FireTargetXferEvent = true; } } FromPart.vessel.SpawnCrew(); // not sure if these help. We have been experiencing issues with "ghost" kerbals & EVAs/docking/undocking after Crew Moves. // trying this to see if it "cleans up" any internal tracking inside of KSP... FromPart.RegisterCrew(); ToPart.RegisterCrew(); SMAddon.SmVessel.RespawnCrew(); SMAddon.SmVessel.TransferCrewObj.IvaDelayActive = true; } catch (Exception ex) { SmUtils.LogMessage( $"in CrewTransferAction. Error moving crewmember. Error: {ex.Message} \r\n\r\n{ex.StackTrace}", SmUtils.LogType.Error, true); } }