mirror of
https://github.com/MirrorNetworking/Mirror.git
synced 2024-11-18 02:50:32 +00:00
fix: isLocalPlayer works in host mode onStartServer (#1253)
See #1250 Before: ``` Void Awake() hasAuthority=False isClient=False isLocalPlayer=False Void OnStartServer() hasAuthority=False isClient=False isLocalPlayer=False Void OnStartClient() hasAuthority=False isClient=True isLocalPlayer=False Void OnStartAuthority() hasAuthority=True isClient=True isLocalPlayer=True Void OnStartLocalPlayer() hasAuthority=True isClient=True isLocalPlayer=True Void Start() hasAuthority=True isClient=True isLocalPlayer=True ``` after ``` Void Awake() hasAuthority=False isClient=False isLocalPlayer=False Void OnStartServer() hasAuthority=False isClient=False isLocalPlayer=True Void OnStartClient() hasAuthority=False isClient=True isLocalPlayer=True Void OnStartAuthority() hasAuthority=True isClient=True isLocalPlayer=True Void OnStartLocalPlayer() hasAuthority=True isClient=True isLocalPlayer=True Void Start() hasAuthority=True isClient=True isLocalPlayer=True ``` Note it is not possible to fix Awake because it gets called before we have any chance of setting any property
This commit is contained in:
parent
d00c95bb55
commit
9acde20b0a
@ -723,10 +723,11 @@ static void CheckForLocalPlayer(NetworkIdentity identity)
|
||||
|
||||
// Set isLocalPlayer to true on this NetworkIdentity and trigger OnStartLocalPlayer in all scripts on the same GO
|
||||
identity.connectionToServer = readyConnection;
|
||||
InternalAddPlayer(identity);
|
||||
|
||||
identity.SetLocalPlayer();
|
||||
|
||||
if (LogFilter.Debug) Debug.Log("ClientScene.OnOwnerMessage - player=" + identity.name);
|
||||
InternalAddPlayer(identity);
|
||||
|
||||
identity.pendingLocalPlayer = false;
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ public bool isServer
|
||||
/// This returns true if this object is the one that represents the player on the local machine.
|
||||
/// <para>This is set when the server has spawned an object for this particular client.</para>
|
||||
/// </summary>
|
||||
public bool isLocalPlayer { get; private set; }
|
||||
public bool isLocalPlayer => ClientScene.localPlayer == this;
|
||||
|
||||
internal bool pendingLocalPlayer { get; set; }
|
||||
|
||||
@ -207,8 +207,6 @@ internal void SetClientOwner(NetworkConnection conn)
|
||||
// used when the player object for a connection changes
|
||||
internal void SetNotLocalPlayer()
|
||||
{
|
||||
isLocalPlayer = false;
|
||||
|
||||
if (NetworkServer.active && NetworkServer.localClientActive)
|
||||
{
|
||||
// dont change authority for objects on the host
|
||||
@ -871,7 +869,6 @@ internal void OnUpdateVars(NetworkReader reader, bool initialState)
|
||||
|
||||
internal void SetLocalPlayer()
|
||||
{
|
||||
isLocalPlayer = true;
|
||||
hasAuthority = true;
|
||||
NotifyAuthority();
|
||||
|
||||
@ -1147,7 +1144,6 @@ internal void Reset()
|
||||
m_IsServer = false;
|
||||
|
||||
netId = 0;
|
||||
isLocalPlayer = false;
|
||||
connectionToServer = null;
|
||||
connectionToClient = null;
|
||||
networkBehavioursCache = null;
|
||||
|
@ -819,7 +819,10 @@ public static bool AddPlayerForConnection(NetworkConnection conn, GameObject pla
|
||||
|
||||
// special case, we are in host mode, set hasAuthority to true so that all overrides see it
|
||||
if (conn is ULocalConnectionToClient)
|
||||
{
|
||||
identity.hasAuthority = true;
|
||||
ClientScene.InternalAddPlayer(identity);
|
||||
}
|
||||
|
||||
// set ready if not set yet
|
||||
SetClientReady(conn);
|
||||
|
Loading…
Reference in New Issue
Block a user