blob: 8fe94dd64ccb1f22e055c15714c10ad5a432010e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
using System.Collections.Generic;
using UnityEngine;
public class PlayerManager : MonoBehaviour
{
private static PlayerManager instance;
protected List<PlayerMovement> registeredPlayers = new List<PlayerMovement>();
public static PlayerManager Instance => instance;
public PlayerMovement[] RegisteredPlayers => registeredPlayers.ToArray();
private void Awake()
{
if (instance != null)
{
Object.Destroy(instance);
Debug.LogWarning("Found more than one player manager in scene. Destroyed old one.");
}
instance = this;
}
public static void RegisterPlayer(PlayerMovement player)
{
if (!instance)
{
Debug.Log("No PlayerManager exists in scene.");
}
else
{
instance.registeredPlayers.Add(player);
}
}
public static void UnregisterPlayer(PlayerMovement player)
{
if (!instance)
{
Debug.Log("No PlayerManager exists in scene.");
}
else
{
instance.registeredPlayers.Remove(player);
}
}
public static PlayerMovement GetClosestPlayer(Vector3 position)
{
if (!instance)
{
Debug.Log("No PlayerManager exists in scene.");
return null;
}
PlayerMovement result = null;
float num = float.PositiveInfinity;
foreach (PlayerMovement registeredPlayer in instance.registeredPlayers)
{
float num2 = Vector3.Distance(position, registeredPlayer.transform.position);
if (num2 < num)
{
num = num2;
result = registeredPlayer;
}
}
return result;
}
}
|