Remote gestures handlers components creation based on current settings

Methods renames
This commit is contained in:
SDraw 2024-08-18 15:47:39 +03:00
parent e5d4ea9d29
commit b38187d6ef
No known key found for this signature in database
GPG key ID: BB95B4DAB2BB8BB5
36 changed files with 308 additions and 240 deletions

View file

@ -10,8 +10,8 @@ namespace ml_amt
internal class GameEvent
{
event Action m_action;
public void AddHandler(Action p_listener) => m_action += p_listener;
public void RemoveHandler(Action p_listener) => m_action -= p_listener;
public void AddListener(Action p_listener) => m_action += p_listener;
public void RemoveListener(Action p_listener) => m_action -= p_listener;
public void Invoke() => m_action?.Invoke();
}

View file

@ -52,14 +52,14 @@ namespace ml_amt
OnCrouchLimitChanged(Settings.CrouchLimit);
OnProneLimitChanged(Settings.ProneLimit);
Settings.OnCrouchLimitChanged.AddHandler(this.OnCrouchLimitChanged);
Settings.OnProneLimitChanged.AddHandler(this.OnProneLimitChanged);
Settings.OnMassCenterChanged.AddHandler(this.OnMassCenterChanged);
Settings.OnCrouchLimitChanged.AddListener(this.OnCrouchLimitChanged);
Settings.OnProneLimitChanged.AddListener(this.OnProneLimitChanged);
Settings.OnMassCenterChanged.AddListener(this.OnMassCenterChanged);
GameEvents.OnAvatarSetup.AddHandler(this.OnAvatarSetup);
GameEvents.OnAvatarClear.AddHandler(this.OnAvatarClear);
GameEvents.OnAvatarReuse.AddHandler(this.OnAvatarReuse);
GameEvents.OnPlayspaceScale.AddHandler(this.OnPlayspaceScale);
GameEvents.OnAvatarSetup.AddListener(this.OnAvatarSetup);
GameEvents.OnAvatarClear.AddListener(this.OnAvatarClear);
GameEvents.OnAvatarReuse.AddListener(this.OnAvatarReuse);
GameEvents.OnPlayspaceScale.AddListener(this.OnPlayspaceScale);
}
void OnDestroy()
@ -68,14 +68,14 @@ namespace ml_amt
m_ikLimits = null;
m_parameters.Clear();
Settings.OnCrouchLimitChanged.RemoveHandler(this.OnCrouchLimitChanged);
Settings.OnProneLimitChanged.RemoveHandler(this.OnProneLimitChanged);
Settings.OnMassCenterChanged.RemoveHandler(this.OnMassCenterChanged);
Settings.OnCrouchLimitChanged.RemoveListener(this.OnCrouchLimitChanged);
Settings.OnProneLimitChanged.RemoveListener(this.OnProneLimitChanged);
Settings.OnMassCenterChanged.RemoveListener(this.OnMassCenterChanged);
GameEvents.OnAvatarSetup.RemoveHandler(this.OnAvatarSetup);
GameEvents.OnAvatarClear.RemoveHandler(this.OnAvatarClear);
GameEvents.OnAvatarReuse.RemoveHandler(this.OnAvatarReuse);
GameEvents.OnPlayspaceScale.RemoveHandler(this.OnPlayspaceScale);
GameEvents.OnAvatarSetup.RemoveListener(this.OnAvatarSetup);
GameEvents.OnAvatarClear.RemoveListener(this.OnAvatarClear);
GameEvents.OnAvatarReuse.RemoveListener(this.OnAvatarReuse);
GameEvents.OnPlayspaceScale.RemoveListener(this.OnPlayspaceScale);
}
void Update()

View file

@ -9,8 +9,8 @@ namespace ml_amt
internal class SettingEvent<T>
{
event Action<T> m_action;
public void AddHandler(Action<T> p_listener) => m_action += p_listener;
public void RemoveHandler(Action<T> p_listener) => m_action -= p_listener;
public void AddListener(Action<T> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T> p_listener) => m_action -= p_listener;
public void Invoke(T p_value) => m_action?.Invoke(p_value);
}

View file

@ -9,8 +9,8 @@ namespace ml_asl
internal class SettingEvent<T>
{
event Action<T> m_action;
public void AddHandler(Action<T> p_listener) => m_action += p_listener;
public void RemoveHandler(Action<T> p_listener) => m_action -= p_listener;
public void AddListener(Action<T> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T> p_listener) => m_action -= p_listener;
public void Invoke(T p_value) => m_action?.Invoke(p_value);
}

View file

@ -82,10 +82,10 @@ namespace ml_bft
m_pose = new HumanPose();
m_lastValues = new float[40];
GameEvents.OnAvatarSetup.AddHandler(this.OnAvatarSetup);
GameEvents.OnAvatarClear.AddHandler(this.OnAvatarClear);
GameEvents.OnAvatarReuse.AddHandler(this.OnAvatarReuse);
GameEvents.OnIKSystemLateUpdate.AddHandler(this.OnIKSystemLateUpdate);
GameEvents.OnAvatarSetup.AddListener(this.OnAvatarSetup);
GameEvents.OnAvatarClear.AddListener(this.OnAvatarClear);
GameEvents.OnAvatarReuse.AddListener(this.OnAvatarReuse);
GameEvents.OnIKSystemLateUpdate.AddListener(this.OnIKSystemLateUpdate);
}
internal void Cleanup()
{
@ -96,10 +96,10 @@ namespace ml_bft
m_rightFingerOffsets.Clear();
m_ready = false;
GameEvents.OnAvatarSetup.RemoveHandler(this.OnAvatarSetup);
GameEvents.OnAvatarClear.RemoveHandler(this.OnAvatarClear);
GameEvents.OnAvatarReuse.RemoveHandler(this.OnAvatarReuse);
GameEvents.OnIKSystemLateUpdate.RemoveHandler(this.OnIKSystemLateUpdate);
GameEvents.OnAvatarSetup.RemoveListener(this.OnAvatarSetup);
GameEvents.OnAvatarClear.RemoveListener(this.OnAvatarClear);
GameEvents.OnAvatarReuse.RemoveListener(this.OnAvatarReuse);
GameEvents.OnIKSystemLateUpdate.RemoveListener(this.OnIKSystemLateUpdate);
}
internal void OnAvatarSetup()

View file

@ -12,15 +12,15 @@ namespace ml_bft
internal class GameEvent
{
event Action m_action;
public void AddHandler(Action p_listener) => m_action += p_listener;
public void RemoveHandler(Action p_listener) => m_action -= p_listener;
public void AddListener(Action p_listener) => m_action += p_listener;
public void RemoveListener(Action p_listener) => m_action -= p_listener;
public void Invoke() => m_action?.Invoke();
}
internal class GameEvent<T1, T2>
{
event Action<T1, T2> m_action;
public void AddHandler(Action<T1, T2> p_listener) => m_action += p_listener;
public void RemoveHandler(Action<T1, T2> p_listener) => m_action -= p_listener;
public void AddListener(Action<T1, T2> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T1, T2> p_listener) => m_action -= p_listener;
public void Invoke(T1 p_objA, T2 p_objB) => m_action?.Invoke(p_objA, p_objB);
}

