AnnulusGames / LitMotion

Lightning-fast and Zero Allocation Tween Library for Unity.

Home Page:https://annulusgames.github.io/LitMotion/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Callbacks with tween scheduling.

Akeit0 opened this issue · comments

Callback の中でTweenを加えられると困るので、Storageに一時待機用Bufferが必要です。
UniTaskの実装が参考になると思います。

callback呼び出しのプロセスが値の更新と独立していること、span.Lengthでforを回しているためLengthが変更されないことなどを見る限り、現状の実装は途中でMotionを追加しても問題なく動作するものと思われるのですが...
念の為callback内での追加や複数回await(実質的にはOnCompleteコールバック内でのAppend)などを試しましたが、異常なく動作しテストも通過します。

すみませんちょっと勘違いしていたようです。Spanにしたから、Resizeも大丈夫ですね
少し違う話ですが、現在の実装だとCompletedがtailより後ろに残ることがあることを想定していそうですが、ありうるのでしょうか。
storage.Countに関わらず、配列の最後までOnCompleteActionを探していそうなので

ちょうど先ほど後続の余計な列挙を削除する更新を行いました。AsSpanの際にstorage.Countをlengthとして渡すようにしたため、これで不要な列挙は行われないはずです。

i < outputLengthはいるのでしょうか?

あ、そういえばそちらも不要ですね。削除しておきます。

さきほどの勘違いにも関係しますが、一応MainThread以外からは使えないことは明記しておいたほうがいいと思います。
UniTaskと一緒に使うなら、MainThread外から呼んでしまうこともありうるので

あとMotionStorageのRemoveAllおよびResetではSpan.Clear()がいいと思います。