From 6ce8b9e22fc13be34b442c7b6af48b42cd44275a Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Wed, 13 Mar 2024 11:00:58 +0800 Subject: +init --- Landfall.Network/NetworkController.cs | 65 +++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Landfall.Network/NetworkController.cs (limited to 'Landfall.Network/NetworkController.cs') diff --git a/Landfall.Network/NetworkController.cs b/Landfall.Network/NetworkController.cs new file mode 100644 index 0000000..22791ab --- /dev/null +++ b/Landfall.Network/NetworkController.cs @@ -0,0 +1,65 @@ +using UnityEngine; + +namespace Landfall.Network; + +public class NetworkController : MonoBehaviour +{ + [SerializeField] + private MonoBehaviour[] m_ScriptsToDisable; + + [SerializeField] + private Camera[] m_CamerasToDisable; + + [SerializeField] + private Transform m_Hip; + + private bool m_HasControl; + + private NetworkManager m_NetworkManager; + + private string m_Name; + + public void Init(NetworkManager manager, bool hasControl, string playerName) + { + m_NetworkManager = manager; + m_HasControl = hasControl; + GetComponent().ChangeControl(m_HasControl); + m_Name = playerName; + } + + private void StripPlayer() + { + if (!m_HasControl) + { + MonoBehaviour[] scriptsToDisable = m_ScriptsToDisable; + foreach (MonoBehaviour monoBehaviour in scriptsToDisable) + { + monoBehaviour.enabled = false; + } + Camera[] camerasToDisable = m_CamerasToDisable; + foreach (Camera camera in camerasToDisable) + { + camera.enabled = false; + } + } + } + + private void Update() + { + if (m_HasControl) + { + SendUpdatesToServer(); + } + } + + private void SendUpdatesToServer() + { + Vector3 position = m_Hip.position; + m_NetworkManager.UpdateFromLocalClient(position); + } + + public void UpdatePosition(Vector3 newPos) + { + base.transform.position = newPos; + } +} -- cgit v1.1-26-g67d0