1
#region Event #{DelegateName}
3
[DllImport(DllName.m_dllName, CallingConvention = CallingConvention.Cdecl)]
4
private static extern void Export#{ThisName}Event_Advise#{DelegateName}(IntPtr _native, bool _advise);
6
public delegate void Handle#{DelegateName}(
7
#{ValueTypePrefix1}#{TypeName1} #{ValueName1},
8
#{ValueTypePrefix2}#{TypeName2} #{ValueName2},
9
#{ValueTypePrefix3}#{TypeName3} #{ValueName3});
11
private Handle#{DelegateName} mEvent#{DelegateName};
12
public event Handle#{DelegateName} Event#{DelegateName}
16
if (ExportEvent#{DelegateName}.mDelegate == null)
18
ExportEvent#{DelegateName}.mDelegate = new ExportEvent#{DelegateName}.ExportHandle(OnExport#{DelegateName});
19
ExportEvent#{DelegateName}.Export#{ThisName}Event_Delegate#{DelegateName}(ExportEvent#{DelegateName}.mDelegate);
22
if (mEvent#{DelegateName} == null)
23
Export#{ThisName}Event_Advise#{DelegateName}(Native, true);
24
mEvent#{DelegateName} += value;
28
mEvent#{DelegateName} -= value;
29
if (mEvent#{DelegateName} == null)
30
Export#{ThisName}Event_Advise#{DelegateName}(Native, false);
34
private struct ExportEvent#{DelegateName}
36
[DllImport(DllName.m_dllName, CallingConvention = CallingConvention.Cdecl)]
37
public static extern void Export#{ThisName}Event_Delegate#{DelegateName}(ExportHandle _delegate);
38
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
39
public delegate void ExportHandle(
40
#{ValueMarshalAs1}#{ValueTypePrefix1}#{ValueTypeName1} #{ValueName1},
41
#{ValueMarshalAs2}#{ValueTypePrefix2}#{ValueTypeName2} #{ValueName2},
42
#{ValueMarshalAs3}#{ValueTypePrefix3}#{ValueTypeName3} #{ValueName3});
44
public static ExportHandle mDelegate;
47
private static void OnExport#{DelegateName}(
48
#{ValueTypePrefix1}#{ValueTypeName1} #{ValueName1},
49
#{ValueTypePrefix2}#{ValueTypeName2} #{ValueName2},
50
#{ValueTypePrefix3}#{ValueTypeName3} #{ValueName3})
52
#{ValueTypePrefix1}#{TypeName1} sender = (#{ValueTypePrefix1}#{TypeName1})BaseWidget.GetByNative(#{ValueName1});
54
if (sender.mEvent#{DelegateName} != null)
55
sender.mEvent#{DelegateName}(
57
#{ValueConvertBefore2}#{ValueTypePrefix2}#{ValueName2}#{ValueConvertPost2},
58
#{ValueConvertBefore3}#{ValueTypePrefix3}#{ValueName3}#{ValueConvertPost3});