diff --git a/Basic/DistributedAuthoritySocialHub/Assets/Prefabs/UI/IngameUI.prefab b/Basic/DistributedAuthoritySocialHub/Assets/Prefabs/UI/IngameUI.prefab index ba90c20d2..be052a596 100644 --- a/Basic/DistributedAuthoritySocialHub/Assets/Prefabs/UI/IngameUI.prefab +++ b/Basic/DistributedAuthoritySocialHub/Assets/Prefabs/UI/IngameUI.prefab @@ -11,6 +11,7 @@ GameObject: - component: {fileID: 8260601768609746557} - component: {fileID: 2624134516453966882} - component: {fileID: 7977430163742817466} + - component: {fileID: 6103793809426782772} m_Layer: 0 m_Name: WorldspaceUIContainer m_TagString: Untagged @@ -96,6 +97,20 @@ UIRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 +--- !u!114 &6103793809426782772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3209112381140291289} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c3f1e8062945c4f4d846b5dd47a10b49, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Stylesheet: + - {fileID: 7433441132597879392, guid: ea9efe379dfd4506ad59f7fe609e1c85, type: 3} --- !u!1 &3760817242580890973 GameObject: m_ObjectHideFlags: 0 @@ -227,8 +242,8 @@ Transform: - {fileID: 2256034313796960807} - {fileID: 7559383771208540613} - {fileID: 8481058004063830698} - - {fileID: 6866794867799222920} - {fileID: 7817311818480281289} + - {fileID: 6866794867799222920} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &5231826839060252271 @@ -241,6 +256,7 @@ GameObject: m_Component: - component: {fileID: 3336661237540986728} - component: {fileID: 436460152536684898} + - component: {fileID: 7317808533901021140} m_Layer: 0 m_Name: ScreenspaceUIContainer m_TagString: Untagged @@ -282,6 +298,20 @@ MonoBehaviour: m_WorldSpaceSizeMode: 1 m_WorldSpaceWidth: 1920 m_WorldSpaceHeight: 1080 +--- !u!114 &7317808533901021140 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5231826839060252271} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c3f1e8062945c4f4d846b5dd47a10b49, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Stylesheet: + - {fileID: 7433441132597879392, guid: ea9efe379dfd4506ad59f7fe609e1c85, type: 3} --- !u!1 &6990578997068127384 GameObject: m_ObjectHideFlags: 0 @@ -339,7 +369,6 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 7817311818480281289} - - component: {fileID: 2936985890301440173} - component: {fileID: 6707317209091797481} m_Layer: 0 m_Name: TouchUI @@ -363,25 +392,6 @@ Transform: m_Children: [] m_Father: {fileID: 8617889547341104717} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &2936985890301440173 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7432143492640579472} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_PanelSettings: {fileID: 11400000, guid: f87c14ce92c804cf2a078e05e3ee2019, type: 2} - m_ParentUI: {fileID: 0} - sourceAsset: {fileID: 9197481963319205126, guid: ccd45339dc8ff154fbbe578856089eaf, type: 3} - m_SortingOrder: 0 - m_WorldSpaceSizeMode: 1 - m_WorldSpaceWidth: 1920 - m_WorldSpaceHeight: 1080 --- !u!114 &6707317209091797481 MonoBehaviour: m_ObjectHideFlags: 0 @@ -394,6 +404,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6d7e4e4868ed5df4b928c22423c690a0, type: 3} m_Name: m_EditorClassIdentifier: + m_Document: {fileID: 436460152536684898} + m_TouchscreenUI: {fileID: 9197481963319205126, guid: ccd45339dc8ff154fbbe578856089eaf, type: 3} --- !u!1 &7898239706649082948 GameObject: m_ObjectHideFlags: 0 diff --git a/Basic/DistributedAuthoritySocialHub/Assets/Scenes/MainMenu.unity b/Basic/DistributedAuthoritySocialHub/Assets/Scenes/MainMenu.unity index c6fe04f46..b173e31de 100644 --- a/Basic/DistributedAuthoritySocialHub/Assets/Scenes/MainMenu.unity +++ b/Basic/DistributedAuthoritySocialHub/Assets/Scenes/MainMenu.unity @@ -343,6 +343,7 @@ GameObject: - component: {fileID: 378839173} - component: {fileID: 378839172} - component: {fileID: 378839174} + - component: {fileID: 378839175} m_Layer: 0 m_Name: MainMenuUI m_TagString: Untagged @@ -399,6 +400,20 @@ MonoBehaviour: m_EditorClassIdentifier: IsModal: 0 m_HomeView: {fileID: 2105351336} +--- !u!114 &378839175 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 378839171} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c3f1e8062945c4f4d846b5dd47a10b49, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Stylesheet: + - {fileID: 7433441132597879392, guid: ea9efe379dfd4506ad59f7fe609e1c85, type: 3} --- !u!1 &1088131142 GameObject: m_ObjectHideFlags: 0 diff --git a/Basic/DistributedAuthoritySocialHub/Assets/Scripts/GameManagement/GameplayEventHandler.cs b/Basic/DistributedAuthoritySocialHub/Assets/Scripts/GameManagement/GameplayEventHandler.cs index e7a2989b7..b682101bd 100644 --- a/Basic/DistributedAuthoritySocialHub/Assets/Scripts/GameManagement/GameplayEventHandler.cs +++ b/Basic/DistributedAuthoritySocialHub/Assets/Scripts/GameManagement/GameplayEventHandler.cs @@ -2,6 +2,7 @@ using System; using System.Threading.Tasks; using Unity.Services.Vivox; +using UnityEngine; using UnityEngine.SceneManagement; namespace Unity.Multiplayer.Samples.SocialHub.GameManagement @@ -21,6 +22,8 @@ static class GameplayEventHandler internal static event Action OnParticipantJoinedVoiceChat; internal static event Action OnParticipantLeftVoiceChat; + internal static event Action OnPickupStateChanged; + internal static void NetworkObjectDespawned(NetworkObject networkObject) { OnNetworkObjectDespawned?.Invoke(networkObject); @@ -90,5 +93,17 @@ public static void ParticipantLeftVoiceChat(VivoxParticipant vivoxParticipant) { OnParticipantLeftVoiceChat?.Invoke(vivoxParticipant); } + + internal static void SetAvatarPickupState(PickupState state, Transform pickup) + { + OnPickupStateChanged?.Invoke(state, pickup); + } + } + + internal enum PickupState + { + Inactive, + PickupInRange, + Carry } } diff --git a/Basic/DistributedAuthoritySocialHub/Assets/Scripts/Player/AvatarInteractions.cs b/Basic/DistributedAuthoritySocialHub/Assets/Scripts/Player/AvatarInteractions.cs index 1f32650de..9f5b3a87e 100644 --- a/Basic/DistributedAuthoritySocialHub/Assets/Scripts/Player/AvatarInteractions.cs +++ b/Basic/DistributedAuthoritySocialHub/Assets/Scripts/Player/AvatarInteractions.cs @@ -49,10 +49,6 @@ class AvatarInteractions : NetworkBehaviour, INetworkUpdateSystem TransferableObject m_TransferableObject; - PickUpIndicator m_PickUpIndicator; - - CarryBoxIndicator m_CarryBoxIndicator; - const float k_MinDurationHeld = 0f; const float k_MaxDurationHeld = 2f; @@ -92,9 +88,6 @@ public override void OnNetworkSpawn() this.RegisterNetworkUpdate(updateStage: NetworkUpdateStage.FixedUpdate); - m_PickUpIndicator = FindFirstObjectByType(); - m_CarryBoxIndicator = FindFirstObjectByType(); - GameInput.Actions.Player.Interact.performed += OnInteractPerformed; GameInput.Actions.Player.Interact.canceled += OnInteractCanceled; @@ -284,8 +277,7 @@ void StartPickup(TransferableObject other) // Rotate the player to face the item smoothly StartCoroutine(SmoothLookAt(other.transform)); m_AvatarNetworkAnimator.SetTrigger(k_PickupId); - m_PickUpIndicator.ClearPickup(); - m_CarryBoxIndicator.ShowCarry(m_TransferableObject.transform); + GameplayEventHandler.SetAvatarPickupState(PickupState.Carry, m_TransferableObject.transform); } IEnumerator SmoothLookAt(Transform target) @@ -383,7 +375,7 @@ void DropAction() SetTransferableObjectAsTransferableDistributable(); OnDropAction(); m_CurrentTransferableObject.Value = new NetworkBehaviourReference(); - m_CarryBoxIndicator.HideCarry(); + GameplayEventHandler.SetAvatarPickupState(PickupState.Inactive, null); } // invoked on all clients @@ -419,7 +411,7 @@ void ThrowAction(double holdDuration) OnThrowAction(); m_CurrentTransferableObject.Value = new NetworkBehaviourReference(); - m_CarryBoxIndicator.HideCarry(); + GameplayEventHandler.SetAvatarPickupState(PickupState.Inactive, null); } // invoked on all clients @@ -493,13 +485,12 @@ void CheckForPickupsInRange() m_PotentialPickupCollider = resultCollider; } } - - m_PickUpIndicator.ShowPickup(m_PotentialPickupCollider.transform); + GameplayEventHandler.SetAvatarPickupState(PickupState.PickupInRange, m_PotentialPickupCollider.transform); } else { m_PotentialPickupCollider = null; - m_PickUpIndicator.ClearPickup(); + GameplayEventHandler.SetAvatarPickupState(PickupState.Inactive, null); } } diff --git a/Basic/DistributedAuthoritySocialHub/Assets/Scripts/Services/VivoxManager.cs b/Basic/DistributedAuthoritySocialHub/Assets/Scripts/Services/VivoxManager.cs index b0da11109..f432a9f00 100644 --- a/Basic/DistributedAuthoritySocialHub/Assets/Scripts/Services/VivoxManager.cs +++ b/Basic/DistributedAuthoritySocialHub/Assets/Scripts/Services/VivoxManager.cs @@ -12,11 +12,16 @@ namespace Unity.Multiplayer.Samples.SocialHub.Services { class VivoxManager : MonoBehaviour { + const int k_AudibleDistance = 20; + const int k_ConventionalDistance = 1; + const float k_AudioFadeByDistance = 1f; + string m_TextChannelName; string m_VoiceChannelName; #if UNITY_STANDALONE_OSX || UNITY_IOS bool m_MicPermissionChecked; + #endif internal static VivoxManager Instance { get; private set; } @@ -76,7 +81,7 @@ async void OnLoggedInVivox() async Task JoinChannels() { - var positionalChannelProperties = new Channel3DProperties(10, 1, 1f, AudioFadeModel.InverseByDistance); + var positionalChannelProperties = new Channel3DProperties(k_AudibleDistance, k_ConventionalDistance, k_AudioFadeByDistance, AudioFadeModel.InverseByDistance); BindChannelEvents(true); await VivoxService.Instance.JoinPositionalChannelAsync(m_VoiceChannelName, ChatCapability.AudioOnly, positionalChannelProperties); await VivoxService.Instance.JoinGroupChannelAsync(m_TextChannelName, ChatCapability.TextOnly); diff --git a/Basic/DistributedAuthoritySocialHub/Assets/Scripts/UI/IngameUI/CarryBoxIndicator.cs b/Basic/DistributedAuthoritySocialHub/Assets/Scripts/UI/IngameUI/CarryBoxIndicator.cs index 76c35f71d..a744601d4 100644 --- a/Basic/DistributedAuthoritySocialHub/Assets/Scripts/UI/IngameUI/CarryBoxIndicator.cs +++ b/Basic/DistributedAuthoritySocialHub/Assets/Scripts/UI/IngameUI/CarryBoxIndicator.cs @@ -1,5 +1,6 @@ using System; using System.Collections; +using Unity.Multiplayer.Samples.SocialHub.GameManagement; using UnityEngine; using UnityEngine.UIElements; @@ -42,9 +43,21 @@ void OnEnable() m_CarryUI.Q