private static Il2CppClass *ClassFromTypePatch(Il2CppTypeStruct *type) { if ((long)type->data < 0 && (type->type == Il2CppTypeEnum.IL2CPP_TYPE_CLASS || type->type == Il2CppTypeEnum.IL2CPP_TYPE_VALUETYPE)) { FakeTokenClasses.TryGetValue((long)type->data, out var classPointer); return((Il2CppClass *)classPointer); } return(ourOriginalTypeToClassMethod(type)); }
public INativeTypeStruct Wrap(Il2CppTypeStruct *typePointer) { if ((IntPtr)typePointer == IntPtr.Zero) { return(null); } else { return(new NativeTypeStruct((IntPtr)typePointer)); } }
private static Il2CppClass *ClassFromTypePatch(Il2CppTypeStruct *type) { if ((long)type->data < 0 && (type->type == Il2CppTypeEnum.IL2CPP_TYPE_CLASS || type->type == Il2CppTypeEnum.IL2CPP_TYPE_VALUETYPE)) { FakeTokenClasses.TryGetValue((long)type->data, out var classPointer); return((Il2CppClass *)classPointer); } // possible race: other threads can try resolving classes after the hook is installed but before delegate field is set while (ourOriginalTypeToClassMethod == null) { Thread.Sleep(1); } return(ourOriginalTypeToClassMethod(type)); }
public INativeTypeStruct Wrap(Il2CppTypeStruct* typePointer) { if ((IntPtr)typePointer == IntPtr.Zero) return null; else return new NativeTypeStruct((IntPtr)typePointer); }
public INativeTypeStruct Wrap(Il2CppTypeStruct *TypePointer) { return(new NativeTypeStruct((IntPtr)TypePointer)); }