private void Update() { if (DoOverride) { if (transitionMode == TransitionManager.TransitionMode.Particle) { float timePassed = Time.timeSinceLevelLoad - StartTime; ComputeShader.SetFloat("deltaTime", Time.deltaTime); ComputeShader.SetFloat("direction", direction); ComputeShader.SetFloat("timePassedSinceStart", timePassed); if (state == 0) { ComputeShader.Dispatch(ComputeShader.FindKernel("CSMoveParticles1"), particleCount / 256, 1, 1); if (true) { state = 1; } } else if (state == 1) { ComputeShader.Dispatch(ComputeShader.FindKernel("CSMoveParticles2"), particleCount / 256, 1, 1); if (timePassed >= timeToCicle) { ComputeShader.SetFloat("inStart", timeToCicle); ComputeShader.SetFloat("inEnd", timeToCicle + timeInCirlce); state = 2; } } else if (state == 2) { ComputeShader.Dispatch(ComputeShader.FindKernel("CSMoveParticles3"), particleCount / 256, 1, 1); if (timePassed >= timeToCicle + timeInCirlce) { ComputeShader.SetFloat("backStartTime", timeToCicle + timeInCirlce); ComputeShader.SetFloat("backEndTime", timeToCicle + timeInCirlce + timeToEndPos); ComputeShader.Dispatch(ComputeShader.FindKernel("CSMoveParticlesSetOrigin"), particleCount / 256, 1, 1); state = 3; } } else if (state == 3) { ComputeShader.Dispatch(ComputeShader.FindKernel("CSMoveParticles4"), particleCount / 256, 1, 1); if (timePassed >= timeToCicle + timeInCirlce + timeToEndPos) { transitionManager.EndPhaseParticle(); } } //ComputeShader.Dispatch(ComputeShader.FindKernel("CSMoveParticles1"), particleCount / 256, 1, 1); } } }