View file

@ -18,7 +18,7 @@ namespace ml_bft
m_localRotations = new List<Quaternion>();
m_renderers = new List<Renderer>();
Settings.OnShowHandsChanged.AddHandler(this.OnShowHandsChanged);
Settings.OnShowHandsChanged.AddListener(this.OnShowHandsChanged);
}
public virtual void Cleanup()
@ -31,7 +31,7 @@ namespace ml_bft
m_localRotations.Clear();
m_renderers.Clear();
Settings.OnShowHandsChanged.RemoveHandler(this.OnShowHandsChanged);
Settings.OnShowHandsChanged.RemoveListener(this.OnShowHandsChanged);
}
public virtual void Update()

View file

@ -78,7 +78,7 @@ namespace ml_bft
base.OnShowHandsChanged(Settings.ShowHands);
OnMotionRangeChanged(Settings.MotionRange);
Settings.OnMotionRangeChanged.AddHandler(this.OnMotionRangeChanged);
Settings.OnMotionRangeChanged.AddListener(this.OnMotionRangeChanged);
}
public override void Cleanup()
@ -87,7 +87,7 @@ namespace ml_bft
m_skeletonAction = null;
Settings.OnMotionRangeChanged.RemoveHandler(this.OnMotionRangeChanged);
Settings.OnMotionRangeChanged.RemoveListener(this.OnMotionRangeChanged);
}
public override void Update()

View file

@ -28,9 +28,9 @@ namespace ml_bft
VRModeSwitchEvents.OnInitializeXR.AddListener(this.OnSwitchToVR);
VRModeSwitchEvents.OnDeinitializeXR.AddListener(this.OnSwitchToDesktop);
Settings.OnSkeletalInputChanged.AddHandler(this.OnSkeletalInputChanged);
Settings.OnSkeletalInputChanged.AddListener(this.OnSkeletalInputChanged);
GameEvents.OnInputUpdate.AddHandler(this.OnInputUpdate);
GameEvents.OnInputUpdate.AddListener(this.OnInputUpdate);
}
internal void Cleanup()
{
@ -39,9 +39,9 @@ namespace ml_bft
RemoveHandlers();
Settings.OnSkeletalInputChanged.RemoveHandler(this.OnSkeletalInputChanged);
Settings.OnSkeletalInputChanged.RemoveListener(this.OnSkeletalInputChanged);
GameEvents.OnInputUpdate.RemoveHandler(this.OnInputUpdate);
GameEvents.OnInputUpdate.RemoveListener(this.OnInputUpdate);
}
void SetupHandlers()

View file

@ -9,8 +9,8 @@ namespace ml_bft
internal class SettingEvent<T>
{
event Action<T> m_action;
public void AddHandler(Action<T> p_listener) => m_action += p_listener;
public void RemoveHandler(Action<T> p_listener) => m_action -= p_listener;
public void AddListener(Action<T> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T> p_listener) => m_action -= p_listener;
public void Invoke(T p_value) => m_action?.Invoke(p_value);
}

View file

@ -16,22 +16,22 @@ namespace ml_dht
internal class GameEvent
{
event Action m_action;
public void AddHandler(Action p_listener) => m_action += p_listener;
public void RemoveHandler(Action p_listener) => m_action -= p_listener;
public void AddListener(Action p_listener) => m_action += p_listener;
public void RemoveListener(Action p_listener) => m_action -= p_listener;
public void Invoke() => m_action?.Invoke();
}
internal class GameEvent<T1>
{
event Action<T1> m_action;
public void AddHandler(Action<T1> p_listener) => m_action += p_listener;
public void RemoveHandler(Action<T1> p_listener) => m_action -= p_listener;
public void AddListener(Action<T1> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T1> p_listener) => m_action -= p_listener;
public void Invoke(T1 p_obj) => m_action?.Invoke(p_obj);
}
internal class GameEvent<T1, T2>
{
event Action<T1, T2> m_action;
public void AddHandler(Action<T1, T2> p_listener) => m_action += p_listener;
public void RemoveHandler(Action<T1, T2> p_listener) => m_action -= p_listener;
public void AddListener(Action<T1, T2> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T1, T2> p_listener) => m_action -= p_listener;
public void Invoke(T1 p_objA, T2 p_objB) => m_action?.Invoke(p_objA, p_objB);
}

View file

@ -51,28 +51,28 @@ namespace ml_dht
OnHeadTrackingChanged(Settings.HeadTracking);
OnSmoothingChanged(Settings.Smoothing);
Settings.OnEnabledChanged.AddHandler(this.OnEnabledChanged);
Settings.OnHeadTrackingChanged.AddHandler(this.OnHeadTrackingChanged);
Settings.OnSmoothingChanged.AddHandler(this.OnSmoothingChanged);
Settings.OnEnabledChanged.AddListener(this.OnEnabledChanged);
Settings.OnHeadTrackingChanged.AddListener(this.OnHeadTrackingChanged);
Settings.OnSmoothingChanged.AddListener(this.OnSmoothingChanged);
GameEvents.OnAvatarClear.AddHandler(this.OnAvatarClear);
GameEvents.OnAvatarSetup.AddHandler(this.OnAvatarSetup);
GameEvents.OnAvatarReuse.AddHandler(this.OnAvatarReuse);
GameEvents.OnEyeControllerUpdate.AddHandler(this.OnEyeControllerUpdate);
GameEvents.OnFaceTrackingUpdate.AddHandler(this.UpdateFaceTracking);
GameEvents.OnAvatarClear.AddListener(this.OnAvatarClear);
GameEvents.OnAvatarSetup.AddListener(this.OnAvatarSetup);
GameEvents.OnAvatarReuse.AddListener(this.OnAvatarReuse);
GameEvents.OnEyeControllerUpdate.AddListener(this.OnEyeControllerUpdate);
GameEvents.OnFaceTrackingUpdate.AddListener(this.UpdateFaceTracking);
}
void OnDestroy()
{
Settings.OnEnabledChanged.RemoveHandler(this.OnEnabledChanged);
Settings.OnHeadTrackingChanged.RemoveHandler(this.OnHeadTrackingChanged);
Settings.OnSmoothingChanged.RemoveHandler(this.OnSmoothingChanged);
Settings.OnEnabledChanged.RemoveListener(this.OnEnabledChanged);
Settings.OnHeadTrackingChanged.RemoveListener(this.OnHeadTrackingChanged);
Settings.OnSmoothingChanged.RemoveListener(this.OnSmoothingChanged);
GameEvents.OnAvatarClear.RemoveHandler(this.OnAvatarClear);
GameEvents.OnAvatarSetup.RemoveHandler(this.OnAvatarSetup);
GameEvents.OnAvatarReuse.RemoveHandler(this.OnAvatarReuse);
GameEvents.OnEyeControllerUpdate.RemoveHandler(this.OnEyeControllerUpdate);
GameEvents.OnFaceTrackingUpdate.RemoveHandler(this.UpdateFaceTracking);
GameEvents.OnAvatarClear.RemoveListener(this.OnAvatarClear);
GameEvents.OnAvatarSetup.RemoveListener(this.OnAvatarSetup);
GameEvents.OnAvatarReuse.RemoveListener(this.OnAvatarReuse);
GameEvents.OnEyeControllerUpdate.RemoveListener(this.OnEyeControllerUpdate);
GameEvents.OnFaceTrackingUpdate.RemoveListener(this.UpdateFaceTracking);
}
void Update()

