Skip to content

Commit e668ad9

Browse files
committed
* fix delegate Binder errors
1 parent 7e5bb7c commit e668ad9

7 files changed

Lines changed: 27 additions & 8 deletions

File tree

BindGenerater/Generater/CSharp/ClassGenerater.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,7 @@ bool IsCopyOrignType(TypeDefinition type)
250250

251251

252252
isFullRetainType = Binder.retainTypes.Contains(type.FullName);
253+
isFullRetainType |= Binder.retainTypes.Contains(type.Namespace);
253254

254255
isFullRetainType |= type.DoesSpecificTypeImplementInterface("IEnumerator");
255256

BindGenerater/Generater/CSharp/GenerateBindings.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,8 @@ public void GenImpl()
156156
if (!string.IsNullOrEmpty(reName))
157157
CS.Writer.WriteLine($"return {reName}");
158158
CS.Writer.End();//try
159-
CS.Writer.Start("catch(Exception e)");
160-
CS.Writer.WriteLine("__e = e");
159+
CS.Writer.Start("catch(Exception _e_)");
160+
CS.Writer.WriteLine("__e = _e_");
161161
CS.Writer.End();//catch
162162

163163
CS.Writer.WriteLine("if(__e != null)", false);

BindGenerater/Generater/CSharp/MethodResolver.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,8 @@ public virtual string Implement(string name)
141141
foreach (var p in method.Parameters)
142142
{
143143
var value = TypeResolver.Resolve(p.ParameterType,method).Unbox(p.Name, true);
144-
//if (p.ParameterType.IsByReference)
145-
// value = "ref " + value;
144+
if (p.IsIn)
145+
value = value.Replace("ref ", "in ");
146146

147147
CS.Writer.Write(value);
148148
if (lastP != p)
@@ -193,7 +193,11 @@ public override string Implement(string name)
193193
var lastP = method.Parameters.LastOrDefault();
194194
foreach (var p in method.Parameters)
195195
{
196-
CS.Writer.Write(TypeResolver.Resolve(p.ParameterType,method).Unbox(p.Name, true));
196+
var value = TypeResolver.Resolve(p.ParameterType, method).Unbox(p.Name, true);
197+
if (p.IsIn)
198+
value = value.Replace("ref ", "in ");
199+
200+
CS.Writer.Write(value);
197201
if (lastP != p)
198202
CS.Writer.Write(",");
199203
}

BindGenerater/Generater/CSharp/TypeResolver.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,12 @@ void WriteUnboxedMember(string name)
489489

490490
var callCmd = $"{_member}(";
491491
if (returnType != null)
492-
callCmd = TypeResolver.Resolve(returnType).Paramer("res") + " = " + callCmd;
492+
{
493+
var localVar = TypeResolver.Resolve(returnType).Paramer("res");
494+
if(localVar.StartsWith("ref "))
495+
localVar = localVar.Replace("ref ", "");
496+
callCmd = localVar + " = " + callCmd;
497+
}
493498

494499
for (int i = 0; i < paramTpes.Count; i++)
495500
{

ScriptEngine/Tools/Binder.exe

0 Bytes
Binary file not shown.

ScriptEngine/Tools/Binder.pdb

0 Bytes
Binary file not shown.

ScriptEngine/Tools/binder.json

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616
"UnityEngine.Windows",
1717
"UnityEngine.Handheld",
1818
"UnityEngine.Social",
19-
"UnityEngine.LowLevel"],
19+
"UnityEngine.LowLevel",
20+
"UnityEngine.Rendering.DelegateUtility",
21+
"StageRuntimeInterface"],
2022

2123

2224
"ForceRetainTypes": [
@@ -36,7 +38,14 @@
3638
"UnityEngine.UnityString",
3739
"UnityEngine.CastHelper`1",
3840
"UnityEngineInternal.MathfInternal",
39-
"UnityEngine.UnityString"],
41+
"UnityEngine.UnityString",
42+
"Unity.Mathematics",
43+
"UnityEngine.Rendering.BitArray8",
44+
"UnityEngine.Rendering.BitArray16",
45+
"UnityEngine.Rendering.BitArray32",
46+
"UnityEngine.Rendering.BitArray64",
47+
"UnityEngine.Rendering.BitArray128",
48+
"UnityEngine.Rendering.BitArray256"],
4049

4150
"StripUsing": [
4251
"UnityEngine.Internal",

0 commit comments

Comments
 (0)