diff --git a/Experimental/DistributedAuthoritySample/Assets/Prefabs/Avatar.prefab b/Experimental/DistributedAuthoritySample/Assets/Prefabs/Avatar.prefab index d1fce1f89..fec594bc2 100644 --- a/Experimental/DistributedAuthoritySample/Assets/Prefabs/Avatar.prefab +++ b/Experimental/DistributedAuthoritySample/Assets/Prefabs/Avatar.prefab @@ -120,6 +120,9 @@ GameObject: m_Component: - component: {fileID: 378099091213283077} - component: {fileID: 2864305741433477372} + - component: {fileID: 8754688463379504669} + - component: {fileID: 8500608924580955270} + - component: {fileID: 4564601233341043591} m_Layer: 0 m_Name: Avatar m_TagString: Untagged @@ -155,7 +158,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} m_Name: m_EditorClassIdentifier: - GlobalObjectIdHash: 2473698027 + GlobalObjectIdHash: 3001504883 InScenePlacedSourceGlobalObjectIdHash: 0 DeferredDespawnTick: 0 Ownership: 0 @@ -166,3 +169,59 @@ MonoBehaviour: SpawnWithObservers: 1 DontDestroyWithOwner: 0 AutoObjectParentSync: 1 +--- !u!114 &8754688463379504669 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5478015027486214707} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3} + m_Name: + m_EditorClassIdentifier: + AuthorityMode: 1 + UseUnreliableDeltas: 0 + SyncPositionX: 1 + SyncPositionY: 1 + SyncPositionZ: 1 + SyncRotAngleX: 0 + SyncRotAngleY: 1 + SyncRotAngleZ: 0 + SyncScaleX: 0 + SyncScaleY: 0 + SyncScaleZ: 0 + PositionThreshold: 0.001 + RotAngleThreshold: 0.01 + ScaleThreshold: 0.01 + UseQuaternionSynchronization: 0 + UseQuaternionCompression: 0 + UseHalfFloatPrecision: 0 + InLocalSpace: 0 + Interpolate: 1 + SlerpPosition: 0 +--- !u!114 &8500608924580955270 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5478015027486214707} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7736ab9dc5664c248e9e1d583cf9aa46, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &4564601233341043591 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5478015027486214707} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 78b4cd06011834d3699e301c9818fd0c, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Experimental/DistributedAuthoritySample/Assets/Scenes/Bootstrap.unity b/Experimental/DistributedAuthoritySample/Assets/Scenes/Bootstrap.unity index b1bafbd5c..17b212c2f 100644 --- a/Experimental/DistributedAuthoritySample/Assets/Scenes/Bootstrap.unity +++ b/Experimental/DistributedAuthoritySample/Assets/Scenes/Bootstrap.unity @@ -164,6 +164,52 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &681373191 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 681373193} + - component: {fileID: 681373192} + m_Layer: 0 + m_Name: VivoxManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &681373192 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 681373191} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac9e80387c754a478affe13d59edd7c3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ParticipantPrefab: {fileID: 5478015027486214707, guid: d53f3508611e54740befa6a8bf6a15c1, type: 3} + m_ParticipantListParent: {fileID: 0} +--- !u!4 &681373193 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 681373191} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &900326967 GameObject: m_ObjectHideFlags: 0 @@ -268,9 +314,113 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2040580376 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2040580377} + - component: {fileID: 2040580378} + - component: {fileID: 2040580379} + - component: {fileID: 2040580380} + m_Layer: 0 + m_Name: MultiplayerTools + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2040580377 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2040580376} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 342.25, y: 197.95, z: 17.4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2040580378 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2040580376} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 17737e0516da2445b9b0077ae2bd9b4f, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Visible: 1 + m_MaxRefreshRate: 30 + k__BackingField: {fileID: 0} + k__BackingField: {fileID: 0} + k__BackingField: + k__BackingField: 1 + m_PositionLeftToRight: 0 + m_PositionTopToBottom: 0 + k__BackingField: {fileID: 11400000, guid: 8f1b4e3792d8446399527749cfb591a2, type: 2} +--- !u!114 &2040580379 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2040580376} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bf9109fc76854aaa820b242a9a151673, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Rnsm: {fileID: 2040580378} + m_NetworkSimulator: {fileID: 2040580380} +--- !u!114 &2040580380 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2040580376} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 98d9db9626104da59357651088226725, type: 3} + m_Name: + m_EditorClassIdentifier: + m_PresetAsset: {fileID: 0} + m_PresetReference: + rid: 5302490063999336519 + m_Scenario: + rid: -2 + m_IsScenarioSettingsFolded: 0 + AutoRunScenario: 0 + references: + version: 2 + RefIds: + - rid: -2 + type: {class: , ns: , asm: } + - rid: 5302490063999336519 + type: {class: NetworkSimulatorPreset, ns: Unity.Multiplayer.Tools.NetworkSimulator.Runtime, asm: Unity.Multiplayer.Tools.NetworkSimulator.Runtime} + data: + k__BackingField: + k__BackingField: + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 m_Roots: - {fileID: 340021862} - {fileID: 900326970} + - {fileID: 681373193} + - {fileID: 2040580377} diff --git a/Experimental/DistributedAuthoritySample/Assets/Scenes/HubScene.unity b/Experimental/DistributedAuthoritySample/Assets/Scenes/HubScene.unity index 51c9a297f..6325bef78 100644 --- a/Experimental/DistributedAuthoritySample/Assets/Scenes/HubScene.unity +++ b/Experimental/DistributedAuthoritySample/Assets/Scenes/HubScene.unity @@ -118,6 +118,300 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &161005911 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 161005912} + - component: {fileID: 161005915} + - component: {fileID: 161005914} + - component: {fileID: 161005913} + m_Layer: 0 + m_Name: SendButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &161005912 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 161005911} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 768118766} + m_Father: {fileID: 365452091} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 82.1, y: 1.5} + m_SizeDelta: {x: 60, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &161005913 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 161005911} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 161005914} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &161005914 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 161005911} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &161005915 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 161005911} + m_CullTransparentMesh: 1 +--- !u!1 &180760548 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 180760549} + - component: {fileID: 180760551} + - component: {fileID: 180760550} + m_Layer: 0 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &180760549 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 180760548} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1701048972} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &180760550 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 180760548} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &180760551 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 180760548} + m_CullTransparentMesh: 1 +--- !u!1 &365452090 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 365452091} + - component: {fileID: 365452093} + - component: {fileID: 365452092} + - component: {fileID: 365452094} + m_Layer: 0 + m_Name: ChatPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &365452091 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 365452090} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -12.362} + m_LocalScale: {x: 0.25753, y: 0.25753, z: 0.25753} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1701048972} + - {fileID: 993681434} + - {fileID: 161005912} + m_Father: {fileID: 1022330909} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -59.7, y: -20.8} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &365452092 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 365452090} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.392} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &365452093 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 365452090} + m_CullTransparentMesh: 1 +--- !u!114 &365452094 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 365452090} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f077376c67e34260a6d9e53d1f5df219, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ChatInputField: {fileID: 1701048973} + m_ChatDisplay: {fileID: 993681435} + m_SendButton: {fileID: 161005913} --- !u!1 &410087039 GameObject: m_ObjectHideFlags: 0 @@ -239,6 +533,163 @@ MonoBehaviour: m_LightCookieSize: {x: 1, y: 1} m_LightCookieOffset: {x: 0, y: 0} m_SoftShadowQuality: 1 +--- !u!1 &608373090 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 608373093} + - component: {fileID: 608373092} + - component: {fileID: 608373091} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &608373091 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608373090} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_MoveRepeatDelay: 0.5 + m_MoveRepeatRate: 0.1 + m_XRTrackingOrigin: {fileID: 0} + m_ActionsAsset: {fileID: -944628639613478452, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_PointAction: {fileID: -1654692200621890270, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_MoveAction: {fileID: -8784545083839296357, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_SubmitAction: {fileID: 392368643174621059, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_CancelAction: {fileID: 7727032971491509709, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_LeftClickAction: {fileID: 3001919216989983466, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_MiddleClickAction: {fileID: -2185481485913320682, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_RightClickAction: {fileID: -4090225696740746782, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_ScrollWheelAction: {fileID: 6240969308177333660, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_TrackedDevicePositionAction: {fileID: 6564999863303420839, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_TrackedDeviceOrientationAction: {fileID: 7970375526676320489, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_DeselectOnBackgroundClick: 1 + m_PointerBehavior: 0 + m_CursorLockBehavior: 0 +--- !u!114 &608373092 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608373090} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &608373093 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608373090} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &768118765 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 768118766} + - component: {fileID: 768118768} + - component: {fileID: 768118767} + m_Layer: 0 + m_Name: ButtonTextField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &768118766 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 768118765} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 161005912} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &768118767 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 768118765} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Send +--- !u!222 &768118768 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 768118765} + m_CullTransparentMesh: 1 --- !u!1 &832575517 GameObject: m_ObjectHideFlags: 0 @@ -288,6 +739,444 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &993681433 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 993681434} + - component: {fileID: 993681436} + - component: {fileID: 993681435} + m_Layer: 0 + m_Name: ChatDisplayer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &993681434 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 993681433} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.5580264, y: 1.5580264, z: 1.5580264} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 365452091} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -34.3, y: -96.2} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &993681435 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 993681433} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 13 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 7 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &993681436 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 993681433} + m_CullTransparentMesh: 1 +--- !u!1 &1022330908 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1022330909} + - component: {fileID: 1022330912} + - component: {fileID: 1022330911} + - component: {fileID: 1022330910} + m_Layer: 0 + m_Name: TextChat + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1022330909 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1022330908} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 365452091} + m_Father: {fileID: 1464738252} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1022330910 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1022330908} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1022330911 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1022330908} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 3.95 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1022330912 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1022330908} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &1372687317 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1372687318} + - component: {fileID: 1372687320} + - component: {fileID: 1372687319} + m_Layer: 0 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1372687318 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1372687317} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1701048972} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1372687319 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1372687317} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Enter text... +--- !u!222 &1372687320 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1372687317} + m_CullTransparentMesh: 1 +--- !u!1 &1464738251 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1464738252} + m_Layer: 0 + m_Name: Vivox + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1464738252 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1464738251} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1022330909} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1701048971 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1701048972} + - component: {fileID: 1701048975} + - component: {fileID: 1701048974} + - component: {fileID: 1701048973} + m_Layer: 0 + m_Name: ChatInputField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1701048972 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1701048971} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1372687318} + - {fileID: 180760549} + m_Father: {fileID: 365452091} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -35.5, y: 1.6} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1701048973 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1701048971} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1701048974} + m_TextComponent: {fileID: 180760550} + m_Placeholder: {fileID: 1372687319} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnDidEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &1701048974 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1701048971} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1701048975 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1701048971} + m_CullTransparentMesh: 1 --- !u!1001 &2024073102 PrefabInstance: m_ObjectHideFlags: 0 @@ -352,3 +1241,5 @@ SceneRoots: - {fileID: 410087041} - {fileID: 832575519} - {fileID: 2024073102} + - {fileID: 1464738252} + - {fileID: 608373093} diff --git a/Experimental/DistributedAuthoritySample/Assets/Scripts/Misc/MttToolsToggleController.cs b/Experimental/DistributedAuthoritySample/Assets/Scripts/Misc/MttToolsToggleController.cs new file mode 100644 index 000000000..63a8dba9a --- /dev/null +++ b/Experimental/DistributedAuthoritySample/Assets/Scripts/Misc/MttToolsToggleController.cs @@ -0,0 +1,84 @@ +using System; +using Unity.Multiplayer.Tools.NetStatsMonitor; +using Unity.Multiplayer.Tools.NetworkSimulator.Runtime; +using UnityEngine; + +namespace Misc +{ + public class MttToolsToggleController : MonoBehaviour + { + public RuntimeNetStatsMonitor m_Rnsm; + public NetworkSimulator m_NetworkSimulator; + + private bool isRnsmOverlayActive = false; + + void Awake() + { + DontDestroyOnLoad(this); + } + + void Start() + { + m_Rnsm.Visible = isRnsmOverlayActive; + } + + void Update() + { + // RNSM + if (Input.GetKeyDown(KeyCode.Keypad7) || Input.GetKeyDown(KeyCode.Alpha7)) + { + isRnsmOverlayActive = !isRnsmOverlayActive; + m_Rnsm.Visible = isRnsmOverlayActive; + } + + // Network Simulator + if (Input.GetKeyDown(KeyCode.Keypad8) || Input.GetKeyDown(KeyCode.Alpha8)) + { + ToggleNetworkSimulator(); + } + + if (Input.GetKeyDown(KeyCode.Keypad9) || Input.GetKeyDown(KeyCode.Alpha9)) + { + TriggerLagSpike(500); + } + + if (Input.GetKeyDown(KeyCode.Keypad0) || Input.GetKeyDown(KeyCode.Alpha0)) + { + SetNetworkDisconnect(true); + } + + } + + private void ToggleNetworkSimulator() + { + m_NetworkSimulator.enabled = !m_NetworkSimulator.enabled; + Debug.Log("Network Simulator " + (m_NetworkSimulator.enabled ? "Enabled": "Disabled")); + } + + private void TriggerLagSpike(int durationMs) + { + TimeSpan duration = TimeSpan.FromMilliseconds(durationMs); + m_NetworkSimulator.TriggerLagSpike(duration); + Debug.Log("Lag spike triggered for " + durationMs + " ms"); + } + + private void SetNetworkDisconnect(bool disconnect) + { + if (disconnect) + { + m_NetworkSimulator.Disconnect(); + Debug.Log("Network " + (disconnect ? "Disconnected": "Connected")); + } + } + + public void SetNetworkPresetHomeFiber() + { + var preset = m_NetworkSimulator.ConnectionPreset; + preset.PacketDelayMs = 10; + preset.PacketJitterMs = 1; + preset.PacketLossInterval = 0; + preset.PacketLossPercent = 0; + Debug.Log("Network preset set to Home Fiber"); + } + } +} diff --git a/Experimental/DistributedAuthoritySample/Assets/Scripts/Misc/MttToolsToggleController.cs.meta b/Experimental/DistributedAuthoritySample/Assets/Scripts/Misc/MttToolsToggleController.cs.meta new file mode 100644 index 000000000..97c1d6069 --- /dev/null +++ b/Experimental/DistributedAuthoritySample/Assets/Scripts/Misc/MttToolsToggleController.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: bf9109fc76854aaa820b242a9a151673 +timeCreated: 1722302849 \ No newline at end of file diff --git a/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/AudioIOController.cs b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/AudioIOController.cs new file mode 100644 index 000000000..79155ac16 --- /dev/null +++ b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/AudioIOController.cs @@ -0,0 +1,55 @@ +using System; +using Unity.Netcode; +using Unity.Services.Vivox; +using UnityEngine; + +public class AudioIOController : NetworkBehaviour +{ + private Boolean InputMuted, OutputMuted; + + void Start() + { + InputMuted = false; + OutputMuted = false; + } + + void Update() + { + if (IsOwner) + { + // Toggle mute input device + if (Input.GetKeyDown(KeyCode.I)) + { + if (InputMuted) + { + VivoxService.Instance.UnmuteInputDevice(); + Debug.Log("Input Unmuted"); + } + else + { + VivoxService.Instance.MuteInputDevice(); + Debug.Log("Input Muted"); + } + + InputMuted = !InputMuted; + } + + // Toggle mute output device + if (Input.GetKeyDown(KeyCode.O)) + { + if (OutputMuted) + { + VivoxService.Instance.UnmuteOutputDevice(); + Debug.Log("Output Unmuted"); + } + else + { + VivoxService.Instance.MuteOutputDevice(); + Debug.Log("Output Muted"); + } + + OutputMuted = !OutputMuted; + } + } + } +} diff --git a/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/AudioIOController.cs.meta b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/AudioIOController.cs.meta new file mode 100644 index 000000000..d15a3bb6f --- /dev/null +++ b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/AudioIOController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 78b4cd06011834d3699e301c9818fd0c \ No newline at end of file diff --git a/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/RosterItem.cs b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/RosterItem.cs new file mode 100644 index 000000000..acd2c6243 --- /dev/null +++ b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/RosterItem.cs @@ -0,0 +1,60 @@ +using System; +using UnityEngine; +using UnityEngine.UI; +using Unity.Services.Vivox; + +public class RosterItem : MonoBehaviour +{ + public VivoxParticipant Participant { get; private set; } + public Text PlayerNameText; + public Image ChatStateImage; + public Sprite MutedImage; + public Sprite SpeakingImage; + public Sprite NotSpeakingImage; + + public void SetupRosterItem(VivoxParticipant participant) + { + Participant = participant; + PlayerNameText.text = Participant.DisplayName; + UpdateChatStateImage(); + Participant.ParticipantMuteStateChanged += OnParticipantMuteStateChanged; + Participant.ParticipantSpeechDetected += OnParticipantSpeechDetected; + } + + private void OnDestroy() + { + if (Participant != null) + { + Participant.ParticipantMuteStateChanged -= OnParticipantMuteStateChanged; + Participant.ParticipantSpeechDetected -= OnParticipantSpeechDetected; + } + } + + private void OnParticipantMuteStateChanged() + { + UpdateChatStateImage(); + } + + private void OnParticipantSpeechDetected() + { + UpdateChatStateImage(); + } + + private void UpdateChatStateImage() + { + if (Participant.IsMuted) + { + ChatStateImage.sprite = MutedImage; + ChatStateImage.gameObject.transform.localScale = Vector3.one; + } + else if (Participant.SpeechDetected) + { + ChatStateImage.sprite = SpeakingImage; + ChatStateImage.gameObject.transform.localScale = Vector3.one; + } + else + { + ChatStateImage.sprite = NotSpeakingImage; + } + } +} diff --git a/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/RosterItem.cs.meta b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/RosterItem.cs.meta new file mode 100644 index 000000000..068d017e5 --- /dev/null +++ b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/RosterItem.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9dbebb48e36146d58e266ac32925430f +timeCreated: 1722295162 \ No newline at end of file diff --git a/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/TextChatManager.cs b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/TextChatManager.cs new file mode 100644 index 000000000..f39da006a --- /dev/null +++ b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/TextChatManager.cs @@ -0,0 +1,73 @@ +using System; +using Unity.Services.Vivox; +using UnityEngine; +using UnityEngine.UI; + +namespace Services +{ + public class TextChatManager : MonoBehaviour + { + public InputField m_ChatInputField; + public Text m_ChatDisplay; + public Button m_SendButton; + + private readonly string currentChannel = VivoxManager.Instance.SessionName; + private bool isChatActive = true; + + void Start() + { + m_SendButton.onClick.AddListener(SendMessage); + m_ChatInputField.onEndEdit.AddListener(OnChatInputEndEdit); + + BindSessionEvents(true); + } + + void Update() + { + if (Input.GetKeyDown(KeyCode.Slash)) + { + isChatActive = !isChatActive; + m_ChatInputField.enabled = isChatActive; + m_SendButton.enabled = isChatActive; + Debug.Log("Chat: " + (isChatActive ? "Activated" : "Disabled")); + } + } + + private async void SendMessage() + { + if (!string.IsNullOrEmpty(m_ChatInputField.text)) + { + await VivoxService.Instance.SendChannelTextMessageAsync(currentChannel, m_ChatInputField.text); + m_ChatInputField.text = ""; + } + } + + private void OnChatInputEndEdit(string input) + { + if (Input.GetKeyDown(KeyCode.Return)) + { + SendMessage(); + } + } + + private void BindSessionEvents(bool doBind) + { + if (doBind) + { + VivoxService.Instance.ChannelMessageReceived += OnChannelMessageReceived; + } + else + { + VivoxService.Instance.ChannelMessageReceived -= OnChannelMessageReceived; + } + } + + private void OnChannelMessageReceived(VivoxMessage message) + { + var senderDisplayName = message.SenderDisplayName; + var messageText = message.MessageText; + + m_ChatDisplay.text += $"{senderDisplayName}: {messageText}\n"; + } + } +} diff --git a/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/TextChatManager.cs.meta b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/TextChatManager.cs.meta new file mode 100644 index 000000000..cc35c6e27 --- /dev/null +++ b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/TextChatManager.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f077376c67e34260a6d9e53d1f5df219 +timeCreated: 1722298369 \ No newline at end of file diff --git a/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/Update3DPosition.cs b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/Update3DPosition.cs new file mode 100644 index 000000000..5b1f0dc47 --- /dev/null +++ b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/Update3DPosition.cs @@ -0,0 +1,31 @@ +using Services; +using Unity.Services.Vivox; +using UnityEngine; +using Unity.Netcode; + +public class Update3DPosition : NetworkBehaviour +{ + private float m_NextPosUpdate; + private string m_ChannelName; + + void Start() + { + while (VivoxManager.Instance == null) {}; + + m_ChannelName = VivoxManager.Instance.SessionName; + m_NextPosUpdate = Time.time + 3.0f; // wait 3 seconds to give a chance for player to join channel + } + + void Update() + { + if (IsOwner) + { + if (Time.time > m_NextPosUpdate) + { + VivoxService.Instance.Set3DPosition(gameObject, m_ChannelName); + m_NextPosUpdate += 0.3f; // update position every 0.3s + } + } + + } +} diff --git a/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/Update3DPosition.cs.meta b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/Update3DPosition.cs.meta new file mode 100644 index 000000000..01d8ba838 --- /dev/null +++ b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/Update3DPosition.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7736ab9dc5664c248e9e1d583cf9aa46 +timeCreated: 1722525445 \ No newline at end of file diff --git a/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/VivoxManager.cs b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/VivoxManager.cs new file mode 100644 index 000000000..207bfc970 --- /dev/null +++ b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/VivoxManager.cs @@ -0,0 +1,102 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using UnityEngine; +using Unity.Services.Vivox; + +namespace Services +{ + public class VivoxManager : MonoBehaviour + { + private List m_RosterItems = new List(); + public GameObject m_ParticipantPrefab; // Assign this in the Inspector + public Transform m_ParticipantListParent; // Assign this in the Inspector + + public static VivoxManager Instance { get; private set; } + + public static string PlayerProfileName { get; private set; } + public string SessionName { get; set; } + + private void Awake() + { + if (Instance == null) + { + Instance = this; + DontDestroyOnLoad(gameObject); + } + else + { + Destroy(gameObject); + } + } + + public async Task InitializeVivoxAsync(string playerName) + { + PlayerProfileName = playerName; + await VivoxService.Instance.InitializeAsync(); + await LoginToVivoxAsync(); + } + + private async Task LoginToVivoxAsync() + { + LoginOptions options = new LoginOptions(); + options.DisplayName = "Player_" + PlayerProfileName; + options.EnableTTS = false; + VivoxService.Instance.LoggedIn += LoggedInToVivox; + await VivoxService.Instance.LoginAsync(options); + } + + public async void JoinChannel(string channelName) + { + SessionName = channelName; + var channelOptions = new ChannelOptions(); + + await VivoxService.Instance.JoinPositionalChannelAsync(channelName, ChatCapability.TextAndAudio, + new Channel3DProperties(), channelOptions); + + VivoxService.Instance.Set3DPosition(m_ParticipantPrefab, channelName); + + Debug.Log("Joined text and audio channel"); + } + + void LoggedInToVivox() + { + Debug.Log(nameof(LoggedInToVivox)); + } + + private void BindSessionEvents(bool doBind) + { + if(doBind) + { + VivoxService.Instance.ParticipantAddedToChannel += onParticipantAddedToChannel; + VivoxService.Instance.ParticipantRemovedFromChannel += onParticipantRemovedFromChannel; + } + else + { + VivoxService.Instance.ParticipantAddedToChannel -= onParticipantAddedToChannel; + VivoxService.Instance.ParticipantRemovedFromChannel -= onParticipantRemovedFromChannel; + } + } + + private void onParticipantAddedToChannel(VivoxParticipant participant) + { + var participantGO = Instantiate(m_ParticipantPrefab, m_ParticipantListParent); + var participantComponent = participantGO.GetComponent(); + participantComponent.SetupRosterItem(participant); + //RosterItem newRosterItem = new RosterItem(); + //newRosterItem.SetupRosterItem(participant); + m_RosterItems.Add(participantComponent); + } + + private void onParticipantRemovedFromChannel(VivoxParticipant participant) + { + var participantToRemove = m_RosterItems.Find(p => p.Participant.PlayerId == participant.PlayerId); + if (participantToRemove != null) + { + m_RosterItems.Remove(participantToRemove); + Destroy(participantToRemove.gameObject); + } + /*RosterItem rosterItemToRemove = m_RosterItems.FirstOrDefault(p => p.Participant.PlayerId == participant.PlayerId); + m_RosterItems.Remove(rosterItemToRemove);*/ + } + } +} diff --git a/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/VivoxManager.cs.meta b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/VivoxManager.cs.meta new file mode 100644 index 000000000..d124ca364 --- /dev/null +++ b/Experimental/DistributedAuthoritySample/Assets/Scripts/Services/VivoxManager.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ac9e80387c754a478affe13d59edd7c3 +timeCreated: 1722272784 \ No newline at end of file diff --git a/Experimental/DistributedAuthoritySample/Assets/Scripts/Temp/ServicesHelper.cs b/Experimental/DistributedAuthoritySample/Assets/Scripts/Temp/ServicesHelper.cs index 0f9e5fa90..3952b75c5 100644 --- a/Experimental/DistributedAuthoritySample/Assets/Scripts/Temp/ServicesHelper.cs +++ b/Experimental/DistributedAuthoritySample/Assets/Scripts/Temp/ServicesHelper.cs @@ -1,6 +1,7 @@ using System; using System.Linq; using System.Threading.Tasks; +using Services; using Unity.Netcode; using Unity.Services.Authentication; using Unity.Services.Core; @@ -24,6 +25,8 @@ public class ServicesHelper : MonoBehaviour ISession m_LastSession; + public string PlayerProfileName { get; private set; } + void Awake() { DontDestroyOnLoad(this); @@ -37,9 +40,10 @@ async void Start() if (!AuthenticationService.Instance.IsSignedIn) { + PlayerProfileName = GetRandomString(5); AuthenticationService.Instance.SignInFailed += SignInFailed; AuthenticationService.Instance.SignedIn += SignedIn; - AuthenticationService.Instance.SwitchProfile(GetRandomString(5)); + AuthenticationService.Instance.SwitchProfile(PlayerProfileName); await AuthenticationService.Instance.SignInAnonymouslyAsync(); } } @@ -50,12 +54,12 @@ void SignInFailed(RequestFailedException obj) Debug.LogWarning($"{nameof(SignedIn)} obj.ErrorCode {obj.ErrorCode}"); } - void SignedIn() + async void SignedIn() { Debug.Log(nameof(SignedIn)); if (m_InitiateVivoxOnAuthentication) { - Login(); + await LoginToVivox(); } LoadMenuScene(); @@ -71,22 +75,15 @@ void LoadHubScene() SceneManager.LoadScene("HubScene"); } - async void Login() + async Task LoginToVivox() { - await VivoxService.Instance.InitializeAsync(); - - var options = new LoginOptions + // Wait until VivoxManager.Instance is not null + while (VivoxManager.Instance == null) { - DisplayName = AuthenticationService.Instance.Profile, - EnableTTS = true - }; - VivoxService.Instance.LoggedIn += LoggedInToVivox; - await VivoxService.Instance.LoginAsync(options); - } + await Task.Yield(); + } - void LoggedInToVivox() - { - Debug.Log(nameof(LoggedInToVivox)); + await VivoxManager.Instance.InitializeVivoxAsync(PlayerProfileName); } static string GetRandomString(int length) @@ -116,6 +113,9 @@ async Task ConnectThroughLiveService(string sessionName) LoadHubScene(); + // TODO: Channel name + VivoxManager.Instance.JoinChannel(sessionName); + // DA TODO: m_NetworkManager.OnClientStopped += OnNetworkManagerStopped; } catch (Exception e) diff --git a/Experimental/DistributedAuthoritySample/Packages/manifest.json b/Experimental/DistributedAuthoritySample/Packages/manifest.json index 8fc5f799d..d1d27fdd2 100644 --- a/Experimental/DistributedAuthoritySample/Packages/manifest.json +++ b/Experimental/DistributedAuthoritySample/Packages/manifest.json @@ -3,10 +3,11 @@ "com.unity.ai.navigation": "2.0.0", "com.unity.cinemachine": "2.10.1", "com.unity.collab-proxy": "2.4.3", + "com.unity.dedicated-server": "1.3.0-pre.1", "com.unity.ide.rider": "3.0.28", "com.unity.ide.visualstudio": "2.0.22", "com.unity.inputsystem": "1.8.2", - "com.unity.multiplayer.playmode": "1.2.0", + "com.unity.multiplayer.playmode": "1.3.0-pre.1", "com.unity.multiplayer.tools": "2.1.0", "com.unity.netcode.gameobjects": "https://github.com/Unity-Technologies/com.unity.netcode.gameobjects.git?path=com.unity.netcode.gameobjects#develop-2.0.0", "com.unity.render-pipelines.universal": "17.0.3", diff --git a/Experimental/DistributedAuthoritySample/Packages/packages-lock.json b/Experimental/DistributedAuthoritySample/Packages/packages-lock.json index 9a3bf4c32..5fafddb2d 100644 --- a/Experimental/DistributedAuthoritySample/Packages/packages-lock.json +++ b/Experimental/DistributedAuthoritySample/Packages/packages-lock.json @@ -47,6 +47,13 @@ }, "url": "https://packages.unity.com" }, + "com.unity.dedicated-server": { + "version": "1.3.0-pre.1", + "depth": 0, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, "com.unity.ext.nunit": { "version": "2.0.5", "depth": 1, @@ -89,7 +96,7 @@ "url": "https://packages.unity.com" }, "com.unity.multiplayer.playmode": { - "version": "1.2.0", + "version": "1.3.0-pre.1", "depth": 0, "source": "registry", "dependencies": { diff --git a/Experimental/DistributedAuthoritySample/ProjectSettings/MultiplayerManager.asset b/Experimental/DistributedAuthoritySample/ProjectSettings/MultiplayerManager.asset index 2a936644e..3210ff9de 100644 --- a/Experimental/DistributedAuthoritySample/ProjectSettings/MultiplayerManager.asset +++ b/Experimental/DistributedAuthoritySample/ProjectSettings/MultiplayerManager.asset @@ -3,5 +3,7 @@ --- !u!655991488 &1 MultiplayerManager: m_ObjectHideFlags: 0 - m_EnableMultiplayerRoles: 0 - m_StrippingTypes: {} + m_EnableMultiplayerRoles: 1 + m_StrippingTypes: + 1: [] + 2: [] diff --git a/Experimental/DistributedAuthoritySample/ProjectSettings/VirtualProjectsConfig.json b/Experimental/DistributedAuthoritySample/ProjectSettings/VirtualProjectsConfig.json index 911d2c6cd..abeeaa875 100644 --- a/Experimental/DistributedAuthoritySample/ProjectSettings/VirtualProjectsConfig.json +++ b/Experimental/DistributedAuthoritySample/ProjectSettings/VirtualProjectsConfig.json @@ -1,4 +1,4 @@ { "PlayerTags": [], - "version": "1.2.0" + "version": "1.3.0-pre.1" } \ No newline at end of file