/** * 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; using UnityEngine; namespace Live2D.Cubism.Framework { public abstract class CubismInspectorAbstract : MonoBehaviour, ICubismUpdatable { /// /// Called by cubism update controller. Order to invoke OnLateUpdate. /// public abstract int ExecutionOrder { get; } /// /// Called by cubism update controller. Needs to invoke OnLateUpdate on Editing. /// public bool NeedsUpdateOnEditing => false; /// /// Model has cubism update controller component. /// public bool HasUpdateController { get; set; } /// /// Called by cubism update controller. Updates controller. /// public abstract void OnLateUpdate(); #if UNITY_EDITOR /// /// CubismModel cache. /// [NonSerialized, HideInInspector] public CubismModel Model; /// /// Override values. /// [NonSerialized, HideInInspector] public float[] OverrideValues; /// /// Flag whether to Ovaerride. /// [NonSerialized, HideInInspector] public bool[] OverrideFlags; /// /// Editor UI Update delegate. /// /// public delegate void ValueChangesHandler(CubismInspectorAbstract sender); /// /// Editor UI Update event. /// public event ValueChangesHandler OnChangedValues; /// /// Dispatch Editor UI Update event. /// protected void DispatchValueChanges() { OnChangedValues?.Invoke(this); } /// /// Called by Unity. /// public void OnEnable() { // Get cubism update controller. HasUpdateController = (GetComponent() != null); } /// /// Called by Unity. /// private void LateUpdate() { // OnLateUpdate is not called because OriginalWorkflow is assumed. } #endif } }