public bool ValidateActions() { bool result = true; SortActionsByStartTime(NextActions); for (int i = 0; i < NextActions.Count; ++i) { WorldAction nextAction = NextActions[i]; if (nextAction.GetEndTime() != nextAction.StartAt + nextAction.Duration) { result = false; break; } if (ActualWorldAction != null && nextAction.StartAt < ActualWorldAction.GetEndTime()) { result = false; break; } if (i < NextActions.Count - 1) { if (NextActions[i + 1].StartAt.HasValue && NextActions[i + 1].StartAt < nextAction.GetEndTime()) { result = false; break; } } } return(result); }