Releases: m4saka/CoTaskLib
0.3.2
新機能
Co::Init()
でCoTaskLibのライセンス表記がLicenseManager
へデフォルトで追加される機能を追加- ライセンス表記追加を実行しない場合は、
Co::Init()
の第1引数へCo::AddsLicenseYN::No
を指定してください Co::Init()
でライセンス表記追加を実行しない場合、手動でCo::AddLicense()
を呼び出せば任意のタイミングでの追加が可能です
- ライセンス表記追加を実行しない場合は、
0.3.1→0.3.2の破壊的変更
- 入力待ちタスクの関数群の第2引数へ実行後にclearInputを実行するどうかを指定する引数を追加し、デフォルトで有効に
- 引数が追加された関数一覧:
WaitUntilDown(const TInput input, ClearsInputYN clearsInput = ClearsInputYN::Yes)
WaitUntilUp(const TInput input, ClearsInputYN clearsInput = ClearsInputYN::Yes)
WaitUntilLeftClicked(const TArea area, ClearsInputYN clearsInput = ClearsInputYN::Yes)
WaitUntilLeftReleased(const TArea area, ClearsInputYN clearsInput = ClearsInputYN::Yes)
WaitUntilLeftClickedThenReleased(const TArea area, ClearsInputYN clearsInput = ClearsInputYN::Yes)
WaitUntilRightClicked(const TArea area, ClearsInputYN clearsInput = ClearsInputYN::Yes)
WaitUntilRightReleased(const TArea area, ClearsInputYN clearsInput = ClearsInputYN::Yes)
WaitUntilRightClickedThenReleased(const TArea area, ClearsInputYN clearsInput = ClearsInputYN::Yes)
- これにより、例えば下記のコードが意図通りに動作しない(1回のキー押下のみで複数の入力待ちタスクが通過する)問題が修正されます
Co::Task<> MainTask() { co_await Co::WaitUntilDown(KeySpace); co_await Co::WaitUntilDown(KeySpace); co_await Co::WaitUntilDown(KeySpace); Print << U"3回押されました"; // ← 従来(〜0.3.1)は1回のキー押下のみでここへ到達していた }
- 引数が追加された関数一覧:
その他の変更点
- タスク実行時の動的メモリアロケーション回数の削減によるパフォーマンス向上
Co::ScopedDrawer
をムーブ不可に修正Co::Task::with()
へCo::EmptyTask()
の結果を渡すと例外が発生していたのを修正- 不使用変数の削除、表記ミスの修正
0.3.1
0.3.0
新機能
-
Co::Task
にタスクの一時停止条件を指定するpausedWhile
メンバ関数を追加- 詳細はREADMEの「タスクの一時停止」の節を参照
-
Co::Task
に指定時間だけ遅れて実行されるタスクを返すdelayed
メンバ関数を追加
0.2.1→0.3.0の破壊的変更
-
Co::Ease(T*)
(更新対象の変数のポインタを与えるオーバーロード)におけるfrom
/to
の初期値を変更- 変更前後の初期値の比較
- 変更前(0.2.1):
- 浮動小数点型の場合: fromは
0.0
、toは1.0
- それ以外の場合: from/toともに
T{}
- 浮動小数点型の場合: fromは
- 変更後(0.3.0):
- from/toともに、変数のもとの値
- 変更前(0.2.1):
- この仕様変更により、前回の値からの変化を与えたい場合はtoのみを指定する形で実装できます。
- 変更前後の初期値の比較
-
Co::Ease(std::function<void(T)>)
(コールバックを与えるオーバーロード)におけるfrom
/to
の初期値を、型に関わらずT{}
とするよう変更- 変更前後の初期値の比較
- 変更前(0.2.1):
- 浮動小数点型の場合: fromは
0.0
、toは1.0
- それ以外の場合: from/toともに
T{}
- 浮動小数点型の場合: fromは
- 変更後(0.3.0):
- from/toともに
T{}
- from/toともに
- 変更前(0.2.1):
- 前述した
Co::Ease(T*)
の変更点との一貫性のための変更です。
- 変更前後の初期値の比較
その他の変更点
- 軽微なパフォーマンス向上
0.2.1
新機能
- 本バージョンより、Siv3DのmacOS版(AppleClang)、Linux版(gcc/clang)、Web版でもCoTaskLibが利用可能になりました
- macOS版 動作確認バージョン: Xcode 14.3.1、OpenSiv3D 0.6.14
- Linux版(gcc) 動作確認バージョン: g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0、OpenSiv3D 0.6.14
- Linux版(clang) 動作確認バージョン: Ubuntu clang version 14.0.0-1ubuntu1.1、OpenSiv3D 0.6.14
- Web版 動作確認バージョン: OpenSiv3D 0.6.13
0.2.0→0.2.1の破壊的変更
WaitForResult(s3d::AsyncTask)
とWaitForResult(s3d::AsyncHTTPTask)
を廃止- この関数を使用している場合、clangの不具合でコンパイル中にクラッシュする現象が発生するため
s3d::AsyncTask
およびs3d::AsyncHTTPTask
をコルーチン内で使うには、co_await
へ直接渡せばこの関数と同様の結果が得られます
その他の修正点
SimpleDialog
(ボタン指定なしのオーバーロード)でtext引数に一時オブジェクトの参照を渡すとダングリング参照になる場合があったのを修正(#8)SimpleDialog
のフェードインアニメーションがフォントテクスチャ生成処理によりカクついていたのを修正- 不使用変数および戻り値がvoidの関数への
[[nodiscard]]
記述によるwarningが発生していた箇所を修正
0.2.0
0.1.1→0.2.0の破壊的変更
-
SequenceBase
/SceneBase
のdrawIndex
仮想関数を廃止し、描画順の制御をレイヤーとdrawIndexという2つの値で指定する形へ変更(#6、#2)SequenceBase
/SceneBase
のコンストラクタにレイヤーおよびdrawIndexを指定する形式となります- 途中で変更したい場合は、
setLayer
/setDrawIndex
メンバ関数を使用することができます - 詳しくは、README内の描画順序の制御方法をご確認ください
-
一貫性向上のための関数名変更
- 変更前:
Co::WaitForDown
→ 変更後:Co::WaitUntilDown
- 変更前:
Co::WaitForUp
→ 変更後:Co::WaitUntilUp
- 変更前:
Co::WaitForLeftClicked
→ 変更後:Co::WaitUntilLeftClicked
- 変更前:
Co::WaitForLeftReleased
→ 変更後:Co::WaitUntilLeftReleased
- 変更前:
Co::WaitForLeftClickedThenReleased
→ 変更後:Co::WaitUntilLeftClickedThenReleased
- 変更前:
Co::WaitForRightClicked
→ 変更後:Co::WaitUntilRightClicked
- 変更前:
Co::WaitForRightReleased
→ 変更後:Co::WaitUntilRightReleased
- 変更前:
Co::WaitForRightClickedThenReleased
→ 変更後:Co::WaitUntilRightClickedThenReleased
- 変更前:
Co::WaitForMouseOver
→ 変更後:Co::WaitUntilMouseOver
- 変更前:
Co::UpdaterSequenceBase::isFinishRequested
→ 変更後:Co::UpdaterSequenceBase::finishRequested
- 変更前:
Co::SceneBase::isRequested
→ 変更後:Co::SceneBase::nextActionRequested
- 変更前:
-
Co::EaseTaskBuilder<T>
のfrom
/to
メンバ関数の引数にT
のコンストラクタ引数を指定するオーバーロードを廃止(#1)- ただし、
T
がVec2
またはVec3
の場合は各要素のスカラー値を引数に指定するオーバーロードが追加されているため、引き続き使用できます。 - 廃止の理由: 後述する「
from
/to
メンバ関数の引数にベクトルの全要素を初期化するスカラー値を指定するオーバーロードを追加」との両立ができないため
- ただし、
0.1.1→0.2.0のその他の変更点
-
EaseTaskBuilder<T>
のT
がVec2
またはVec3
の場合について、from
/to
メンバ関数の引数にベクトルの各要素のスカラー値を指定するオーバーロードを追加(#1)- これにより、
T
がVec2
またはVec3
の場合においては、コンストラクタ引数を指定するオーバーロードを引き続き使用できます。 - 例:
tweener.tweenPosition().from(0.0, 1.0).to(1.0, 0.0)
- これにより、
-
EaseTaskBuilder<T>
のT
がVec2
またはVec3
の場合について、from
/to
メンバ関数の引数にベクトルの全要素を初期化するスカラー値を指定するオーバーロードを追加(#1)- これにより、
Tweener::tweenScale
でスケールの値をfrom
/to
メンバ関数で操作する際、スカラー値で指定できるようになりました - 例:
tweener.tweenScale().from(0.5).to(1.0)
- これにより、
-
Tweener
のsetPivot
/setPosition
/setScale
メンバ関数に、ベクトルの各要素のスカラー値を引数に指定するオーバーロードを追加(#1) -
ScopedTaskRunner
へムーブ代入コンストラクタを追加 -
ScopedTaskRunner
のrequestCancel
メンバ関数から、キャンセル要求が通ったかどうかをbool型の戻り値として返すように -
MultiRunner
へ完了済みタスクを削除するためのremoveDone
メンバ関数を追加 -
MultiRunner
のrequestCancelAll
メンバ関数から、キャンセル要求が1つでも通ったかどうかをbool型の戻り値として返すように -
MultiRunner
へ各種コンテナ操作系のメンバ関数を追加 -
コルーチンハンドルがnullptrのタスクを返す
Co::EmptyTask
関数を追加 -
Task
へコルーチンハンドルがnullptrかどうかを返すempty
メンバ関数を追加 -
WithTiming
列挙型の基底型をint
からuint8
へ変更 -
各種パフォーマンス向上