TH1/Unity/Assets/Plugins/ViSDK/ViSystem/ViDelegateAssisstant.cs
2025-08-20 02:24:48 +08:00

236 lines
4.1 KiB
C#

using System;
public class ViDelegateAssisstant
{
public delegate void Dele();
public delegate void Dele<T0>(T0 t0);
public delegate void Dele<T0, T1>(T0 t0, T1 t1);
public delegate void Dele<T0, T1, T2>(T0 t0, T1 t1, T2 t2);
public delegate void Dele<T0, T1, T2, T3>(T0 t0, T1 t1, T2 t2, T3 t3);
public delegate RT RTDele<RT>();
public delegate RT RTDele<RT, T0>(T0 t0);
public delegate RT RTDele<RT, T0, T1>(T0 t0, T1 t1);
public delegate RT RTDele<RT, T0, T1, T2>(T0 t0, T1 t1, T2 t2);
public delegate RT RTDele<RT, T0, T1, T2, T3>(T0 t0, T1 t1, T2 t2, T3 t3);
public static void Invoke(Dele dele)
{
if (dele != null)
{
dele();
}
}
public static void Invoke<T0>(Dele<T0> dele, T0 t0)
{
if (dele != null)
{
dele(t0);
}
}
public static void Invoke<T0, T1>(Dele<T0, T1> dele, T0 t0, T1 t1)
{
if (dele != null)
{
dele(t0, t1);
}
}
public static void Invoke<T0, T1, T2>(Dele<T0, T1, T2> dele, T0 t0, T1 t1, T2 t2)
{
if (dele != null)
{
dele(t0, t1, t2);
}
}
public static void Invoke<T0, T1, T2, T3>(Dele<T0, T1, T2, T3> dele, T0 t0, T1 t1, T2 t2, T3 t3)
{
if (dele != null)
{
dele(t0, t1, t2, t3);
}
}
public static RT Invoke<RT>(RTDele<RT> dele, RT defaltRT)
{
if (dele != null)
{
return dele();
}
else
{
return defaltRT;
}
}
public static RT Invoke<RT, T0>(RTDele<RT, T0> dele, RT defaltRT, T0 t0)
{
if (dele != null)
{
return dele(t0);
}
else
{
return defaltRT;
}
}
public static RT Invoke<RT, T0, T1>(RTDele<RT, T0, T1> dele, RT defaltRT, T0 t0, T1 t1)
{
if (dele != null)
{
return dele(t0, t1);
}
else
{
return defaltRT;
}
}
public static RT Invoke<RT, T0, T1, T2>(RTDele<RT, T0, T1, T2> dele, RT defaltRT, T0 t0, T1 t1, T2 t2)
{
if (dele != null)
{
return dele(t0, t1, t2);
}
else
{
return defaltRT;
}
}
public static RT Invoke<RT, T0, T1, T2, T3>(RTDele<RT, T0, T1, T2, T3> dele, RT defaltRT, T0 t0, T1 t1, T2 t2, T3 t3)
{
if (dele != null)
{
return dele(t0, t1, t2, t3);
}
else
{
return defaltRT;
}
}
public static void InvokeOnce(ref Dele dele)
{
if (dele != null)
{
Dele local = dele;
dele = null;
local();
}
}
public static void InvokeOnce<T0>(ref Dele<T0> dele, T0 t0)
{
if (dele != null)
{
Dele<T0> local = dele;
dele = null;
local(t0);
}
}
public static void InvokeOnce<T0, T1>(ref Dele<T0, T1> dele, T0 t0, T1 t1)
{
if (dele != null)
{
Dele<T0, T1> local = dele;
dele = null;
local(t0, t1);
}
}
public static void InvokeOnce<T0, T1, T2>(ref Dele<T0, T1, T2> dele, T0 t0, T1 t1, T2 t2)
{
if (dele != null)
{
Dele<T0, T1, T2> local = dele;
dele = null;
local(t0, t1, t2);
}
}
public static void InvokeOnce<T0, T1, T2, T3>(ref Dele<T0, T1, T2, T3> dele, T0 t0, T1 t1, T2 t2, T3 t3)
{
if (dele != null)
{
Dele<T0, T1, T2, T3> local = dele;
dele = null;
local(t0, t1, t2, t3);
}
}
public static RT InvokeOnce<RT>(ref RTDele<RT> dele, RT defaltRT)
{
if (dele != null)
{
RTDele<RT> local = dele;
dele = null;
return local();
}
else
{
return defaltRT;
}
}
public static RT InvokeOnce<RT, T0>(ref RTDele<RT, T0> dele, RT defaltRT, T0 t0)
{
if (dele != null)
{
RTDele<RT, T0> local = dele;
dele = null;
return local(t0);
}
else
{
return defaltRT;
}
}
public static RT InvokeOnce<RT, T0, T1>(ref RTDele<RT, T0, T1> dele, RT defaltRT, T0 t0, T1 t1)
{
if (dele != null)
{
RTDele<RT, T0, T1> local = dele;
dele = null;
return local(t0, t1);
}
else
{
return defaltRT;
}
}
public static RT InvokeOnce<RT, T0, T1, T2>(ref RTDele<RT, T0, T1, T2> dele, RT defaltRT, T0 t0, T1 t1, T2 t2)
{
if (dele != null)
{
RTDele<RT, T0, T1, T2> local = dele;
dele = null;
return local(t0, t1, t2);
}
else
{
return defaltRT;
}
}
public static RT InvokeOnce<RT, T0, T1, T2, T3>(ref RTDele<RT, T0, T1, T2, T3> dele, RT defaltRT, T0 t0, T1 t1, T2 t2, T3 t3)
{
if (dele != null)
{
RTDele<RT, T0, T1, T2, T3> local = dele;
dele = null;
return local(t0, t1, t2, t3);
}
else
{
return defaltRT;
}
}
}