diff --git a/Assets/Scripts/Networking/Player.cs b/Assets/Scripts/Networking/Player.cs index d5c3e91f..b76879bc 100644 --- a/Assets/Scripts/Networking/Player.cs +++ b/Assets/Scripts/Networking/Player.cs @@ -15,9 +15,10 @@ namespace SanAndreasUnity.Net /// Local player. public static Player Local { get; private set; } - [SyncVar] Ped m_ownedPed; + [SyncVar(hook=nameof(OnOwnedGameObjectChanged))] GameObject m_ownedGameObject; + Ped m_ownedPed; //public GameObject OwnedGameObject { get { return m_ownedGameObject; } internal set { m_ownedGameObject = value; } } - public Ped OwnedPed { get { return m_ownedPed; } internal set { m_ownedPed = value; } } + public Ped OwnedPed { get { return m_ownedPed; } internal set { m_ownedPed = value; m_ownedGameObject = value != null ? value.gameObject : null; } } void OnEnable() @@ -30,6 +31,16 @@ namespace SanAndreasUnity.Net s_allPlayers.Remove(this); } + public override void OnStartClient() + { + base.OnStartClient(); + + if (this.isServer) + return; + + m_ownedPed = m_ownedGameObject != null ? m_ownedGameObject.GetComponent() : null; + } + public override void OnStartLocalPlayer() { base.OnStartLocalPlayer(); @@ -41,6 +52,16 @@ namespace SanAndreasUnity.Net } + void OnOwnedGameObjectChanged(GameObject newGo) + { + if (this.isServer) + return; + + m_ownedGameObject = newGo; + + m_ownedPed = m_ownedGameObject != null ? m_ownedGameObject.GetComponent() : null; + } + } } diff --git a/Docs/Multiplayer.md b/Docs/Multiplayer.md index 30786436..5b03f847 100644 --- a/Docs/Multiplayer.md +++ b/Docs/Multiplayer.md @@ -18,6 +18,10 @@ - don't show StartGame/JoinGame window in pause menu +- spawn ped right after player connects + +- add weapons to player's ped + # Potential problems