예제 #1
0
 private void motion_MotionFinished(object owner, ActionAfterMotion obj)
 {
     if (MotionFinished != null)
     {
         MotionFinished(this, obj);
     }
 }
예제 #2
0
        private void OnPlay(string[] args)
        {
            string            name;
            ActionAfterMotion aam = ActionAfterMotion.Nothing;

            switch (args.Length)
            {
            case 1:
                name = args[0];
                break;

            case 2:
                name = args[0];
                if (args[1] == "repeat")
                {
                    aam = ActionAfterMotion.Replay;
                }
                break;

            default:
                return;
            }

            _models.CurrentModelData.Model.MotionManager.ApplyMotion(_models.CurrentModelData.MotionManager[name], 0, aam);
        }
예제 #3
0
 /// <summary>
 ///     指定したモーションを再生する
 /// </summary>
 /// <param name="id">モーションのid</param>
 /// <param name="startFrame">最初のフレーム</param>
 /// <param name="setting">終了後の挙動</param>
 public void ApplyMotion(IMotionProvider motionProvider, int startFrame = 0,
                         ActionAfterMotion setting = ActionAfterMotion.Nothing)
 {
     if (CurrentMotionProvider != null)
     {
         CurrentMotionProvider.Stop();
     }
     motionProvider.Start(startFrame, setting);
     CurrentMotionProvider = motionProvider;
 }
예제 #4
0
 /// <summary>
 /// IMotionProviderメンバーの実装
 /// </summary>
 public void Start(float frame, ActionAfterMotion actionAfterMotion)
 {
     if (frame > FinalFrame)
     {
         throw new InvalidOperationException("最終フレームを超えた場所から再生を求められました。");
     }
     CurrentFrame           = frame;
     this.actionAfterMotion = actionAfterMotion;
     isPlaying = true;
 }