From 4ccd4bc6d126e0e0f51a50aa10c85b9bf48b1210 Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Wed, 18 Oct 2023 10:16:32 +0800 Subject: + init --- .../Runtime/SerializableCallback.cs | 124 +++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 ActiveRagdoll/Assets/ThirdParty/SerializableCallback/Runtime/SerializableCallback.cs (limited to 'ActiveRagdoll/Assets/ThirdParty/SerializableCallback/Runtime/SerializableCallback.cs') diff --git a/ActiveRagdoll/Assets/ThirdParty/SerializableCallback/Runtime/SerializableCallback.cs b/ActiveRagdoll/Assets/ThirdParty/SerializableCallback/Runtime/SerializableCallback.cs new file mode 100644 index 0000000..e58fa3b --- /dev/null +++ b/ActiveRagdoll/Assets/ThirdParty/SerializableCallback/Runtime/SerializableCallback.cs @@ -0,0 +1,124 @@ +using System; +using System.Linq.Expressions; +using System.Reflection; +using UnityEngine; + +public abstract class SerializableCallback : SerializableCallbackBase { + public TReturn Invoke() { + if (func == null) Cache(); + if (_dynamic) { + InvokableCallback call = func as InvokableCallback; + return call.Invoke(); + } else { + return func.Invoke(Args); + } + } + + protected override void Cache() { + if (_target == null || string.IsNullOrEmpty(_methodName)) { + func = new InvokableCallback(null, null); + } else { + if (_dynamic) { + func = new InvokableCallback(target, methodName); + } else { + func = GetPersistentMethod(); + } + } + } +} + +public abstract class SerializableCallback : SerializableCallbackBase { + public TReturn Invoke(T0 arg0) { + if (func == null) Cache(); + if (_dynamic) { + InvokableCallback call = func as InvokableCallback; + return call.Invoke(arg0); + } else { + return func.Invoke(Args); + } + } + + protected override void Cache() { + if (_target == null || string.IsNullOrEmpty(_methodName)) { + func = new InvokableCallback(null, null); + } else { + if (_dynamic) { + func = new InvokableCallback(target, methodName); + } else { + func = GetPersistentMethod(); + } + } + } +} + +public abstract class SerializableCallback : SerializableCallbackBase { + public TReturn Invoke(T0 arg0, T1 arg1) { + if (func == null) Cache(); + if (_dynamic) { + InvokableCallback call = func as InvokableCallback; + return call.Invoke(arg0, arg1); + } else { + return func.Invoke(Args); + } + } + + protected override void Cache() { + if (_target == null || string.IsNullOrEmpty(_methodName)) { + func = new InvokableCallback(null, null); + } else { + if (_dynamic) { + func = new InvokableCallback(target, methodName); + } else { + func = GetPersistentMethod(); + } + } + } +} + +public abstract class SerializableCallback : SerializableCallbackBase { + public TReturn Invoke(T0 arg0, T1 arg1, T2 arg2) { + if (func == null) Cache(); + if (_dynamic) { + InvokableCallback call = func as InvokableCallback; + return call.Invoke(arg0, arg1, arg2); + } else { + return func.Invoke(Args); + } + } + + protected override void Cache() { + if (_target == null || string.IsNullOrEmpty(_methodName)) { + func = new InvokableCallback(null, null); + } else { + if (_dynamic) { + func = new InvokableCallback(target, methodName); + } else { + func = GetPersistentMethod(); + } + } + } +} + +public abstract class SerializableCallback : SerializableCallbackBase { + public TReturn Invoke(T0 arg0, T1 arg1, T2 arg2, T3 arg3) { + if (func == null) Cache(); + if (_dynamic) { + InvokableCallback call = func as InvokableCallback; + return call.Invoke(arg0, arg1, arg2, arg3); + } else { + return func.Invoke(Args); + } + } + + protected override void Cache() { + if (_target == null || string.IsNullOrEmpty(_methodName)) { + func = new InvokableCallback(null, null); + } else { + if (_dynamic) { + func = new InvokableCallback(target, methodName); + } else { + func = GetPersistentMethod(); + } + } + } +} \ No newline at end of file -- cgit v1.1-26-g67d0