View file

@ -9,8 +9,8 @@ namespace ml_dht
internal class SettingEvent<T>
{
event Action<T> m_action;
public void AddHandler(Action<T> p_listener) => m_action += p_listener;
public void RemoveHandler(Action<T> p_listener) => m_action -= p_listener;
public void AddListener(Action<T> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T> p_listener) => m_action -= p_listener;
public void Invoke(T p_value) => m_action?.Invoke(p_value);
}

View file

@ -11,15 +11,15 @@ namespace ml_lme
internal class GameEvent
{
event Action m_action;
public void AddHandler(Action p_listener) => m_action += p_listener;
public void RemoveHandler(Action p_listener) => m_action -= p_listener;
public void AddListener(Action p_listener) => m_action += p_listener;
public void RemoveListener(Action p_listener) => m_action -= p_listener;
public void Invoke() => m_action?.Invoke();
}
internal class GameEvent<T1>
{
event Action<T1> m_action;
public void AddHandler(Action<T1> p_listener) => m_action += p_listener;
public void RemoveHandler(Action<T1> p_listener) => m_action -= p_listener;
public void AddListener(Action<T1> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T1> p_listener) => m_action -= p_listener;
public void Invoke(T1 p_obj) => m_action?.Invoke(p_obj);
}

View file

@ -92,13 +92,13 @@ namespace ml_lme
VRModeSwitchEvents.OnInitializeXR.AddListener(OnModeSwitch);
VRModeSwitchEvents.OnDeinitializeXR.AddListener(OnModeSwitch);
Settings.OnEnabledChanged.AddHandler(this.OnEnableChanged);
Settings.OnInteractionChanged.AddHandler(this.OnInteractionChanged);
Settings.OnGesturesChanged.AddHandler(this.OnGesturesChanged);
Settings.OnFingersOnlyChanged.AddHandler(this.OnFingersOnlyChanged);
Settings.OnEnabledChanged.AddListener(this.OnEnableChanged);
Settings.OnInteractionChanged.AddListener(this.OnInteractionChanged);
Settings.OnGesturesChanged.AddListener(this.OnGesturesChanged);
Settings.OnFingersOnlyChanged.AddListener(this.OnFingersOnlyChanged);
GameEvents.OnRayScale.AddHandler(this.OnRayScale);
GameEvents.OnPickupGrab.AddHandler(this.OnPickupGrab);
GameEvents.OnRayScale.AddListener(this.OnRayScale);
GameEvents.OnPickupGrab.AddListener(this.OnPickupGrab);
}
IEnumerator WaitForSettings()
@ -156,13 +156,13 @@ namespace ml_lme
VRModeSwitchEvents.OnInitializeXR.RemoveListener(OnModeSwitch);
VRModeSwitchEvents.OnDeinitializeXR.RemoveListener(OnModeSwitch);
Settings.OnEnabledChanged.RemoveHandler(this.OnEnableChanged);
Settings.OnInteractionChanged.RemoveHandler(this.OnInteractionChanged);
Settings.OnGesturesChanged.RemoveHandler(this.OnGesturesChanged);
Settings.OnFingersOnlyChanged.RemoveHandler(this.OnFingersOnlyChanged);
Settings.OnEnabledChanged.RemoveListener(this.OnEnableChanged);
Settings.OnInteractionChanged.RemoveListener(this.OnInteractionChanged);
Settings.OnGesturesChanged.RemoveListener(this.OnGesturesChanged);
Settings.OnFingersOnlyChanged.RemoveListener(this.OnFingersOnlyChanged);
GameEvents.OnRayScale.RemoveHandler(this.OnRayScale);
GameEvents.OnPickupGrab.RemoveHandler(this.OnPickupGrab);
GameEvents.OnRayScale.RemoveListener(this.OnRayScale);
GameEvents.OnPickupGrab.RemoveListener(this.OnPickupGrab);
}
public override void UpdateInput()

View file

@ -41,8 +41,8 @@ namespace ml_lme
m_leapController.Connect += this.OnLeapServiceConnect;
m_leapController.Disconnect += this.OnLeapServiceDisconnect;
Settings.OnEnabledChanged.AddHandler(this.OnEnableChanged);
Settings.OnTrackingModeChanged.AddHandler(this.OnTrackingModeChanged);
Settings.OnEnabledChanged.AddListener(this.OnEnableChanged);
Settings.OnTrackingModeChanged.AddListener(this.OnTrackingModeChanged);
m_leapTracking = new GameObject("[LeapTrackingRoot]").AddComponent<LeapTracking>();
m_leapTracking.transform.parent = this.transform;
@ -84,8 +84,8 @@ namespace ml_lme
}
m_leapInput = null;
Settings.OnEnabledChanged.RemoveHandler(this.OnEnableChanged);
Settings.OnTrackingModeChanged.RemoveHandler(this.OnTrackingModeChanged);
Settings.OnEnabledChanged.RemoveListener(this.OnEnableChanged);
Settings.OnTrackingModeChanged.RemoveListener(this.OnTrackingModeChanged);
}
IEnumerator WaitForObjects()

View file

