Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
SubsystemGameWidgets.cs
浏览该文件的文档.
1using Engine;
4
5namespace Game {
8
10
11 public List<GameWidget> m_gameWidgets = [];
12
13 public virtual GamesWidget GamesWidget { get; set; }
14
15 public virtual ReadOnlyList<GameWidget> GameWidgets => new(m_gameWidgets);
16
17 public virtual SubsystemTerrain SubsystemTerrain { get; set; }
18
19 public virtual UpdateOrder UpdateOrder => UpdateOrder.Views;
20
22 float num = float.MaxValue;
23 foreach (GameWidget gameWidget in m_gameWidgets) {
24 float num2 = Vector3.DistanceSquared(p, gameWidget.ActiveCamera.ViewPosition);
25 if (num2 < num) {
26 num = num2;
27 }
28 }
29 return num;
30 }
31
33
34 public virtual void Update(float dt) {
35 foreach (GameWidget gameWidget in GameWidgets) {
37 }
38 }
39
40 public override void Load(ValuesDictionary valuesDictionary) {
41 m_subsystemPlayers = Project.FindSubsystem<SubsystemPlayers>(true);
42 SubsystemTerrain = Project.FindSubsystem<SubsystemTerrain>(true);
43 m_subsystemPlayers.PlayerAdded += delegate(PlayerData playerData) { AddGameWidgetForPlayer(playerData); };
44 m_subsystemPlayers.PlayerRemoved += delegate(PlayerData playerData) {
45 if (playerData.GameWidget != null) {
46 RemoveGameWidget(playerData.GameWidget);
47 }
48 };
49 GamesWidget = valuesDictionary.GetValue<GamesWidget>("GamesWidget");
50 foreach (PlayerData playersDatum in m_subsystemPlayers.PlayersData) {
51 AddGameWidgetForPlayer(playersDatum);
52 }
53 }
54
55 public override void Dispose() {
56 GameWidget[] array = GameWidgets.ToArray();
57 foreach (GameWidget gameWidget in array) {
58 RemoveGameWidget(gameWidget);
59 gameWidget.Dispose();
60 }
61 }
62
63 public virtual void AddGameWidgetForPlayer(PlayerData playerData) {
64 int index = 0;
65 while (index < MaxGameWidgets
66 && m_gameWidgets.FirstOrDefault(v => v.GameWidgetIndex == index) != null) {
67 index++;
68 }
69 if (index >= MaxGameWidgets) {
70 throw new InvalidOperationException("Too many GameWidgets.");
71 }
72 GameWidget gameWidget = new(playerData, index);
73 m_gameWidgets.Add(gameWidget);
74 GamesWidget.Children.Add(gameWidget);
75 }
76
77 public virtual void RemoveGameWidget(GameWidget gameWidget) {
78 m_gameWidgets.Remove(gameWidget);
79 GamesWidget.Children.Remove(gameWidget);
80 }
81 }
82}
static float FrameDuration
定义 Time.cs:46
void Update(float dt)
Vector3 ViewPosition
GameWidget GameWidget
virtual float CalculateDistanceFromNearestView(Vector3 p)
virtual ReadOnlyList< GameWidget > GameWidgets
virtual void RemoveGameWidget(GameWidget gameWidget)
virtual void AddGameWidgetForPlayer(PlayerData playerData)
virtual float CalculateSquaredDistanceFromNearestView(Vector3 p)
virtual SubsystemTerrain SubsystemTerrain
override void Load(ValuesDictionary valuesDictionary)
ValuesDictionary ValuesDictionary
Camera ActiveCamera
static float DistanceSquared(Vector3 v1, Vector3 v2)