Skip to content

Commit 8bb8621

Browse files
fix
Fixing player instantiation position and rotation issue introduced in an earlier PR (but not yet released).
1 parent e1ccae4 commit 8bb8621

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

com.unity.netcode.gameobjects/Runtime/Connection/NetworkConnectionManager.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -738,9 +738,8 @@ internal void HandleConnectionApproval(ulong ownerClientId, NetworkManager.Conne
738738

739739
if (response.CreatePlayerObject && (response.PlayerPrefabHash.HasValue || NetworkManager.NetworkConfig.PlayerPrefab != null))
740740
{
741-
var playerObject = response.PlayerPrefabHash.HasValue ? NetworkManager.SpawnManager.GetNetworkObjectToSpawn(response.PlayerPrefabHash.Value, ownerClientId, response.Position.GetValueOrDefault(), response.Rotation.GetValueOrDefault())
742-
: NetworkManager.SpawnManager.GetNetworkObjectToSpawn(NetworkManager.NetworkConfig.PlayerPrefab.GetComponent<NetworkObject>().GlobalObjectIdHash, ownerClientId, response.Position.GetValueOrDefault(), response.Rotation.GetValueOrDefault());
743-
741+
var playerObject = response.PlayerPrefabHash.HasValue ? NetworkManager.SpawnManager.GetNetworkObjectToSpawn(response.PlayerPrefabHash.Value, ownerClientId, response.Position ?? null, response.Rotation ?? null)
742+
: NetworkManager.SpawnManager.GetNetworkObjectToSpawn(NetworkManager.NetworkConfig.PlayerPrefab.GetComponent<NetworkObject>().GlobalObjectIdHash, ownerClientId, response.Position ?? null, response.Rotation ?? null);
744743
// Spawn the player NetworkObject locally
745744
NetworkManager.SpawnManager.SpawnNetworkObjectLocally(
746745
playerObject,

com.unity.netcode.gameobjects/Runtime/Spawning/NetworkSpawnManager.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -417,14 +417,14 @@ internal NetworkObject InstantiateAndSpawnNoParameterChecks(NetworkObject networ
417417
/// Gets the right NetworkObject prefab instance to spawn. If a handler is registered or there is an override assigned to the
418418
/// passed in globalObjectIdHash value, then that is what will be instantiated, spawned, and returned.
419419
/// </summary>
420-
internal NetworkObject GetNetworkObjectToSpawn(uint globalObjectIdHash, ulong ownerId, Vector3 position = default, Quaternion rotation = default, bool isScenePlaced = false)
420+
internal NetworkObject GetNetworkObjectToSpawn(uint globalObjectIdHash, ulong ownerId, Vector3? position, Quaternion? rotation, bool isScenePlaced = false)
421421
{
422422
NetworkObject networkObject = null;
423423
// If the prefab hash has a registered INetworkPrefabInstanceHandler derived class
424424
if (NetworkManager.PrefabHandler.ContainsHandler(globalObjectIdHash))
425425
{
426426
// Let the handler spawn the NetworkObject
427-
networkObject = NetworkManager.PrefabHandler.HandleNetworkPrefabSpawn(globalObjectIdHash, ownerId, position, rotation);
427+
networkObject = NetworkManager.PrefabHandler.HandleNetworkPrefabSpawn(globalObjectIdHash, ownerId, position ?? default, rotation ?? default);
428428
networkObject.NetworkManagerOwner = NetworkManager;
429429
}
430430
else
@@ -476,6 +476,8 @@ internal NetworkObject GetNetworkObjectToSpawn(uint globalObjectIdHash, ulong ow
476476
{
477477
// Create prefab instance
478478
networkObject = UnityEngine.Object.Instantiate(networkPrefabReference).GetComponent<NetworkObject>();
479+
networkObject.transform.position = position ?? networkObject.transform.position;
480+
networkObject.transform.rotation = rotation ?? networkObject.transform.rotation;
479481
networkObject.NetworkManagerOwner = NetworkManager;
480482
networkObject.PrefabGlobalObjectIdHash = globalObjectIdHash;
481483
}

0 commit comments

Comments
 (0)