@ -139,13 +139,13 @@ namespace ml_lme
OnFingersOnlyChanged(Settings.FingersOnly);
OnTrackElbowsChanged(Settings.TrackElbows);
Settings.OnEnabledChanged.AddHandler(this.OnEnabledChanged);
Settings.OnFingersOnlyChanged.AddHandler(this.OnFingersOnlyChanged);
Settings.OnTrackElbowsChanged.AddHandler(this.OnTrackElbowsChanged);
Settings.OnEnabledChanged.AddListener(this.OnEnabledChanged);
Settings.OnFingersOnlyChanged.AddListener(this.OnFingersOnlyChanged);
Settings.OnTrackElbowsChanged.AddListener(this.OnTrackElbowsChanged);
GameEvents.OnAvatarClear.AddHandler(this.OnAvatarClear);
GameEvents.OnAvatarSetup.AddHandler(this.OnAvatarSetup);
GameEvents.OnAvatarReuse.AddHandler(this.OnAvatarReuse);
GameEvents.OnAvatarClear.AddListener(this.OnAvatarClear);
GameEvents.OnAvatarSetup.AddListener(this.OnAvatarSetup);
GameEvents.OnAvatarReuse.AddListener(this.OnAvatarReuse);
}
void OnDestroy()
@ -165,13 +165,13 @@ namespace ml_lme
m_vrIK = null;
Settings.OnEnabledChanged.RemoveHandler(this.OnEnabledChanged);
Settings.OnFingersOnlyChanged.RemoveHandler(this.OnFingersOnlyChanged);
Settings.OnTrackElbowsChanged.RemoveHandler(this.OnTrackElbowsChanged);
Settings.OnEnabledChanged.RemoveListener(this.OnEnabledChanged);
Settings.OnFingersOnlyChanged.RemoveListener(this.OnFingersOnlyChanged);
Settings.OnTrackElbowsChanged.RemoveListener(this.OnTrackElbowsChanged);
GameEvents.OnAvatarClear.RemoveHandler(this.OnAvatarClear);
GameEvents.OnAvatarSetup.RemoveHandler(this.OnAvatarSetup);
GameEvents.OnAvatarReuse.RemoveHandler(this.OnAvatarReuse);
GameEvents.OnAvatarClear.RemoveListener(this.OnAvatarClear);
GameEvents.OnAvatarSetup.RemoveListener(this.OnAvatarSetup);
GameEvents.OnAvatarReuse.RemoveListener(this.OnAvatarReuse);
}
void Update()

View file

@ -76,17 +76,17 @@ namespace ml_lme
VRModeSwitchEvents.OnInitializeXR.AddListener(this.OnAvatarSetup);
VRModeSwitchEvents.OnDeinitializeXR.AddListener(this.OnAvatarSetup);
Settings.OnDesktopOffsetChanged.AddHandler(this.OnDesktopOffsetChanged);
Settings.OnModelVisibilityChanged.AddHandler(this.OnModelVisibilityChanged);
Settings.OnVisualHandsChanged.AddHandler(this.OnVisualHandsChanged);
Settings.OnTrackingModeChanged.AddHandler(this.OnTrackingModeChanged);
Settings.OnRootAngleChanged.AddHandler(this.OnRootAngleChanged);
Settings.OnHeadAttachChanged.AddHandler(this.OnHeadAttachChanged);
Settings.OnHeadOffsetChanged.AddHandler(this.OnHeadOffsetChanged);
Settings.OnDesktopOffsetChanged.AddListener(this.OnDesktopOffsetChanged);
Settings.OnModelVisibilityChanged.AddListener(this.OnModelVisibilityChanged);
Settings.OnVisualHandsChanged.AddListener(this.OnVisualHandsChanged);
Settings.OnTrackingModeChanged.AddListener(this.OnTrackingModeChanged);
Settings.OnRootAngleChanged.AddListener(this.OnRootAngleChanged);
Settings.OnHeadAttachChanged.AddListener(this.OnHeadAttachChanged);
Settings.OnHeadOffsetChanged.AddListener(this.OnHeadOffsetChanged);
GameEvents.OnAvatarClear.AddHandler(this.OnAvatarClear);
GameEvents.OnAvatarSetup.AddHandler(this.OnAvatarSetup);
GameEvents.OnPlayspaceScale.AddHandler(this.OnPlayspaceScale);
GameEvents.OnAvatarClear.AddListener(this.OnAvatarClear);
GameEvents.OnAvatarSetup.AddListener(this.OnAvatarSetup);
GameEvents.OnPlayspaceScale.AddListener(this.OnPlayspaceScale);
}
IEnumerator WaitForLocalPlayer()
@ -123,17 +123,17 @@ namespace ml_lme
VRModeSwitchEvents.OnInitializeXR.RemoveListener(this.OnAvatarSetup);
VRModeSwitchEvents.OnDeinitializeXR.RemoveListener(this.OnAvatarSetup);
Settings.OnDesktopOffsetChanged.RemoveHandler(this.OnDesktopOffsetChanged);
Settings.OnModelVisibilityChanged.RemoveHandler(this.OnModelVisibilityChanged);
Settings.OnVisualHandsChanged.RemoveHandler(this.OnVisualHandsChanged);
Settings.OnTrackingModeChanged.RemoveHandler(this.OnTrackingModeChanged);
Settings.OnRootAngleChanged.RemoveHandler(this.OnRootAngleChanged);
Settings.OnHeadAttachChanged.RemoveHandler(this.OnHeadAttachChanged);
Settings.OnHeadOffsetChanged.RemoveHandler(this.OnHeadOffsetChanged);
Settings.OnDesktopOffsetChanged.RemoveListener(this.OnDesktopOffsetChanged);
Settings.OnModelVisibilityChanged.RemoveListener(this.OnModelVisibilityChanged);
Settings.OnVisualHandsChanged.RemoveListener(this.OnVisualHandsChanged);
Settings.OnTrackingModeChanged.RemoveListener(this.OnTrackingModeChanged);
Settings.OnRootAngleChanged.RemoveListener(this.OnRootAngleChanged);
Settings.OnHeadAttachChanged.RemoveListener(this.OnHeadAttachChanged);
Settings.OnHeadOffsetChanged.RemoveListener(this.OnHeadOffsetChanged);
GameEvents.OnAvatarClear.RemoveHandler(this.OnAvatarClear);
GameEvents.OnAvatarSetup.RemoveHandler(this.OnAvatarSetup);
GameEvents.OnPlayspaceScale.RemoveHandler(this.OnPlayspaceScale);
GameEvents.OnAvatarClear.RemoveListener(this.OnAvatarClear);
GameEvents.OnAvatarSetup.RemoveListener(this.OnAvatarSetup);
GameEvents.OnPlayspaceScale.RemoveListener(this.OnPlayspaceScale);
}
void Update()

View file

@ -10,8 +10,8 @@ namespace ml_lme
internal class SettingEvent<T>
{
event Action<T> m_action;
public void AddHandler(Action<T> p_listener) => m_action += p_listener;
public void RemoveHandler(Action<T> p_listener) => m_action -= p_listener;
public void AddListener(Action<T> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T> p_listener) => m_action -= p_listener;
public void Invoke(T p_value) => m_action?.Invoke(p_value);
}

View file

