private void motion_MotionFinished(object owner, ActionAfterMotion obj) { if (MotionFinished != null) { MotionFinished(this, obj); } }
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); }
/// <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; }
/// <summary> /// IMotionProviderメンバーの実装 /// </summary> public void Start(float frame, ActionAfterMotion actionAfterMotion) { if (frame > FinalFrame) { throw new InvalidOperationException("最終フレームを超えた場所から再生を求められました。"); } CurrentFrame = frame; this.actionAfterMotion = actionAfterMotion; isPlaying = true; }