001// Copyright (c) FIRST and other WPILib contributors. 002// Open Source Software; you can modify and/or share it under the terms of 003// the WPILib BSD license file in the root directory of this project. 004 005package edu.wpi.first.wpilibj2.command; 006 007import java.util.Set; 008 009/** 010 * Schedules the given commands when this command is initialized. Useful for forking off from 011 * CommandGroups. Note that if run from a composition, the composition will not know about the 012 * status of the scheduled commands, and will treat this command as finishing instantly. 013 * 014 * <p>This class is provided by the NewCommands VendorDep 015 */ 016public class ScheduleCommand extends Command { 017 private final Set<Command> m_toSchedule; 018 019 /** 020 * Creates a new ScheduleCommand that schedules the given commands when initialized. 021 * 022 * @param toSchedule the commands to schedule 023 */ 024 public ScheduleCommand(Command... toSchedule) { 025 m_toSchedule = Set.of(toSchedule); 026 } 027 028 @Override 029 public void initialize() { 030 for (Command command : m_toSchedule) { 031 command.schedule(); 032 } 033 } 034 035 @Override 036 public boolean isFinished() { 037 return true; 038 } 039 040 @Override 041 public boolean runsWhenDisabled() { 042 return true; 043 } 044}