@ -78,17 +78,17 @@ namespace ml_pam
m_enabled = Settings.Enabled;
Settings.OnEnabledChanged.AddHandler(this.OnEnabledChanged);
Settings.OnGrabOffsetChanged.AddHandler(this.OnGrabOffsetChanged);
Settings.OnLeadingHandChanged.AddHandler(this.OnLeadingHandChanged);
Settings.OnHandsExtensionChanged.AddHandler(this.OnHandsExtensionChanged);
Settings.OnEnabledChanged.AddListener(this.OnEnabledChanged);
Settings.OnGrabOffsetChanged.AddListener(this.OnGrabOffsetChanged);
Settings.OnLeadingHandChanged.AddListener(this.OnLeadingHandChanged);
Settings.OnHandsExtensionChanged.AddListener(this.OnHandsExtensionChanged);
GameEvents.OnAvatarClear.AddHandler(this.OnAvatarClear);
GameEvents.OnAvatarSetup.AddHandler(this.OnAvatarSetup);
GameEvents.OnAvatarReuse.AddHandler(this.OnAvatarReuse);
GameEvents.OnPlayspaceScale.AddHandler(this.OnPlayspaceScale);
GameEvents.OnPickupGrab.AddHandler(this.OnPickupGrab);
GameEvents.OnPickupDrop.AddHandler(this.OnPickupDrop);
GameEvents.OnAvatarClear.AddListener(this.OnAvatarClear);
GameEvents.OnAvatarSetup.AddListener(this.OnAvatarSetup);
GameEvents.OnAvatarReuse.AddListener(this.OnAvatarReuse);
GameEvents.OnPlayspaceScale.AddListener(this.OnPlayspaceScale);
GameEvents.OnPickupGrab.AddListener(this.OnPickupGrab);
GameEvents.OnPickupDrop.AddListener(this.OnPickupDrop);
}
void OnDestroy()
@ -108,17 +108,17 @@ namespace ml_pam
m_pickup = null;
m_vrIK = null;
Settings.OnEnabledChanged.RemoveHandler(this.OnEnabledChanged);
Settings.OnGrabOffsetChanged.RemoveHandler(this.OnGrabOffsetChanged);
Settings.OnLeadingHandChanged.RemoveHandler(this.OnLeadingHandChanged);
Settings.OnHandsExtensionChanged.RemoveHandler(this.OnHandsExtensionChanged);
Settings.OnEnabledChanged.RemoveListener(this.OnEnabledChanged);
Settings.OnGrabOffsetChanged.RemoveListener(this.OnGrabOffsetChanged);
Settings.OnLeadingHandChanged.RemoveListener(this.OnLeadingHandChanged);
Settings.OnHandsExtensionChanged.RemoveListener(this.OnHandsExtensionChanged);
GameEvents.OnAvatarClear.RemoveHandler(this.OnAvatarClear);
GameEvents.OnAvatarSetup.RemoveHandler(this.OnAvatarSetup);
GameEvents.OnAvatarReuse.RemoveHandler(this.OnAvatarReuse);
GameEvents.OnPlayspaceScale.RemoveHandler(this.OnPlayspaceScale);
GameEvents.OnPickupGrab.RemoveHandler(this.OnPickupGrab);
GameEvents.OnPickupDrop.RemoveHandler(this.OnPickupDrop);
GameEvents.OnAvatarClear.RemoveListener(this.OnAvatarClear);
GameEvents.OnAvatarSetup.RemoveListener(this.OnAvatarSetup);
GameEvents.OnAvatarReuse.RemoveListener(this.OnAvatarReuse);
GameEvents.OnPlayspaceScale.RemoveListener(this.OnPlayspaceScale);
GameEvents.OnPickupGrab.RemoveListener(this.OnPickupGrab);
GameEvents.OnPickupDrop.RemoveListener(this.OnPickupDrop);
}
void Update()

View file

@ -12,22 +12,22 @@ namespace ml_pam
internal class GameEvent
{
event Action m_action;
public void AddHandler(Action p_listener) => m_action += p_listener;
public void RemoveHandler(Action p_listener) => m_action -= p_listener;
public void AddListener(Action p_listener) => m_action += p_listener;
public void RemoveListener(Action p_listener) => m_action -= p_listener;
public void Invoke() => m_action?.Invoke();
}
internal class GameEvent<T1>
{
event Action<T1> m_action;
public void AddHandler(Action<T1> p_listener) => m_action += p_listener;
public void RemoveHandler(Action<T1> p_listener) => m_action -= p_listener;
public void AddListener(Action<T1> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T1> p_listener) => m_action -= p_listener;
public void Invoke(T1 p_obj) => m_action?.Invoke(p_obj);
}
internal class GameEvent<T1, T2>
{
event Action<T1, T2> m_action;
public void AddHandler(Action<T1, T2> p_listener) => m_action += p_listener;
public void RemoveHandler(Action<T1, T2> p_listener) => m_action -= p_listener;
public void AddListener(Action<T1, T2> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T1, T2> p_listener) => m_action -= p_listener;
public void Invoke(T1 p_objA, T2 p_objB) => m_action?.Invoke(p_objA, p_objB);
}

View file

@ -9,8 +9,8 @@ namespace ml_pam
internal class SettingEvent<T>
{
event Action<T> m_action;
public void AddHandler(Action<T> p_listener) => m_action += p_listener;
public void RemoveHandler(Action<T> p_listener) => m_action -= p_listener;
public void AddListener(Action<T> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T> p_listener) => m_action -= p_listener;
public void Invoke(T p_value) => m_action?.Invoke(p_value);
}

View file

@ -107,9 +107,9 @@ namespace ml_pin
bool ShouldNotifyInCurrentInstance()
{
bool l_isInPublic = (MetaPort.Instance.CurrentInstancePrivacy.Contains("Public") && Settings.NotifyInPublic);
bool l_isInFriends = (MetaPort.Instance.CurrentInstancePrivacy.Contains("Friends") && Settings.NotifyInFriends);
bool l_isInPrivate = (MetaPort.Instance.CurrentInstancePrivacy.Contains("invite") && Settings.NotifyInPrivate);
bool l_isInPublic = ((MetaPort.Instance.CurrentInstancePrivacyType == MetaPort.InstancePrivacy.Public) && Settings.NotifyInPublic);
bool l_isInFriends = (((MetaPort.Instance.CurrentInstancePrivacyType == MetaPort.InstancePrivacy.Friends) || (MetaPort.Instance.CurrentInstancePrivacyType == MetaPort.InstancePrivacy.FriendsOfFriends)) && Settings.NotifyInFriends);
bool l_isInPrivate = (((MetaPort.Instance.CurrentInstancePrivacyType == MetaPort.InstancePrivacy.EveryoneCanInvite) || (MetaPort.Instance.CurrentInstancePrivacyType == MetaPort.InstancePrivacy.OwnerMustInvite)) && Settings.NotifyInPrivate);
return (l_isInPublic || l_isInFriends || l_isInPrivate);
}
}

View file

@ -9,8 +9,8 @@ namespace ml_pin
internal class SettingEvent<T>
{
event Action<T> m_action;
public void AddHandler(Action<T> p_listener) => m_action += p_listener;
public void RemoveHandler(Action<T> p_listener) => m_action -= p_listener;
public void AddListener(Action<T> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T> p_listener) => m_action -= p_listener;
public void Invoke(T p_value) => m_action?.Invoke(p_value);
}

