From ff3343c6048d4c3af5ff6a23f37f9d2f75b6c4d6 Mon Sep 17 00:00:00 2001 From: Ramon Melo Date: Thu, 14 Jan 2021 17:22:45 -0300 Subject: [PATCH] ADDED: Simple Connection Stats UI Sample --- BoltRealtimeStats.meta | 8 +++ BoltRealtimeStats/Prefabs.meta | 8 +++ BoltRealtimeStats/Prefabs/BoltStats.prefab | Bin 0 -> 20328 bytes .../Prefabs/BoltStats.prefab.meta | 7 +++ BoltRealtimeStats/Prefabs/FrameStats.prefab | Bin 0 -> 16508 bytes .../Prefabs/FrameStats.prefab.meta | 7 +++ BoltRealtimeStats/Scripts.meta | 8 +++ .../Scripts/BoltFrameController.cs | 25 +++++++++ .../Scripts/BoltFrameController.cs.meta | 11 ++++ .../Scripts/BoltStatsController.cs | 48 ++++++++++++++++++ .../Scripts/BoltStatsController.cs.meta | 11 ++++ 11 files changed, 133 insertions(+) create mode 100644 BoltRealtimeStats.meta create mode 100644 BoltRealtimeStats/Prefabs.meta create mode 100644 BoltRealtimeStats/Prefabs/BoltStats.prefab create mode 100644 BoltRealtimeStats/Prefabs/BoltStats.prefab.meta create mode 100644 BoltRealtimeStats/Prefabs/FrameStats.prefab create mode 100644 BoltRealtimeStats/Prefabs/FrameStats.prefab.meta create mode 100644 BoltRealtimeStats/Scripts.meta create mode 100644 BoltRealtimeStats/Scripts/BoltFrameController.cs create mode 100644 BoltRealtimeStats/Scripts/BoltFrameController.cs.meta create mode 100644 BoltRealtimeStats/Scripts/BoltStatsController.cs create mode 100644 BoltRealtimeStats/Scripts/BoltStatsController.cs.meta diff --git a/BoltRealtimeStats.meta b/BoltRealtimeStats.meta new file mode 100644 index 0000000..5d6b7bb --- /dev/null +++ b/BoltRealtimeStats.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f390d25807ad3834e8c226c9668385a8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BoltRealtimeStats/Prefabs.meta b/BoltRealtimeStats/Prefabs.meta new file mode 100644 index 0000000..08b7f3d --- /dev/null +++ b/BoltRealtimeStats/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 95c82fc2ee35c3c47ba162efa7a8b7b1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BoltRealtimeStats/Prefabs/BoltStats.prefab b/BoltRealtimeStats/Prefabs/BoltStats.prefab new file mode 100644 index 0000000000000000000000000000000000000000..e507c9bd2d1f4e633791361645f0c504e83b2060 GIT binary patch literal 20328 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 D0xA&e literal 0 HcmV?d00001 diff --git a/BoltRealtimeStats/Prefabs/BoltStats.prefab.meta b/BoltRealtimeStats/Prefabs/BoltStats.prefab.meta new file mode 100644 index 0000000..36c154e --- /dev/null +++ b/BoltRealtimeStats/Prefabs/BoltStats.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: dd46756b0a18d9b4dbb5410d2683180f +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BoltRealtimeStats/Prefabs/FrameStats.prefab b/BoltRealtimeStats/Prefabs/FrameStats.prefab new file mode 100644 index 0000000000000000000000000000000000000000..5c7e250f69812020eb5316f8f9a00c2349a8a220 GIT binary patch literal 16508 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 remoteFrameStateMap; + + void Start() + { + remoteFrameStateMap = new Dictionary(); + } + + void FixedUpdate() + { + if (BoltNetwork.IsRunning) + { + foreach (var conn in BoltNetwork.Connections) + { + if (remoteFrameStateMap.TryGetValue(conn, out var frameController) == false) + { + var frameControllerGO = Instantiate(FrameStatPrefab); + frameControllerGO.transform.parent = RemoteConnectionHolder.transform; + + frameController = frameControllerGO.GetComponent(); + frameController.SetLabel(conn); + + remoteFrameStateMap.Add(conn, frameController); + } + + frameController.SetValue(conn.PingNetwork * 1000, conn.BitsPerSecondIn, conn.BitsPerSecondOut); + } + } + } + + public override void Disconnected(BoltConnection connection) + { + if (remoteFrameStateMap.TryGetValue(connection, out var frameController)) + { + Destroy(frameController.gameObject); + } + } +} diff --git a/BoltRealtimeStats/Scripts/BoltStatsController.cs.meta b/BoltRealtimeStats/Scripts/BoltStatsController.cs.meta new file mode 100644 index 0000000..9c006af --- /dev/null +++ b/BoltRealtimeStats/Scripts/BoltStatsController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5bb71da9b8dc3af4694fb7917a13821e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: