private unsafe static IntPtr OurGetInputString() { string input = IL2CPP.Il2CppStringToManaged(originalInputStringGetter()); IntPtr vr_input = IL2CPP.ManagedStringToIl2Cpp(VRKeyboard.GetKeyboardInput() + input); return(vr_input); }
private unsafe static void ChatMsgPatch(IntPtr thisPtr, MarshChatMsg msg) { string chatStr = IL2CPP.Il2CppStringToManaged(msg.msg.m_data); if (!CommandParser.HandleMessage(chatStr)) { ourChatDelegate(thisPtr, msg); } }
private bool TrySetString(IntPtr keyPtr, IntPtr valuePtr) { myHadChanges = true; var key = IL2CPP.Il2CppStringToManaged(keyPtr); myPrefs[key] = IL2CPP.Il2CppStringToManaged(valuePtr); return(true); }
private bool TrySetInt(IntPtr keyPtr, int value) { myHadChanges = true; var key = IL2CPP.Il2CppStringToManaged(keyPtr); myPrefs[key] = value; return(true); }
private IntPtr GetString(IntPtr keyPtr, IntPtr defaultValuePtr) { var key = IL2CPP.Il2CppStringToManaged(keyPtr); if (myPrefs.TryGetValue(key, out var result)) { if (result is string resultString) { return(IL2CPP.ManagedStringToIl2Cpp(resultString)); } } return(defaultValuePtr); }
private static void FadeToPatch(IntPtr instancePtr, IntPtr fadeNamePtr, float fade, IntPtr actionPtr, IntPtr stackPtr) { if (instancePtr == IntPtr.Zero) { return; } origFadeTo(instancePtr, fadeNamePtr, fade, actionPtr, stackPtr); if (!IL2CPP.Il2CppStringToManaged(fadeNamePtr).Equals("BlackFade", StringComparison.Ordinal) || !fade.Equals(0f) || RoomManager.field_Internal_Static_ApiWorldInstance_0 == null) { return; } MelonCoroutines.Start(Utilities.CheckWorld()); }
private int GetInt(IntPtr keyPtr, int defaultValue) { var key = IL2CPP.Il2CppStringToManaged(keyPtr); if (myPrefs.TryGetValue(key, out var result)) { switch (result) { case float resultFloat: return((int)resultFloat); case int resultInt: return(resultInt); } } return(defaultValue); }
public static string LayerToName(int layer) { var iCall = ICallHelper.GetICall <d_LayerToName>("UnityEngine.LayerMask::LayerToName"); return(IL2CPP.Il2CppStringToManaged(iCall.Invoke(layer))); }
private static void InstantiateObjectPatch(IntPtr thisPtr, IntPtr objectNamePtr, Vector3 position, Quaternion rotation, int networkId, IntPtr playerPtr) { try { ourDelegate(thisPtr, objectNamePtr, position, rotation, networkId, playerPtr); if (!AdvancedSafetySettings.HidePortalsFromBlockedUsers && !AdvancedSafetySettings.HidePortalsFromNonFriends && !AdvancedSafetySettings.HidePortalsCreatedTooClose || playerPtr == IntPtr.Zero) { return; } var player = new Player(playerPtr); var objectName = IL2CPP.Il2CppStringToManaged(objectNamePtr); if (objectName != "Portals/PortalInternalDynamic") { return; } var apiUser = player.prop_APIUser_0; if (apiUser == null) { return; } if (APIUser.CurrentUser?.id == apiUser.id) { return; } if (Imports.IsDebugMode()) { MelonLogger.Log($"User {apiUser.displayName} dropped a portal"); } string denyReason = null; if (AdvancedSafetySettings.HidePortalsFromBlockedUsers && IsBlockedEitherWay(apiUser.id)) { denyReason = $"Disabling portal from ͏blocked user {apiUser.displayName}"; } else if (AdvancedSafetySettings.HidePortalsFromNonFriends && !APIUser.IsFriendsWith(apiUser.id)) { denyReason = $"Disabling portal from non-friend {apiUser.displayName}"; } else if (AdvancedSafetySettings.HidePortalsCreatedTooClose && VRCPlayer.field_Internal_Static_VRCPlayer_0 != null && Vector3.Distance(position, VRCPlayer.field_Internal_Static_VRCPlayer_0.transform.position) < .5f) { denyReason = $"Disabling portal from {apiUser.displayName}/{apiUser.id} because it was dropped too close to local player"; } if (denyReason == null) { return; } var instantiator = new ObjectInstantiator(thisPtr); var dict = instantiator.field_Private_Dictionary_2_Int32_ObjectNPrivateStVeQuGaInStUnique_0; if (dict.ContainsKey(networkId)) { var someStruct = dict[networkId]; MelonLogger.Log(denyReason); MelonCoroutines.Start(HideGameObjectAfterDelay(someStruct.field_Public_GameObject_0)); } } catch (Exception ex) { MelonLogger.LogError($"Exception in portal hider patch: {ex}"); } }
public unsafe string Get(TOwner owner) => IL2CPP.Il2CppStringToManaged(*(IntPtr *)GetPointer(owner.Pointer));
private void DeleteKey(IntPtr keyPtr) { var key = IL2CPP.Il2CppStringToManaged(keyPtr); myPrefs.TryRemove(key, out _); }
private bool HasKey(IntPtr keyPtr) { var key = IL2CPP.Il2CppStringToManaged(keyPtr); return(myPrefs.ContainsKey(key)); }