View file

@ -10,8 +10,8 @@ namespace ml_pmc
internal class GameEvent
{
event Action m_action;
public void AddHandler(Action p_listener) => m_action += p_listener;
public void RemoveHandler(Action p_listener) => m_action -= p_listener;
public void AddListener(Action p_listener) => m_action += p_listener;
public void RemoveListener(Action p_listener) => m_action -= p_listener;
public void Invoke() => m_action?.Invoke();
}

View file

@ -12,8 +12,8 @@ namespace ml_pmc
internal class UiEvent<T>
{
event Action<T> m_action;
public void AddHandler(Action<T> p_listener) => m_action += p_listener;
public void RemoveHandler(Action<T> p_listener) => m_action -= p_listener;
public void AddListener(Action<T> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T> p_listener) => m_action -= p_listener;
public void Invoke(T p_value) => m_action?.Invoke(p_value);
}
@ -72,7 +72,7 @@ namespace ml_pmc
(ms_uiElements[(int)UiIndex.Reset] as Button).OnPress += Reset;
BTKUILib.QuickMenuAPI.OnPlayerSelected += (_, id) => ms_selectedPlayer = id;
PoseCopycat.OnCopycatChanged.AddHandler(OnCopycatChanged);
PoseCopycat.OnCopycatChanged.AddListener(OnCopycatChanged);
}
static void OnCopySwitch() => OnTargetSelect.Invoke(ms_selectedPlayer);

View file

@ -15,8 +15,8 @@ namespace ml_pmc
public class CopycatEvent<T1>
{
event System.Action<T1> m_action;
public void AddHandler(System.Action<T1> p_listener) => m_action += p_listener;
public void RemoveHandler(System.Action<T1> p_listener) => m_action -= p_listener;
public void AddListener(System.Action<T1> p_listener) => m_action += p_listener;
public void RemoveListener(System.Action<T1> p_listener) => m_action -= p_listener;
public void Invoke(T1 p_value) => m_action?.Invoke(p_value);
}
@ -51,12 +51,12 @@ namespace ml_pmc
void Start()
{
GameEvents.OnAvatarClear.AddHandler(this.OnAvatarClear);
GameEvents.OnAvatarSetup.AddHandler(this.OnAvatarSetup);
GameEvents.OnAvatarPreReuse.AddHandler(this.OnAvatarPreReuse);
GameEvents.OnAvatarPostReuse.AddHandler(this.OnAvatarPostReuse);
GameEvents.OnAvatarClear.AddListener(this.OnAvatarClear);
GameEvents.OnAvatarSetup.AddListener(this.OnAvatarSetup);
GameEvents.OnAvatarPreReuse.AddListener(this.OnAvatarPreReuse);
GameEvents.OnAvatarPostReuse.AddListener(this.OnAvatarPostReuse);
ModUi.OnTargetSelect.AddHandler(this.OnTargetSelect);
ModUi.OnTargetSelect.AddListener(this.OnTargetSelect);
}
void OnDestroy()
{
@ -74,12 +74,12 @@ namespace ml_pmc
m_vrIk = null;
m_lookAtIk = null;
GameEvents.OnAvatarClear.RemoveHandler(this.OnAvatarClear);
GameEvents.OnAvatarSetup.RemoveHandler(this.OnAvatarSetup);
GameEvents.OnAvatarPreReuse.RemoveHandler(this.OnAvatarPreReuse);
GameEvents.OnAvatarPostReuse.RemoveHandler(this.OnAvatarPostReuse);
GameEvents.OnAvatarClear.RemoveListener(this.OnAvatarClear);
GameEvents.OnAvatarSetup.RemoveListener(this.OnAvatarSetup);
GameEvents.OnAvatarPreReuse.RemoveListener(this.OnAvatarPreReuse);
GameEvents.OnAvatarPostReuse.RemoveListener(this.OnAvatarPostReuse);
ModUi.OnTargetSelect.RemoveHandler(this.OnTargetSelect);
ModUi.OnTargetSelect.RemoveListener(this.OnTargetSelect);
}
// Unity events

View file

@ -8,8 +8,8 @@ namespace ml_pmc
internal class SettingEvent<T>
{
event Action<T> m_action;
public void AddHandler(Action<T> p_listener) => m_action += p_listener;
public void RemoveHandler(Action<T> p_listener) => m_action -= p_listener;
public void AddListener(Action<T> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T> p_listener) => m_action -= p_listener;
public void Invoke(T p_value) => m_action?.Invoke(p_value);
}

View file

@ -20,15 +20,15 @@ namespace ml_prm
internal class GameEvent
{
event Action m_action;
public void AddHandler(Action p_listener) => m_action += p_listener;
public void RemoveHandler(Action p_listener) => m_action -= p_listener;
public void AddListener(Action p_listener) => m_action += p_listener;
public void RemoveListener(Action p_listener) => m_action -= p_listener;
public void Invoke() => m_action?.Invoke();
}
internal class GameEvent<T1>
{
event Action<T1> m_action;
public void AddHandler(Action<T1> p_listener) => m_action += p_listener;
public void RemoveHandler(Action<T1> p_listener) => m_action -= p_listener;
public void AddListener(Action<T1> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T1> p_listener) => m_action -= p_listener;
public void Invoke(T1 p_obj) => m_action?.Invoke(p_obj);
}

View file

@ -1,6 +1,5 @@
using ABI_RC.Core.Player;
using ABI_RC.Core.Util.AssetFiltering;
using ABI_RC.Systems.GameEventSystem;
using System;
using System.Collections.Generic;
using System.Reflection;
@ -17,8 +16,7 @@ namespace ml_prm
ModUi.Init();
GameEvents.Init(HarmonyInstance);
WorldHandler.Init();
CVRGameEventSystem.Player.OnJoinEntity.AddListener(this.OnRemotePlayerCreated);
RemoteGestureManager.Init();
MelonLoader.MelonCoroutines.Start(WaitForLocalPlayer());
MelonLoader.MelonCoroutines.Start(WaitForWhitelist());
@ -27,12 +25,11 @@ namespace ml_prm
public override void OnDeinitializeMelon()
{
WorldHandler.DeInit();
RemoteGestureManager.DeInit();
if(m_localController != null)
UnityEngine.Object.Destroy(m_localController);
m_localController = null;
CVRGameEventSystem.Player.OnJoinEntity.RemoveListener(this.OnRemotePlayerCreated);
}
System.Collections.IEnumerator WaitForLocalPlayer()
@ -55,11 +52,5 @@ namespace ml_prm
}
l_hashSet.Add(typeof(RagdollToggle));
}
void OnRemotePlayerCreated(CVRPlayerEntity p_player)
{
if((p_player != null) && (p_player.PuppetMaster != null))
p_player.PuppetMaster.gameObject.AddComponent<RemoteGestureHandler>();
}
}
}

View file

