mirror of
https://github.com/SDraw/ml_mods_cvr.git
synced 2026-05-06 17:27:00 +00:00
PRM fix for build 2026r181
This commit is contained in:
parent
49987b5d72
commit
e357f83227
9 changed files with 88 additions and 142 deletions
|
|
@ -1,13 +1,11 @@
|
|||
using ABI.CCK.Components;
|
||||
using ABI_RC.Core.Player;
|
||||
using ABI_RC.Core.Savior;
|
||||
using ABI_RC.Systems.IK;
|
||||
using ABI_RC.Systems.Movement;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using UnityEngine;
|
||||
using System.Linq;
|
||||
using ABI_RC.Core.InteractionSystem;
|
||||
using NAK.Contacts;
|
||||
|
||||
namespace ml_prm
|
||||
{
|
||||
|
|
@ -18,6 +16,8 @@ namespace ml_prm
|
|||
static readonly FieldInfo ms_influencerTouchingVolumes = typeof(PhysicsInfluencer).GetField("_touchingVolumes", BindingFlags.Instance | BindingFlags.NonPublic);
|
||||
static readonly FieldInfo ms_influencerSubmergedColliders = typeof(PhysicsInfluencer).GetField("_submergedColliders", BindingFlags.Instance | BindingFlags.NonPublic);
|
||||
static readonly FieldInfo ms_lastCVRSeat = typeof(BetterBetterCharacterController).GetField("_lastCvrSeat", BindingFlags.Instance | BindingFlags.NonPublic);
|
||||
static readonly FieldInfo ms_contactList = typeof(ContactManager).GetField("contactList", BindingFlags.Instance | BindingFlags.NonPublic);
|
||||
static readonly FieldInfo ms_pendingRemove = typeof(ContactManager).GetField("pendingRemove", BindingFlags.Instance | BindingFlags.NonPublic);
|
||||
|
||||
public static void ClearFluidVolumes(this BetterBetterCharacterController p_instance) => (ms_touchingVolumes?.GetValue(p_instance) as List<FluidVolume>)?.Clear();
|
||||
|
||||
|
|
@ -35,6 +35,18 @@ namespace ml_prm
|
|||
|
||||
public static CVRSeat GetCurrentSeat(this BetterBetterCharacterController p_instance) => (ms_lastCVRSeat?.GetValue(p_instance) as CVRSeat);
|
||||
|
||||
public static bool IsRegistered(this ContactManager p_instance, ContactBase p_contact) => (ms_contactList?.GetValue(p_instance) as List<ContactBase>).Contains(p_contact);
|
||||
|
||||
public static void RestoreContact(this ContactManager p_instance, ContactBase p_contact, bool p_state)
|
||||
{
|
||||
if(p_instance.IsRegistered(p_contact))
|
||||
(ms_pendingRemove?.GetValue(p_instance) as HashSet<int>).Remove(p_contact.ContactId);
|
||||
else
|
||||
p_instance.Register(p_contact);
|
||||
|
||||
p_instance.SetEnabled(p_contact.ContactId, p_state);
|
||||
}
|
||||
|
||||
// Unity specific
|
||||
public static void CopyGlobal(this Transform p_source, Transform p_target)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue