mirror of
https://github.com/hanetzer/sdraw_mods_cvr.git
synced 2025-09-05 03:19:23 +00:00
Remote gestures handlers components creation based on current settings
Methods renames
This commit is contained in:
parent
e5d4ea9d29
commit
b38187d6ef
36 changed files with 308 additions and 240 deletions
79
ml_prm/RemoteGestureManager.cs
Normal file
79
ml_prm/RemoteGestureManager.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue