You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.0 KiB
38 lines
1.0 KiB
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member |
|
|
|
using UnityEngine; |
|
|
|
namespace Cysharp.Threading.Tasks.Triggers |
|
{ |
|
public static partial class AsyncTriggerExtensions |
|
{ |
|
public static AsyncStartTrigger GetAsyncStartTrigger(this GameObject gameObject) |
|
{ |
|
return GetOrAddComponent<AsyncStartTrigger>(gameObject); |
|
} |
|
|
|
public static AsyncStartTrigger GetAsyncStartTrigger(this Component component) |
|
{ |
|
return component.gameObject.GetAsyncStartTrigger(); |
|
} |
|
} |
|
|
|
[DisallowMultipleComponent] |
|
public sealed class AsyncStartTrigger : AsyncTriggerBase<AsyncUnit> |
|
{ |
|
bool called; |
|
|
|
void Start() |
|
{ |
|
called = true; |
|
RaiseEvent(AsyncUnit.Default); |
|
} |
|
|
|
public UniTask StartAsync() |
|
{ |
|
if (called) return UniTask.CompletedTask; |
|
|
|
return ((IAsyncOneShotTrigger)new AsyncTriggerHandler<AsyncUnit>(this, true)).OneShotAsync(); |
|
} |
|
} |
|
} |