public IEnumerator CreateAssetAndComponentTotalTime() { EditorApplication.ExecuteMenuItem("Window/General/Game"); var graph = MakeTemporaryGraph(); var spawnerContext = ScriptableObject.CreateInstance <VFXBasicSpawner>(); var constantRate = ScriptableObject.CreateInstance <VFXSpawnerConstantRate>(); // Attach to a valid particle system so that spawner is compiled var initContext = ScriptableObject.CreateInstance <VFXBasicInitialize>(); var outputContext = ScriptableObject.CreateInstance <VFXPointOutput>(); spawnerContext.LinkTo(initContext); initContext.LinkTo(outputContext); var slotRate = constantRate.GetInputSlot(0); var totalTime = VFXLibrary.GetOperators().First(o => o.name == VFXExpressionOperation.TotalTime.ToString()).CreateInstance(); slotRate.Link(totalTime.GetOutputSlot(0)); spawnerContext.AddChild(constantRate); graph.AddChild(spawnerContext); graph.RecompileIfNeeded(); var expressionIndex = graph.FindReducedExpressionIndexFromSlotCPU(slotRate); var gameObj = new GameObject("CreateAssetAndComponentDebugExpressionTest"); var vfxComponent = gameObj.AddComponent <VisualEffect>(); vfxComponent.visualEffectAsset = graph.visualEffectResource.asset; var cameraObj = new GameObject("CreateAssetAndComponentSpawner_Camera"); var camera = cameraObj.AddComponent <Camera>(); camera.transform.localPosition = Vector3.one; camera.transform.LookAt(vfxComponent.transform); int maxFrame = 512; while (vfxComponent.culled && --maxFrame > 0) { yield return(null); } Assert.IsTrue(maxFrame > 0); maxFrame = 512; while (!(VisualEffectUtility.GetExpressionFloat(vfxComponent, expressionIndex) > 0.01f) && --maxFrame > 0) { yield return(null); } Assert.IsTrue(maxFrame > 0); UnityEngine.Object.DestroyImmediate(gameObj); UnityEngine.Object.DestroyImmediate(cameraObj); }
public IEnumerator Create_Asset_And_Component_Check_Expected_TotalTime() { EditorApplication.ExecuteMenuItem("Window/General/Game"); var graph = MakeTemporaryGraph(); var spawnerContext = ScriptableObject.CreateInstance <VFXBasicSpawner>(); var constantRate = ScriptableObject.CreateInstance <VFXSpawnerConstantRate>(); // Attach to a valid particle system so that spawner is compiled var initContext = ScriptableObject.CreateInstance <VFXBasicInitialize>(); var outputContext = ScriptableObject.CreateInstance <VFXPointOutput>(); graph.AddChild(initContext); graph.AddChild(outputContext); spawnerContext.LinkTo(initContext); initContext.LinkTo(outputContext); var slotRate = constantRate.GetInputSlot(0); string opName = ObjectNames.NicifyVariableName(VFXExpressionOperation.TotalTime.ToString()); var totalTime = VFXLibrary.GetOperators().First(o => o.name == opName).CreateInstance(); slotRate.Link(totalTime.GetOutputSlot(0)); spawnerContext.AddChild(constantRate); graph.AddChild(spawnerContext); graph.RecompileIfNeeded(); var expressionIndex = graph.FindReducedExpressionIndexFromSlotCPU(slotRate); while (m_gameObject.GetComponent <VisualEffect>() != null) { UnityEngine.Object.DestroyImmediate(m_gameObject.GetComponent <VisualEffect>()); } var vfxComponent = m_gameObject.AddComponent <VisualEffect>(); vfxComponent.visualEffectAsset = graph.visualEffectResource.asset; int maxFrame = 512; while (vfxComponent.culled && --maxFrame > 0) { yield return(null); } Assert.IsTrue(maxFrame > 0); maxFrame = 512; while (!(VisualEffectUtility.GetExpressionFloat(vfxComponent, expressionIndex) > 0.01f) && --maxFrame > 0) { yield return(null); } Assert.IsTrue(maxFrame > 0); }
public IEnumerator Create_Asset_And_Component_Check_Expected_TotalTime() { yield return(new EnterPlayMode()); var graph = VFXTestCommon.MakeTemporaryGraph(); var spawnerContext = ScriptableObject.CreateInstance <VFXBasicSpawner>(); var constantRate = ScriptableObject.CreateInstance <VFXSpawnerConstantRate>(); // Attach to a valid particle system so that spawner is compiled var initContext = ScriptableObject.CreateInstance <VFXBasicInitialize>(); var outputContext = ScriptableObject.CreateInstance <VFXPointOutput>(); graph.AddChild(initContext); graph.AddChild(outputContext); spawnerContext.LinkTo(initContext); initContext.LinkTo(outputContext); var slotRate = constantRate.GetInputSlot(0); var totalTime = GetTotalTimeOperator().CreateInstance(); slotRate.Link(totalTime.GetOutputSlot(0)); spawnerContext.AddChild(constantRate); graph.AddChild(spawnerContext); AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(graph)); var expressionIndex = graph.FindReducedExpressionIndexFromSlotCPU(slotRate); while (m_gameObject.GetComponent <VisualEffect>() != null) { UnityEngine.Object.DestroyImmediate(m_gameObject.GetComponent <VisualEffect>()); } var vfxComponent = m_gameObject.AddComponent <VisualEffect>(); vfxComponent.visualEffectAsset = graph.visualEffectResource.asset; int maxFrame = 512; while (vfxComponent.culled && --maxFrame > 0) { yield return(null); } Assert.IsTrue(maxFrame > 0); maxFrame = 512; while (!(VisualEffectUtility.GetExpressionFloat(vfxComponent, expressionIndex) > 0.01f) && --maxFrame > 0) { yield return(null); } Assert.IsTrue(maxFrame > 0); yield return(new ExitPlayMode()); }