You cannot 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
C#
38 lines
1.0 KiB
C#
#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();
|
|
}
|
|
}
|
|
} |