@ -11,8 +11,8 @@ namespace ml_prm
internal class UiEvent
{
event Action m_action;
public void AddHandler(Action p_listener) => m_action += p_listener;
public void RemoveHandler(Action p_listener) => m_action -= p_listener;
public void AddListener(Action p_listener) => m_action += p_listener;
public void RemoveListener(Action p_listener) => m_action -= p_listener;
public void Invoke() => m_action?.Invoke();
}
@ -87,7 +87,7 @@ namespace ml_prm
ms_hotkeyToggle = ms_category.AddToggle("Use hotkey", "Switch ragdoll mode with 'R' key", Settings.Hotkey);
ms_hotkeyToggle.ToggleTooltip = string.Format(c_ragdollKeyTooltip, Settings.HotkeyKey);
ms_hotkeyToggle.OnValueUpdated += (state) => OnToggleUpdate(UiIndex.Hotkey, state);
Settings.OnHotkeyKeyChanged.AddHandler(OnHotkeyKeyChanged);
Settings.OnHotkeyKeyChanged.AddListener(OnHotkeyKeyChanged);
ms_gravityToggle = ms_category.AddToggle("Use gravity", "Apply gravity to ragdoll", Settings.Gravity);
ms_gravityToggle.OnValueUpdated += (state) => OnToggleUpdate(UiIndex.Gravity, state);

View file

@ -81,30 +81,30 @@ namespace ml_prm
m_puppetRoot.localPosition = Vector3.zero;
m_puppetRoot.localRotation = Quaternion.identity;
Settings.OnMovementDragChanged.AddHandler(this.OnMovementDragChanged);
Settings.OnAngularDragChanged.AddHandler(this.OnAngularDragChanged);
Settings.OnGravityChanged.AddHandler(this.OnGravityChanged);
Settings.OnSlipperinessChanged.AddHandler(this.OnPhysicsMaterialChanged);
Settings.OnBouncinessChanged.AddHandler(this.OnPhysicsMaterialChanged);
Settings.OnBuoyancyChanged.AddHandler(this.OnBuoyancyChanged);
Settings.OnFallDamageChanged.AddHandler(this.OnFallDamageChanged);
Settings.OnGestureGrabChanged.AddHandler(this.OnGestureGrabChanged);
Settings.OnMovementDragChanged.AddListener(this.OnMovementDragChanged);
Settings.OnAngularDragChanged.AddListener(this.OnAngularDragChanged);
Settings.OnGravityChanged.AddListener(this.OnGravityChanged);
Settings.OnSlipperinessChanged.AddListener(this.OnPhysicsMaterialChanged);
Settings.OnBouncinessChanged.AddListener(this.OnPhysicsMaterialChanged);
Settings.OnBuoyancyChanged.AddListener(this.OnBuoyancyChanged);
Settings.OnFallDamageChanged.AddListener(this.OnFallDamageChanged);
Settings.OnGestureGrabChanged.AddListener(this.OnGestureGrabChanged);
GameEvents.OnAvatarClear.AddHandler(this.OnAvatarClear);
GameEvents.OnAvatarSetup.AddHandler(this.OnAvatarSetup);
GameEvents.OnAvatarPreReuse.AddHandler(this.OnAvatarPreReuse);
GameEvents.OnAvatarPostReuse.AddHandler(this.OnAvatarPostReuse);
GameEvents.OnIKScaling.AddHandler(this.OnAvatarScaling);
GameEvents.OnSeatPreSit.AddHandler(this.OnSeatPreSit);
GameEvents.OnCalibrationStart.AddHandler(this.OnCalibrationStart);
GameEvents.OnWorldPreSpawn.AddHandler(this.OnWorldPreSpawn);
GameEvents.OnCombatPreDown.AddHandler(this.OnCombatPreDown);
GameEvents.OnFlightChange.AddHandler(this.OnFlightChange);
GameEvents.OnIKOffsetUpdate.AddHandler(this.OnIKOffsetUpdate);
GameEvents.OnAvatarClear.AddListener(this.OnAvatarClear);
GameEvents.OnAvatarSetup.AddListener(this.OnAvatarSetup);
GameEvents.OnAvatarPreReuse.AddListener(this.OnAvatarPreReuse);
GameEvents.OnAvatarPostReuse.AddListener(this.OnAvatarPostReuse);
GameEvents.OnIKScaling.AddListener(this.OnAvatarScaling);
GameEvents.OnSeatPreSit.AddListener(this.OnSeatPreSit);
GameEvents.OnCalibrationStart.AddListener(this.OnCalibrationStart);
GameEvents.OnWorldPreSpawn.AddListener(this.OnWorldPreSpawn);
GameEvents.OnCombatPreDown.AddListener(this.OnCombatPreDown);
GameEvents.OnFlightChange.AddListener(this.OnFlightChange);
GameEvents.OnIKOffsetUpdate.AddListener(this.OnIKOffsetUpdate);
BetterBetterCharacterController.OnTeleport.AddListener(this.OnPlayerTeleport);
ModUi.OnSwitchChanged.AddHandler(this.SwitchRagdoll);
RemoteGestureHandler.OnGestureState.AddHandler(this.OnRemotePlayerGestureStateChanged);
ModUi.OnSwitchChanged.AddListener(this.SwitchRagdoll);
RemoteGestureHandler.OnGestureState.AddListener(this.OnRemotePlayerGestureStateChanged);
}
void OnDestroy()
@ -130,30 +130,30 @@ namespace ml_prm
Object.Destroy(m_physicsMaterial);
m_physicsMaterial = null;
Settings.OnMovementDragChanged.RemoveHandler(this.OnMovementDragChanged);
Settings.OnAngularDragChanged.RemoveHandler(this.OnAngularDragChanged);
Settings.OnGravityChanged.RemoveHandler(this.OnGravityChanged);
Settings.OnSlipperinessChanged.RemoveHandler(this.OnPhysicsMaterialChanged);
Settings.OnBouncinessChanged.RemoveHandler(this.OnPhysicsMaterialChanged);
Settings.OnBuoyancyChanged.RemoveHandler(this.OnBuoyancyChanged);
Settings.OnFallDamageChanged.RemoveHandler(this.OnFallDamageChanged);
Settings.OnGestureGrabChanged.RemoveHandler(this.OnGestureGrabChanged);
Settings.OnMovementDragChanged.RemoveListener(this.OnMovementDragChanged);
Settings.OnAngularDragChanged.RemoveListener(this.OnAngularDragChanged);
Settings.OnGravityChanged.RemoveListener(this.OnGravityChanged);
Settings.OnSlipperinessChanged.RemoveListener(this.OnPhysicsMaterialChanged);
Settings.OnBouncinessChanged.RemoveListener(this.OnPhysicsMaterialChanged);
Settings.OnBuoyancyChanged.RemoveListener(this.OnBuoyancyChanged);
Settings.OnFallDamageChanged.RemoveListener(this.OnFallDamageChanged);
Settings.OnGestureGrabChanged.RemoveListener(this.OnGestureGrabChanged);
GameEvents.OnAvatarClear.RemoveHandler(this.OnAvatarClear);
GameEvents.OnAvatarSetup.RemoveHandler(this.OnAvatarSetup);
GameEvents.OnAvatarPreReuse.RemoveHandler(this.OnAvatarPreReuse);
GameEvents.OnAvatarPostReuse.RemoveHandler(this.OnAvatarPostReuse);
GameEvents.OnIKScaling.RemoveHandler(this.OnAvatarScaling);
GameEvents.OnSeatPreSit.RemoveHandler(this.OnSeatPreSit);
GameEvents.OnCalibrationStart.RemoveHandler(this.OnCalibrationStart);
GameEvents.OnWorldPreSpawn.RemoveHandler(this.OnWorldPreSpawn);
GameEvents.OnCombatPreDown.RemoveHandler(this.OnCombatPreDown);
GameEvents.OnFlightChange.RemoveHandler(this.OnFlightChange);
GameEvents.OnIKOffsetUpdate.RemoveHandler(this.OnIKOffsetUpdate);
GameEvents.OnAvatarClear.RemoveListener(this.OnAvatarClear);
GameEvents.OnAvatarSetup.RemoveListener(this.OnAvatarSetup);
GameEvents.OnAvatarPreReuse.RemoveListener(this.OnAvatarPreReuse);
GameEvents.OnAvatarPostReuse.RemoveListener(this.OnAvatarPostReuse);
GameEvents.OnIKScaling.RemoveListener(this.OnAvatarScaling);
GameEvents.OnSeatPreSit.RemoveListener(this.OnSeatPreSit);
GameEvents.OnCalibrationStart.RemoveListener(this.OnCalibrationStart);
GameEvents.OnWorldPreSpawn.RemoveListener(this.OnWorldPreSpawn);
GameEvents.OnCombatPreDown.RemoveListener(this.OnCombatPreDown);
GameEvents.OnFlightChange.RemoveListener(this.OnFlightChange);
GameEvents.OnIKOffsetUpdate.RemoveListener(this.OnIKOffsetUpdate);
BetterBetterCharacterController.OnTeleport.RemoveListener(this.OnPlayerTeleport);
ModUi.OnSwitchChanged.RemoveHandler(this.SwitchRagdoll);
RemoteGestureHandler.OnGestureState.RemoveHandler(this.OnRemotePlayerGestureStateChanged);
ModUi.OnSwitchChanged.RemoveListener(this.SwitchRagdoll);
RemoteGestureHandler.OnGestureState.RemoveListener(this.OnRemotePlayerGestureStateChanged);
}
void Update()

