AsyncToggler.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /**
  2. * Copyright(c) Live2D Inc. All rights reserved.
  3. *
  4. * Use of this source code is governed by the Live2D Open Software license
  5. * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
  6. */
  7. using Live2D.Cubism.Framework.Tasking;
  8. using UnityEngine;
  9. namespace Live2D.Cubism.Samples.AsyncBenchmark
  10. {
  11. /// <summary>
  12. /// Shows how to enable the <see cref="CubismBuiltinAsyncTaskHandler"/> from script.
  13. /// </summary>
  14. public sealed class AsyncToggler : MonoBehaviour
  15. {
  16. /// <summary>
  17. /// Controls async task handling.
  18. /// </summary>
  19. public bool EnableAsync = true;
  20. /// <summary>
  21. /// Last <see cref="EnableAsync"/> state.
  22. /// </summary>
  23. private bool LastEnableSync { get; set; }
  24. #region Unity Event Handling
  25. /// <summary>
  26. /// Called by Unity. Enables/Disables async task handler.
  27. /// </summary>
  28. private void Update()
  29. {
  30. if (EnableAsync == LastEnableSync)
  31. {
  32. return;
  33. }
  34. if (EnableAsync)
  35. {
  36. CubismBuiltinAsyncTaskHandler.Activate();
  37. }
  38. else
  39. {
  40. CubismBuiltinAsyncTaskHandler.Deactivate();
  41. }
  42. LastEnableSync = EnableAsync;
  43. }
  44. /// <summary>
  45. /// Called by Unity. Disables async task handler.
  46. /// </summary>
  47. private void OnDestroy()
  48. {
  49. EnableAsync = false;
  50. Update();
  51. }
  52. #endregion
  53. }
  54. }