Posts: 10
Threads: 5
Joined: Jun 2016
Hi,
When running in a AOT environment, the SplineController code throws up all sorts of errors due to CurvyEvents using GetValue (in HasListeners at lines 47 and 55), which doesn't work with --aot-only. This is a problem on consoles and probably on iOS as well.
Any fixes or workarounds to that GetValue call would be appreciated... (It may have something to do with the type being a Generic, too...?)
Posts: 690
Threads: 71
Joined: Jan 2015
Hi,
seems like that's a known issue:
https://docs.unity3d.com/Manual/TroubleS...Phone.html (see also
here)
According to the docs it works if you switch API Compatibility Level to .NET 2.0 Subset. On the other side it should be possible to add the relevant namespaces to the link.xml provided with Curvy to prevent it being optimized away by Mono.
Edit: Searching the forums I found the following:
"the object you're executing those on is a methodinfo. If the thing you're setting is a Field then you're fine... but if it's a property it's going to puke so you'll need to use GetGetMethod and GetSetMethod and then call Invoke on those to set the value to ensure compatibility cross platform."
Seems like there's a way to code it in a more compatible way. Unfortunately I don't have the option to test that out. If I send you some changed code, would you mind testing it?
Best regards,
Jake
Posts: 690
Threads: 71
Joined: Jan 2015
Ok, this could be a quick hack:
First, change
mCallsCount type from
PropertyInfo to
MethodInfo.
Then, change the two lines you mentioned in HasListeners() to:
Code:
mCallsCount = mCallerList.GetType().PropertyByName("Count").GetGetMethod();
and further down:
Code:
mCount = (int)mCallsCount.Invoke(mCallerList, null);
That should do the trick!
Posts: 10
Threads: 5
Joined: Jun 2016
Excellent, that worked, thank you!
I can't run with .Net Subset because of other libraries, sadly :-(
Posts: 10
Threads: 5
Joined: Jun 2016
Oh, although I should point out it's actually
Code:
mCallsCount = mCallerList.GetType().GetProperty("Count").GetGetMethod();
Thank you!
Posts: 690
Threads: 71
Joined: Jan 2015
You should use PropertyByName() - it's a DevTools extension using WinPhone compatible reflection when needed.