public void モーションを再生する(float frame, モーション再生終了後の挙動 action) { if (frame > このモーションにおける最終フレーム) { throw new InvalidOperationException("最終フレームを超えた場所から再生を求められました。"); } 現在のフレーム = frame; _再生中である = true; _モーション再生終了後の挙動 = action; }
/// <summary> /// IMotionProviderメンバーの実装 /// </summary> public void モーションを再生する(float frame, モーション再生終了後の挙動 actionAfterMotion) { if (frame > このモーションにおける最終フレーム) { throw new InvalidOperationException("最終フレームを超えた場所から再生を求められました。"); } 現在のフレーム = frame; this.actionAfterMotion = actionAfterMotion; isPlaying = true; }
/// <summary> /// 指定したモーションを再生する /// </summary> /// <param name="id">モーションのid</param> /// <param name="startFrame">最初のフレーム</param> /// <param name="setting">終了後の挙動</param> public void モーションを適用する(モーション motionProvider, int startFrame = 0, モーション再生終了後の挙動 setting = モーション再生終了後の挙動.Nothing) { // TODO: モーションが同時には1つしか使えない if (現在再生中のモーション != null) { 現在再生中のモーション.モーションを停止する(); } motionProvider.モーションを再生する(startFrame, setting); 現在再生中のモーション = motionProvider; }
private void motion_MotionFinished(object owner, モーション再生終了後の挙動 obj) { モーションが再生終了した?.Invoke(this, obj); }