#include "Episode/EpisodeSubSystem.h" UEpisodeSubSystem::UEpisodeSubSystem() { } void UEpisodeSubSystem::Initialize(FSubsystemCollectionBase& Collection) { Super::Initialize(Collection); } void UEpisodeSubSystem::Deinitialize() { Super::Deinitialize(); } void UEpisodeSubSystem::Tick(float DeltaTime) { // if capture has started if (!bIsCapturing) return; // Flow that we need to figure out // ProceduralSceneController - is object spawned? -> If not spawn it // if object spawned && !robot.hasTarget -> Robot -> SetTarget // if object.IsSpawned && robot.hasTarget -> Capture and send data // ProceduralSceneController -> is object collected? // How to reset the episode? } void UEpisodeSubSystem::StartNewEpisode() { // Noah // Configure the DataTransfer -> Use CurrentRobot->Cameras // Start the Capture // Make specs for JB to add API on the robot data // JB // Find the current Robot in Scene // Store as CurrentRobot // Order the robot to go fetch an object // Both of us once we finished our own tasks and synced // - Spawn the shape at random locations -> might need another controller like ProceduralSceneSubSystem? // - Add the timestamp debug component on the scene to check if the rendered frame and the data are in sync // TODO Which Tick is responsible of the scene capture? bIsCapturing = true; }