| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | 
							- /**
 
-  * 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 UnityEngine;
 
- using UnityEngine.Animations;
 
- using UnityEngine.Playables;
 
- namespace Live2D.Cubism.Framework.Motion
 
- {
 
-     /// <summary>
 
-     /// Cubism motion state.
 
-     /// </summary>
 
-     public class CubismMotionState
 
-     {
 
-         #region Variable
 
-         /// <summary>
 
-         /// Cubism motion state clip.
 
-         /// </summary>
 
-         public AnimationClip Clip { get; private set; }
 
-         /// <summary>
 
-         /// Animation clip mixer.
 
-         /// </summary>
 
-         public AnimationMixerPlayable ClipMixer { get; private set; }
 
-         /// <summary>
 
-         /// Animation clip playable.
 
-         /// </summary>
 
-         public AnimationClipPlayable ClipPlayable { get; private set; }
 
-         #endregion
 
-         /// <summary>
 
-         /// Create motion state.
 
-         /// </summary>
 
-         /// <param name="playableGraph">Playable graph.</param>
 
-         /// <param name="clip">Animation clip.</param>
 
-         /// <param name="isLoop">Animation is loop.</param>
 
-         /// <param name="speed">Animation speed.</param>
 
-         public static CubismMotionState CreateCubismMotionState(PlayableGraph playableGraph, AnimationClip clip, bool isLoop = true, float speed = 1.0f)
 
-         {
 
-             var ret = new CubismMotionState();
 
-             ret.Clip = clip;
 
-             // Create animation clip mixer.
 
-             ret.ClipMixer = AnimationMixerPlayable.Create(playableGraph, 2);
 
-             ret.ClipMixer.SetSpeed(speed);
 
-             // Connect AnimationClip Playable
 
-             ret.ClipPlayable = AnimationClipPlayable.Create(playableGraph, ret.Clip);
 
-             if(!isLoop)
 
-             {
 
-                 ret.ClipPlayable.SetDuration(clip.length - 0.0001f);
 
-             }
 
-             ret.ClipMixer.ConnectInput(0, ret.ClipPlayable, 0);
 
-             ret.ClipMixer.SetInputWeight(0, 1.0f);
 
-             return ret;
 
-         }
 
-         /// <summary>
 
-         /// Connect motion state clip mixer.
 
-         /// </summary>
 
-         /// <param name="clipMixer">.</param>
 
-         public void ConnectClipMixer(AnimationMixerPlayable clipMixer)
 
-         {
 
-             var lastInput = ClipMixer.GetInputCount() - 1;
 
- #if UNITY_2018_2_OR_NEWER
 
-             ClipMixer.DisconnectInput(lastInput);
 
- #else
 
-             ClipMixer.GetGraph().Disconnect(ClipMixer, lastInput);
 
- #endif
 
-             ClipMixer.ConnectInput(lastInput, clipMixer, 0);
 
-             ClipMixer.SetInputWeight(lastInput, 1.0f);
 
-         }
 
-     }
 
- }
 
 
  |