View file

@ -1,8 +1,6 @@
using ABI_RC.Core.Networking.IO.Social;
using ABI_RC.Core.Player;
using System;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
namespace ml_prm
@ -12,8 +10,8 @@ namespace ml_prm
internal class GestureEvent<T1, T2, T3>
{
event Action<T1, T2, T3> m_action;
public void AddHandler(Action<T1, T2, T3> p_listener) => m_action += p_listener;
public void RemoveHandler(Action<T1, T2, T3> p_listener) => m_action -= p_listener;
public void AddListener(Action<T1, T2, T3> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T1, T2, T3> p_listener) => m_action -= p_listener;
public void Invoke(T1 p_objA, T2 p_objB, T3 p_objC) => m_action?.Invoke(p_objA, p_objB, p_objC);
}

View file

@ -0,0 +1,79 @@
using ABI_RC.Core.Player;
using ABI_RC.Systems.GameEventSystem;
using System;
using System.Collections.Generic;
namespace ml_prm
{
static class RemoteGestureManager
{
static readonly Dictionary<CVRPlayerEntity, RemoteGestureHandler> ms_remoteHandlers = new Dictionary<CVRPlayerEntity, RemoteGestureHandler>();
internal static void Init()
{
CVRGameEventSystem.Player.OnJoinEntity.AddListener(OnRemotePlayerCreated);
CVRGameEventSystem.Player.OnLeaveEntity.AddListener(OnRemotePlayerDestroyed);
Settings.OnGestureGrabChanged.AddListener(OnGestureGrabChanged);
}
internal static void DeInit()
{
CVRGameEventSystem.Player.OnJoinEntity.RemoveListener(OnRemotePlayerCreated);
CVRGameEventSystem.Player.OnLeaveEntity.RemoveListener(OnRemotePlayerDestroyed);
Settings.OnGestureGrabChanged.RemoveListener(OnGestureGrabChanged);
}
static void OnRemotePlayerCreated(CVRPlayerEntity p_player)
{
try
{
if(Settings.GestureGrab && (p_player != null) && (p_player.PuppetMaster != null))
{
RemoteGestureHandler l_handler = p_player.PuppetMaster.gameObject.AddComponent<RemoteGestureHandler>();
ms_remoteHandlers.Add(p_player, l_handler);
}
}
catch(Exception e)
{
MelonLoader.MelonLogger.Error(e);
}
}
static void OnRemotePlayerDestroyed(CVRPlayerEntity p_player)
{
try
{
if(p_player != null)
ms_remoteHandlers.Remove(p_player);
}
catch(Exception e)
{
MelonLoader.MelonLogger.Error(e);
}
}
static void OnGestureGrabChanged(bool p_state)
{
if(p_state)
{
foreach(var l_player in CVRPlayerManager.Instance.NetworkPlayers)
{
if(!ms_remoteHandlers.ContainsKey(l_player) && (l_player.PuppetMaster != null))
{
RemoteGestureHandler l_handler = l_player.PuppetMaster.gameObject.AddComponent<RemoteGestureHandler>();
ms_remoteHandlers.Add(l_player, l_handler);
}
}
}
else
{
foreach(var l_pair in ms_remoteHandlers)
{
if(l_pair.Value != null)
UnityEngine.Object.Destroy(l_pair.Value);
}
ms_remoteHandlers.Clear();
}
}
}
}

View file

@ -9,8 +9,8 @@ namespace ml_prm
internal class SettingEvent<T>
{
event Action<T> m_action;
public void AddHandler(Action<T> p_listener) => m_action += p_listener;
public void RemoveHandler(Action<T> p_listener) => m_action -= p_listener;
public void AddListener(Action<T> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T> p_listener) => m_action -= p_listener;
public void Invoke(T p_value) => m_action?.Invoke(p_value);
}

View file

@ -9,8 +9,8 @@ namespace ml_vei
internal class SettingEvent<T>
{
event Action<T> m_action;
public void AddHandler(Action<T> p_listener) => m_action += p_listener;
public void RemoveHandler(Action<T> p_listener) => m_action -= p_listener;
public void AddListener(Action<T> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T> p_listener) => m_action -= p_listener;
public void Invoke(T p_value) => m_action?.Invoke(p_value);
}