Skip to content

Commit

Permalink
SceneManagerのinit関数に最初のフェードイン・フェードアウトを指定できる機能を追加 (#1081)
Browse files Browse the repository at this point in the history
  • Loading branch information
yama-can authored Sep 21, 2023
1 parent 3aff3db commit d1d738e
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
11 changes: 9 additions & 2 deletions Siv3D/include/Siv3D/SceneManager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -163,8 +163,15 @@ namespace s3d

/// @brief 最初のシーンを初期化します。
/// @param state 最初のシーン
/// @param transitionTime フェードイン・アウトの時間
/// @return 初期化に成功した場合 true, それ以外の場合は false
bool init(const State& state);
bool init(const State& state, const Duration& transitionTime = Duration{ 2.0 });

/// @brief 最初のシーンを初期化します。
/// @param state 最初のシーン
/// @param transitionTimeMillisec フェードイン・アウトの時間(ミリ秒)
/// @return 初期化に成功した場合 true, それ以外の場合は false
bool init(const State& state, int32 transitionTimeMillisec);

/// @brief 現在のシーンの更新処理のみを行います。
/// @remark 通常はこの関数は使用しません。
Expand Down Expand Up @@ -192,7 +199,7 @@ namespace s3d
/// @brief シーンを変更します。
/// @param state 次のシーンのキー
/// @param transitionTime フェードイン・アウトの時間
/// @param crossFade ロスフェードを有効にするか
/// @param crossFade クロスフェードを有効にするか
/// @return シーンの変更が開始される場合 true, それ以外の場合は false
bool changeScene(const State& state, const Duration& transitionTime = Duration{ 2.0 }, CrossFade crossFade = CrossFade::No);

Expand Down
12 changes: 11 additions & 1 deletion Siv3D/include/Siv3D/detail/SceneManager.ipp
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,13 @@ namespace s3d
}

template <class State, class Data>
inline bool SceneManager<State, Data>::init(const State& state)
inline bool SceneManager<State, Data>::init(const State& state, const Duration& transitionTime)
{
return init(state, static_cast<int32>(transitionTime.count() * 1000));
}

template <class State, class Data>
inline bool SceneManager<State, Data>::init(const State& state, int32 transitionTimeMillisec)
{
if (m_current)
{
Expand All @@ -181,6 +187,10 @@ namespace s3d

m_current = it->second();

m_nextState = state;

m_transitionTimeMillisec = transitionTimeMillisec;

if (hasError())
{
return false;
Expand Down

0 comments on commit d1d738e

Please sign in to comment.