DiscreteTom/UniStart

Optimize AdvancedEvent by using C/C++ union?

Closed this issue · 1 comments

Explicit struct layout is not supported with generic types. Ref: https://stackoverflow.com/questions/26746189/why-cant-generic-types-have-explicit-layout

This will throw runtime error:

  [StructLayout(LayoutKind.Explicit)] // #35
  public struct ActionItem<T0> : IActionItem<T0> {
    [field: FieldOffset(0)]
    public AdvancedEventParamCount paramCount { get; set; }
    [field: FieldOffset(4)] // AdvancedEventParamCount's byte size is 4
    public UnityAction action0 { get; set; }
    [field: FieldOffset(4)] // AdvancedEventParamCount's byte size is 4
    public UnityAction<T0> action1 { get; set; }
  }