using System; using Unity.Simulation; using UnityEngine.Perception.GroundTruth; namespace UnityEngine.Perception.Randomization.Scenarios { /// /// A scenario must derive from this class to be compatible with the Run in /// Unity Simulation window. The iterations of this scenario will be executed in parallel across a user specified /// number of worker instances when run in Unity Simulation. /// /// The type of scenario constants to serialize public abstract class UnitySimulationScenario : PerceptionScenario where T : UnitySimulationScenarioConstants, new() { /// protected override bool isScenarioReadyToStart { get { if (!Configuration.Instance.IsSimulationRunningInCloud() && !m_SkippedFirstFrame) { m_SkippedFirstFrame = true; return false; } return true; } } /// protected sealed override bool isScenarioComplete => currentIteration >= constants.totalIterations; /// protected override void OnConfigurationImport() { if (Configuration.Instance.IsSimulationRunningInCloud()) { DeserializeFromFile(new Uri(Configuration.Instance.SimulationConfig.app_param_uri).LocalPath); constants.instanceIndex = int.Parse(Configuration.Instance.GetInstanceId()) - 1; // Debug.Log($"SS - NOT SETTING - SEE IF WE GET the ADVAPI ERROR"); Debug.Log($"SS - Scenario Import - Setting player prefs ouput format mode: {constants.outputFormat}"); PlayerPrefs.SetString(SimulationState.outputFormatMode, constants.outputFormat); } else base.OnConfigurationImport(); currentIteration = constants.instanceIndex; } /// protected sealed override void IncrementIteration() { currentIteration += constants.instanceCount; } } }