diff --git a/Assets/Prefabs/Player/NetworkSMPlayerPrefab.prefab b/Assets/Prefabs/Player/NetworkSMPlayerPrefab.prefab index ea234cf..d943a00 100644 --- a/Assets/Prefabs/Player/NetworkSMPlayerPrefab.prefab +++ b/Assets/Prefabs/Player/NetworkSMPlayerPrefab.prefab @@ -5067,6 +5067,7 @@ GameObject: - component: {fileID: 7391821093297401085} - component: {fileID: 3857312965804109841} - component: {fileID: 3682017224448058452} + - component: {fileID: 4469778964859213294} m_Layer: 3 m_Name: T-Pose m_TagString: ArcherTarget @@ -5420,6 +5421,18 @@ MonoBehaviour: SendRate: 0.1 m_Animator: {fileID: 3970262697637032946} m_TrackedParamFlags: 0 +--- !u!114 &4469778964859213294 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7688428083034862386} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac4390dd337a1474fb5cd03906cfe44a, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &7740096766088430285 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/PlayerScripts/Network.meta b/Assets/Scripts/PlayerScripts/Network.meta new file mode 100644 index 0000000..c790f98 --- /dev/null +++ b/Assets/Scripts/PlayerScripts/Network.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f28e7652a4fb34f4e839bc58fb1bc546 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/PlayerScripts/Network/ModelSwapping.cs b/Assets/Scripts/PlayerScripts/Network/ModelSwapping.cs new file mode 100644 index 0000000..518ac36 --- /dev/null +++ b/Assets/Scripts/PlayerScripts/Network/ModelSwapping.cs @@ -0,0 +1,58 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.SceneManagement; +using MLAPI; +using MLAPI.Messaging; +using System.Linq; + +public class ModelSwapping : NetworkBehaviour { + + + + void Start() + { + // If game scene & Local Player + if (SceneManager.GetActiveScene().buildIndex == 3 && IsLocalPlayer) { + StartCoroutine(WaitSwapModel()); + } + } + + IEnumerator WaitSwapModel() { + yield return new WaitForSecondsRealtime(3f); + + SwapModelServerRPC(gameObject.transform.root.GetComponent().OwnerClientId); + } + + [ServerRpc(RequireOwnership = false)] + private void SwapModelServerRPC(ulong playerID) { + // Spawn the player + if (ServerGameNetPortal.Instance.clientIdToGuid.TryGetValue(playerID, out string clientGuid)) { + if (ServerGameNetPortal.Instance.clientData.TryGetValue(clientGuid, out PlayerData playerData)) { + // Get the players item list + string itemsAsString = string.Join(",", playerData.pInv.NetworkItemList); + + // Apply to each client + SwapModelClientRPC(playerID, itemsAsString); + } + } + } + + [ClientRpc] + private void SwapModelClientRPC(ulong playerID, string itemList) { + GameObject[] players = GameObject.FindGameObjectsWithTag("Player"); + + foreach (GameObject player in players) { + if (player.GetComponent().OwnerClientId == playerID) { + // Player to Update found + player.GetComponentInChildren().SwapModels(itemList); + } + } + } + + public void SwapModels(string itemsAsString) { + List itemList = itemsAsString.Split(',').ToList(); + + + } +} diff --git a/Assets/Scripts/PlayerScripts/Network/ModelSwapping.cs.meta b/Assets/Scripts/PlayerScripts/Network/ModelSwapping.cs.meta new file mode 100644 index 0000000..3a80630 --- /dev/null +++ b/Assets/Scripts/PlayerScripts/Network/ModelSwapping.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ac4390dd337a1474fb5cd03906cfe44a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: