Skip to content

Commit

Permalink
feat: accept non-value and non-Object arguments only for dynamic func…
Browse files Browse the repository at this point in the history
…tions

fixes Siccity#6
  • Loading branch information
mnicolas94 committed Sep 12, 2023
1 parent 496d753 commit 1f2d6f6
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 45 deletions.
11 changes: 6 additions & 5 deletions Editor/SerializableCallbackDrawer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -259,15 +259,16 @@ private void MethodSelector(SerializedProperty property)
{
continue;
}

// Skip methods with unsupported args
if (parms.Any(x => !Arg.IsSupported(x)))
var nonSerializableArgTypes = parms.Any(x => !Arg.IsSupported(x));

if (!nonSerializableArgTypes)
{
continue;
string methodPrettyName = PrettifyMethod(methods[i]);
staticItems.Add(new MenuItem(targets[c].GetType().Name + "/" + methods[i].DeclaringType.Name, methodPrettyName, () => SetMethod(property, t, method, false)));
}

string methodPrettyName = PrettifyMethod(methods[i]);
staticItems.Add(new MenuItem(targets[c].GetType().Name + "/" + methods[i].DeclaringType.Name, methodPrettyName, () => SetMethod(property, t, method, false)));

// Skip methods with wrong constrained args
if (argTypes.Length == 0 || !Enumerable.SequenceEqual(argTypes, parms))
{
Expand Down
44 changes: 7 additions & 37 deletions Samples/SampleScene.unity
Original file line number Diff line number Diff line change
Expand Up @@ -244,54 +244,24 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: db62a0a9178a84d4ab15ceb34d62ed39, type: 3}
m_Name:
m_EditorClassIdentifier:
_floatCallback:
_nonValueParameter:
_target: {fileID: 1700258548}
_methodName: ParamFunction
_args:
- boolValue: 0
intValue: 5
floatValue: 0
stringValue:
objectValue: {fileID: 0}
argType: 2
_typeName: System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
_dynamic: 0
_typeName: SerializableCallback.SerializableCallback`1[[System.Single, mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], Siccity.SerializableCallback,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
dirty: 0
_parameterCallback:
_target: {fileID: 1700258548}
_methodName: ParamFunction
_methodName: NonValueFunction
_args:
- boolValue: 0
intValue: 0
floatValue: 0
stringValue:
objectValue: {fileID: 0}
argType: 2
_typeName: System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
argType: 0
_typeName: System.Threading.CancellationToken, mscorlib, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
_dynamic: 1
_typeName: SerializableCallback.SerializableCallback`2[[System.Int32, mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Single,
_typeName: SerializableCallback.SerializableCallback`2[[System.Threading.CancellationToken,
mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String,
mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]],
Siccity.SerializableCallback, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
dirty: 0
_parameterCallbackF:
_target: {fileID: 1700258548}
_methodName: ParamFunction
_args:
- boolValue: 0
intValue: 0
floatValue: 0
stringValue:
objectValue: {fileID: 0}
argType: 2
_typeName: System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
_dynamic: 1
_typeName: SerializableCallback.Samples.ParamCallback, Assembly-CSharp, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
dirty: 0
--- !u!4 &1700258549
Transform:
m_ObjectHideFlags: 0
Expand Down
21 changes: 18 additions & 3 deletions Samples/Test.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Threading;
using UnityEngine;

namespace SerializableCallback.Samples
Expand All @@ -9,9 +10,10 @@ public class ParamCallback : SerializableCallback<int, float>{}

public class Test : MonoBehaviour
{
[SerializeField] private SerializableCallback<float> _floatCallback;
[SerializeField] private SerializableCallback<int, float> _parameterCallback;
[SerializeField] private ParamCallback _parameterCallbackF;
// [SerializeField] private SerializableCallback<float> _floatCallback;
// [SerializeField] private SerializableCallback<int, float> _parameterCallback;
// [SerializeField] private ParamCallback _parameterCallbackInherit;
[SerializeField] private SerializableCallback<CancellationToken, string> _nonValueParameter;

public float FloatFunction()
{
Expand All @@ -22,5 +24,18 @@ public float ParamFunction(int param)
{
return param;
}

public string NonValueFunction(CancellationToken ct)
{
return "";
}

[ContextMenu("Test")]
public void DebugFunctions()
{
// Debug.Log($"_floatCallback: {_floatCallback.Invoke()}");
// Debug.Log($"_parameterCallback: {_parameterCallback.Invoke(5)}");
// Debug.Log($"_parameterCallbackInherit: {_parameterCallbackInherit.Invoke(5)}");
}
}
}

0 comments on commit 1f2d6f6

Please sign in to comment.