Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
CurvyEvents problems in AOT environment
#1
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...?)
Reply
#2
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
Reply
#3
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!
Reply
#4
Excellent, that worked, thank you!

I can't run with .Net Subset because of other libraries, sadly :-(
Reply
#5
Oh, although I should point out it's actually
Code:
mCallsCount = mCallerList.GetType().GetProperty("Count").GetGetMethod();

Thank you!
Reply
#6
You should use PropertyByName() - it's a DevTools extension using WinPhone compatible reflection when needed.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Problems compiling after pulling down project from source control obscurelyme 2 13 02-13-2022, 03:47 PM
Last Post: Marco Schultz
Question How to tell if a spline is straight? / Optimize problems with straight splines MarioBag 3 21 12-27-2021, 05:25 PM
Last Post: _Aka_
  Problems with spline prefab topquarkone 3 436 09-15-2021, 08:47 PM
Last Post: _Aka_
  Timing problems Lupp_ 4 1,338 01-15-2021, 05:11 PM
Last Post: _Aka_

Forum Jump: