您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

74 行
2.7 KiB

using System;
using System.Collections;
using System.IO;
using NUnit.Framework;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
using UnityEngine.Perception.GroundTruth;
using UnityEngine.SceneManagement;
using UnityEngine.TestTools;
namespace EditorTests
{
[TestFixture]
public class PerceptionCameraEditorTests
{
[UnityTest]
public IEnumerator EditorPause_DoesNotLogErrors()
{
int sceneCount = SceneManager.sceneCount;
for (int i = sceneCount - 1; i >= 0; i--)
{
EditorSceneManager.CloseScene(SceneManager.GetSceneAt(i), true);
}
EditorSceneManager.NewScene(NewSceneSetup.EmptyScene);
SetupCamera(ScriptableObject.CreateInstance<LabelingConfiguration>());
yield return new EnterPlayMode();
var expectedFirstFrame = Time.frameCount;
yield return null;
EditorApplication.isPaused = true;
//Wait a few editor frames to ensure the issue has a chance to trigger.
yield return null;
yield return null;
yield return null;
yield return null;
EditorApplication.isPaused = false;
var expectedLastFrame = Time.frameCount;
yield return null;
SimulationManager.ResetSimulation();
var capturesPath = Path.Combine(SimulationManager.OutputDirectory, "captures_000.json");
var capturesJson = File.ReadAllText(capturesPath);
for (int iFrameCount = expectedFirstFrame; iFrameCount <= expectedLastFrame; iFrameCount++)
{
var imagePath = Path.Combine(PerceptionCamera.RgbDirectory, $"rgb_{iFrameCount}").Replace(@"\", @"\\");
StringAssert.Contains(imagePath, capturesJson);
}
yield return new ExitPlayMode();
}
static void SetupCamera(LabelingConfiguration labelingConfiguration)
{
var cameraObject = new GameObject();
cameraObject.SetActive(false);
var camera = cameraObject.AddComponent<Camera>();
camera.orthographic = true;
camera.orthographicSize = 1;
#if HDRP_PRESENT
cameraObject.AddComponent<UnityEngine.Rendering.HighDefinition.HDAdditionalCameraData>();
#endif
var perceptionCamera = cameraObject.AddComponent<PerceptionCamera>();
perceptionCamera.captureRgbImages = true;
cameraObject.AddComponent<BoundingBoxLabeler>();
var renderedObjectInfoLabeler = cameraObject.AddComponent<RenderedObjectInfoLabeler>();
renderedObjectInfoLabeler.labelingConfiguration = labelingConfiguration;
cameraObject.SetActive(true);
}
}
}