| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | /** * Copyright(c) Live2D Inc. All rights reserved. * * Use of this source code is governed by the Live2D Open Software license * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. */using Live2D.Cubism.Core;using System.Collections.Generic;using UnityEngine;namespace Live2D.Cubism.Framework{    [ExecuteInEditMode]    public class CubismUpdateController : MonoBehaviour    {        /// <summary>        /// The action of cubism component late update.        /// </summary>        private System.Action _onLateUpdate;        /// <summary>        /// Refresh delegate manager.        /// </summary>        public void Refresh()        {            var model = this.FindCubismModel();            // Fail silently...            if (model == null)            {                return;            }            // Set the null value when refreshed UpdateController to avoid duplicated registering.            _onLateUpdate = null;            // Set delegate.            var components = model.GetComponents<ICubismUpdatable>();            var sortedComponents = new List<ICubismUpdatable>(components);            CubismUpdateExecutionOrder.SortByExecutionOrder(sortedComponents);            foreach(var component in sortedComponents)            {#if UNITY_EDITOR                if (!Application.isPlaying && !component.NeedsUpdateOnEditing)                {                    continue;                }#endif                _onLateUpdate += component.OnLateUpdate;            }        }        #region Unity Event Handling        /// <summary>        /// Called by Unity.        /// </summary>        private void Start()        {            Refresh();        }        /// <summary>        /// Called by Unity.        /// </summary>        private void LateUpdate()        {            // Cubism late update.            if(_onLateUpdate != null)            {                _onLateUpdate();            }        }        #endregion    }}
 |