diff --git a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/Command.java b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/Command.java index f87e9ea4a96..624a132051f 100644 --- a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/Command.java +++ b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/Command.java @@ -233,7 +233,7 @@ public ParallelRaceGroup onlyWhile(BooleanSupplier condition) { public SequentialCommandGroup after(BooleanSupplier condition) { // if we want this to bypass the `WaitUntilCommand` if the condition is already true, // we can use a conditional command but it proposes some compositional issues - return new SequentialCommandGroup(new WaitUntilCommand(condition), this); + return beforeStarting(new WaitUntilCommand(condition)); } /** @@ -249,7 +249,7 @@ public SequentialCommandGroup after(BooleanSupplier condition) { * @return the decorated command */ public SequentialCommandGroup afterSeconds(double seconds) { - return new SequentialCommandGroup(new WaitCommand(seconds), this); + return beforeStarting(new WaitCommand(seconds)); } /** diff --git a/wpilibNewCommands/src/main/native/cpp/frc2/command/CommandPtr.cpp b/wpilibNewCommands/src/main/native/cpp/frc2/command/CommandPtr.cpp index f4515e73553..8ac6accd41a 100644 --- a/wpilibNewCommands/src/main/native/cpp/frc2/command/CommandPtr.cpp +++ b/wpilibNewCommands/src/main/native/cpp/frc2/command/CommandPtr.cpp @@ -167,20 +167,12 @@ CommandPtr CommandPtr::OnlyIf(std::function condition) && { CommandPtr CommandPtr::After(std::function condition) && { AssertValid(); - std::vector> temp; - temp.emplace_back(std::make_unique(std::move(condition))); - temp.emplace_back(std::move(m_ptr)); - m_ptr = std::make_unique(std::move(temp)); - return std::move(*this); + return std::move(*this).BeforeStarting(std::make_unique(std::move(condition))); } CommandPtr CommandPtr::AfterTime(units::second_t duration) && { AssertValid(); - std::vector> temp; - temp.emplace_back(std::make_unique(duration)); - temp.emplace_back(std::move(m_ptr)); - m_ptr = std::make_unique(std::move(temp)); - return std::move(*this); + return std::move(*this).BeforeStarting(std::make_unique(duration)); } CommandPtr CommandPtr::DeadlineWith(CommandPtr&& parallel) && {