Reimplement solo and mp rig switching
This commit is contained in:
@@ -993,7 +993,7 @@ namespace HurricaneVR.Framework.ControllerInput
|
|||||||
#else
|
#else
|
||||||
loaders = string.Join(",", XRGeneralSettings.Instance.Manager.loaders.Select(e => e.name));
|
loaders = string.Join(",", XRGeneralSettings.Instance.Manager.loaders.Select(e => e.name));
|
||||||
#endif
|
#endif
|
||||||
Debug.Log($"{XRGeneralSettings.Instance.Manager.automaticLoading}");
|
//Debug.Log($"{XRGeneralSettings.Instance.Manager.automaticLoading}");
|
||||||
Debug.Log($"XRGeneralSettings.Instance.Manager.isInitializationComplete {XRGeneralSettings.Instance.Manager.isInitializationComplete}");
|
Debug.Log($"XRGeneralSettings.Instance.Manager.isInitializationComplete {XRGeneralSettings.Instance.Manager.isInitializationComplete}");
|
||||||
Debug.Log($"XRPlugin Detected | XRSettings.enabled {XRSettings.enabled} | Loader : {XRPluginLoader} | Loaders Enabled: {loaders}");
|
Debug.Log($"XRPlugin Detected | XRSettings.enabled {XRSettings.enabled} | Loader : {XRPluginLoader} | Loaders Enabled: {loaders}");
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,16 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: d357a0b6e2db94a4aadef95ef4fff758, type: 3}
|
m_Script: {fileID: 11500000, guid: d357a0b6e2db94a4aadef95ef4fff758, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
soloRig: {fileID: 0}
|
rigPrefab: {fileID: 75161255762383020, guid: 1ef3259331ddc1f4d94b628323ec45f3, type: 3}
|
||||||
multiplayerRig: {fileID: 0}
|
player: {fileID: 0}
|
||||||
networkManager: {fileID: 0}
|
networkManager: {fileID: 0}
|
||||||
autoConnectOrHost: 0
|
autoConnectOrHost: 0
|
||||||
|
OnConnected:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
OnDisconnected:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
OnClientsChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
|||||||
@@ -21,22 +21,22 @@ PrefabInstance:
|
|||||||
- target: {fileID: 2723252326716659909, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 2723252326716659909, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_AnchorMax.y
|
propertyPath: m_AnchorMax.y
|
||||||
value: 0
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 2723252326716659909, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 2723252326716659909, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_AnchorMin.y
|
propertyPath: m_AnchorMin.y
|
||||||
value: 0
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 2723252326716659909, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 2723252326716659909, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_SizeDelta.x
|
propertyPath: m_SizeDelta.x
|
||||||
value: 148
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 2723252326716659909, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 2723252326716659909, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_SizeDelta.y
|
propertyPath: m_SizeDelta.y
|
||||||
value: 0
|
value: 148
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 2723252326716659909, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 2723252326716659909, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
@@ -46,7 +46,7 @@ PrefabInstance:
|
|||||||
- target: {fileID: 2723252326716659909, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 2723252326716659909, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_AnchoredPosition.y
|
propertyPath: m_AnchoredPosition.y
|
||||||
value: 0
|
value: -280
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 3680965801110432182, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 3680965801110432182, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
@@ -71,22 +71,22 @@ PrefabInstance:
|
|||||||
- target: {fileID: 6236588919629483555, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 6236588919629483555, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_AnchorMax.y
|
propertyPath: m_AnchorMax.y
|
||||||
value: 0
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6236588919629483555, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 6236588919629483555, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_AnchorMin.y
|
propertyPath: m_AnchorMin.y
|
||||||
value: 0
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6236588919629483555, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 6236588919629483555, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_SizeDelta.x
|
propertyPath: m_SizeDelta.x
|
||||||
value: 148
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6236588919629483555, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 6236588919629483555, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_SizeDelta.y
|
propertyPath: m_SizeDelta.y
|
||||||
value: 0
|
value: 148
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6236588919629483555, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 6236588919629483555, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
@@ -96,27 +96,27 @@ PrefabInstance:
|
|||||||
- target: {fileID: 6236588919629483555, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 6236588919629483555, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_AnchoredPosition.y
|
propertyPath: m_AnchoredPosition.y
|
||||||
value: 0
|
value: -280
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6353877099413377020, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 6353877099413377020, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_AnchorMax.y
|
propertyPath: m_AnchorMax.y
|
||||||
value: 0
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6353877099413377020, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 6353877099413377020, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_AnchorMin.y
|
propertyPath: m_AnchorMin.y
|
||||||
value: 0
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6353877099413377020, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 6353877099413377020, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_SizeDelta.x
|
propertyPath: m_SizeDelta.x
|
||||||
value: 148
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6353877099413377020, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 6353877099413377020, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_SizeDelta.y
|
propertyPath: m_SizeDelta.y
|
||||||
value: 0
|
value: 148
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6353877099413377020, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 6353877099413377020, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
@@ -126,27 +126,27 @@ PrefabInstance:
|
|||||||
- target: {fileID: 6353877099413377020, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 6353877099413377020, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_AnchoredPosition.y
|
propertyPath: m_AnchoredPosition.y
|
||||||
value: 0
|
value: -206
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6413800453266084155, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 6413800453266084155, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_AnchorMax.y
|
propertyPath: m_AnchorMax.y
|
||||||
value: 0
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6413800453266084155, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 6413800453266084155, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_AnchorMin.y
|
propertyPath: m_AnchorMin.y
|
||||||
value: 0
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6413800453266084155, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 6413800453266084155, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_SizeDelta.x
|
propertyPath: m_SizeDelta.x
|
||||||
value: 148
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6413800453266084155, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 6413800453266084155, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_SizeDelta.y
|
propertyPath: m_SizeDelta.y
|
||||||
value: 0
|
value: 148
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6413800453266084155, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 6413800453266084155, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
@@ -156,7 +156,7 @@ PrefabInstance:
|
|||||||
- target: {fileID: 6413800453266084155, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 6413800453266084155, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_AnchoredPosition.y
|
propertyPath: m_AnchoredPosition.y
|
||||||
value: 0
|
value: -280
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 7749079862415865764, guid: f871c3b28fd786d4f820bea343f67979,
|
- target: {fileID: 7749079862415865764, guid: f871c3b28fd786d4f820bea343f67979,
|
||||||
type: 3}
|
type: 3}
|
||||||
@@ -275,7 +275,7 @@ PrefabInstance:
|
|||||||
- target: {fileID: 3822188217954140599, guid: 6974999791dc8804fafee05e319aa932,
|
- target: {fileID: 3822188217954140599, guid: 6974999791dc8804fafee05e319aa932,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_Enabled
|
propertyPath: m_Enabled
|
||||||
value: 0
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 3924027509007222391, guid: 6974999791dc8804fafee05e319aa932,
|
- target: {fileID: 3924027509007222391, guid: 6974999791dc8804fafee05e319aa932,
|
||||||
type: 3}
|
type: 3}
|
||||||
@@ -622,7 +622,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
|
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
GlobalObjectIdHash: 918221477
|
GlobalObjectIdHash: 3394388680
|
||||||
InScenePlacedSourceGlobalObjectIdHash: 0
|
InScenePlacedSourceGlobalObjectIdHash: 0
|
||||||
AlwaysReplicateAsRoot: 0
|
AlwaysReplicateAsRoot: 0
|
||||||
SynchronizeTransform: 1
|
SynchronizeTransform: 1
|
||||||
|
|||||||
@@ -2810,37 +2810,6 @@ Transform:
|
|||||||
type: 3}
|
type: 3}
|
||||||
m_PrefabInstance: {fileID: 212601291}
|
m_PrefabInstance: {fileID: 212601291}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
--- !u!1 &216372457
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 216372458}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: Character_Sample_04 (1)
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 0
|
|
||||||
--- !u!4 &216372458
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 216372457}
|
|
||||||
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!1001 &217767396
|
--- !u!1001 &217767396
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -4507,37 +4476,6 @@ PrefabInstance:
|
|||||||
m_AddedGameObjects: []
|
m_AddedGameObjects: []
|
||||||
m_AddedComponents: []
|
m_AddedComponents: []
|
||||||
m_SourcePrefab: {fileID: 100100000, guid: 693918f5252cc9543ad4901c66a265ed, type: 3}
|
m_SourcePrefab: {fileID: 100100000, guid: 693918f5252cc9543ad4901c66a265ed, type: 3}
|
||||||
--- !u!1 &310335279
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 310335280}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: Character_Sample_04
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 0
|
|
||||||
--- !u!4 &310335280
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 310335279}
|
|
||||||
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!1001 &313084521
|
--- !u!1001 &313084521
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -11368,37 +11306,6 @@ Transform:
|
|||||||
type: 3}
|
type: 3}
|
||||||
m_PrefabInstance: {fileID: 845377780}
|
m_PrefabInstance: {fileID: 845377780}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
--- !u!1 &856515704
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 856515705}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: InputField_Icon_Lock
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 0
|
|
||||||
--- !u!4 &856515705
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 856515704}
|
|
||||||
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 &857455115
|
--- !u!1 &857455115
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -35379,6 +35286,3 @@ SceneRoots:
|
|||||||
- {fileID: 3091828949070161056}
|
- {fileID: 3091828949070161056}
|
||||||
- {fileID: 2770940432321735806}
|
- {fileID: 2770940432321735806}
|
||||||
- {fileID: 2097484082}
|
- {fileID: 2097484082}
|
||||||
- {fileID: 856515705}
|
|
||||||
- {fileID: 310335280}
|
|
||||||
- {fileID: 216372458}
|
|
||||||
|
|||||||
@@ -11,9 +11,14 @@ using Unity.Netcode.Components;
|
|||||||
using Unity.VisualScripting;
|
using Unity.VisualScripting;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Rendering.Universal;
|
using UnityEngine.Rendering.Universal;
|
||||||
|
using Zenject;
|
||||||
|
|
||||||
public class PlayerComponent : NetworkBehaviour
|
public class PlayerComponent : NetworkBehaviour
|
||||||
{
|
{
|
||||||
|
[SerializeField]
|
||||||
|
[Inject]
|
||||||
|
private HVRInputModule inputModule;
|
||||||
|
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
private NetworkObject networkObject;
|
private NetworkObject networkObject;
|
||||||
|
|
||||||
@@ -45,46 +50,61 @@ public class PlayerComponent : NetworkBehaviour
|
|||||||
public Vector3 Rotation => controller.Camera.forward;
|
public Vector3 Rotation => controller.Camera.forward;
|
||||||
|
|
||||||
private bool isSoloRig => !networkObject.IsPlayerObject;
|
private bool isSoloRig => !networkObject.IsPlayerObject;
|
||||||
private bool isMultiplayerLocalRig => networkObject.IsLocalPlayer;
|
private bool isLocalRig => networkObject.IsLocalPlayer;
|
||||||
|
|
||||||
private bool isMultiplayerRemoteRig => !networkObject.IsOwner && networkObject.IsPlayerObject;
|
private bool isRemoteRig => !networkObject.IsOwner && networkObject.IsPlayerObject;
|
||||||
|
|
||||||
public override void OnNetworkSpawn()
|
// Teleport information after player is loaded into scene
|
||||||
{
|
private Vector3 teleportPosition;
|
||||||
base.OnNetworkSpawn();
|
private Vector3 teleportRotation;
|
||||||
|
private bool teleportAfterLoad;
|
||||||
|
|
||||||
if (!isSoloRig)
|
private bool isLoaded;
|
||||||
{
|
|
||||||
name = $"Player - {networkObject.OwnerClientId}"
|
|
||||||
+ (networkObject.IsLocalPlayer ? " (local)" : "");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isMultiplayerRemoteRig)
|
|
||||||
{
|
|
||||||
StartCoroutine(DestroyMultiplayerComponents());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
|
this.Inject();
|
||||||
|
|
||||||
StartCoroutine(AddDontDestroyToDependencies());
|
StartCoroutine(AddDontDestroyToDependencies());
|
||||||
|
|
||||||
if (isSoloRig || isMultiplayerLocalRig)
|
if (isSoloRig)
|
||||||
{
|
{
|
||||||
foreach (var pointer in GetComponentsInChildren<HVRUIPointer>())
|
AddPointersToInputModule();
|
||||||
{
|
|
||||||
HVRInputModule.Instance.AddPointer(pointer);
|
name = "Player - SP";
|
||||||
}
|
|
||||||
|
StartCoroutine(DestroyComponentsNotNeededForSolo());
|
||||||
|
DontDestroyOnLoad(gameObject);
|
||||||
|
}
|
||||||
|
else if (isLocalRig)
|
||||||
|
{
|
||||||
|
AddPointersToInputModule();
|
||||||
|
|
||||||
|
name = $"Player - MP {networkObject.OwnerClientId} (local)";
|
||||||
|
}
|
||||||
|
else if (isRemoteRig)
|
||||||
|
{
|
||||||
|
name = $"Player - MP {networkObject.OwnerClientId}";
|
||||||
|
StartCoroutine(DestroyComponentsNotNeededForRemoteRigs());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isSoloRig) return;
|
isLoaded = true;
|
||||||
|
|
||||||
audioListener.enabled = true;
|
if (teleportAfterLoad)
|
||||||
StartCoroutine(DestroySoloComponents());
|
{
|
||||||
DontDestroyOnLoad(gameObject);
|
Teleport(teleportPosition, teleportRotation);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerator DestroyMultiplayerComponents()
|
private void AddPointersToInputModule()
|
||||||
|
{
|
||||||
|
foreach (var pointer in GetComponentsInChildren<HVRUIPointer>())
|
||||||
|
{
|
||||||
|
inputModule.AddPointer(pointer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerator DestroyComponentsNotNeededForRemoteRigs()
|
||||||
{
|
{
|
||||||
yield return new WaitForEndOfFrame();
|
yield return new WaitForEndOfFrame();
|
||||||
|
|
||||||
@@ -105,7 +125,7 @@ public class PlayerComponent : NetworkBehaviour
|
|||||||
controller.RemoveMultiplayerComponents();
|
controller.RemoveMultiplayerComponents();
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerator DestroySoloComponents()
|
private IEnumerator DestroyComponentsNotNeededForSolo()
|
||||||
{
|
{
|
||||||
yield return new WaitForEndOfFrame();
|
yield return new WaitForEndOfFrame();
|
||||||
|
|
||||||
@@ -140,26 +160,18 @@ public class PlayerComponent : NetworkBehaviour
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ToggleAudioListener(bool enabled) => audioListener.enabled = enabled;
|
|
||||||
|
|
||||||
public void Toggle(bool active)
|
|
||||||
{
|
|
||||||
// Only toggle solo rig components, not multiplayer one
|
|
||||||
if (networkObject == null || isSoloRig)
|
|
||||||
{
|
|
||||||
foreach (var d in dependencies)
|
|
||||||
{
|
|
||||||
d.SetActive(active);
|
|
||||||
}
|
|
||||||
|
|
||||||
audioListener.enabled = active;
|
|
||||||
gameObject.SetActive(active);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Teleport(Vector3 position, Vector3 direction)
|
public void Teleport(Vector3 position, Vector3 direction)
|
||||||
{
|
{
|
||||||
teleporter.Teleport(position, direction);
|
if (isLoaded)
|
||||||
|
{
|
||||||
|
teleporter.Teleport(position, direction);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
teleportPosition = position;
|
||||||
|
teleportRotation = direction;
|
||||||
|
teleportAfterLoad = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void FadeScreen(float to, float duration)
|
public void FadeScreen(float to, float duration)
|
||||||
|
|||||||
@@ -24,9 +24,6 @@ public class GlobalInstaller : MonoInstaller
|
|||||||
[SerializeField]
|
[SerializeField]
|
||||||
private GameObject gameManagerPrefab;
|
private GameObject gameManagerPrefab;
|
||||||
|
|
||||||
[SerializeField]
|
|
||||||
private GameObject playerPrefab;
|
|
||||||
|
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
private GameObject uiManagerPrefab;
|
private GameObject uiManagerPrefab;
|
||||||
|
|
||||||
@@ -81,13 +78,6 @@ public class GlobalInstaller : MonoInstaller
|
|||||||
Container.BindInstance(networkManager)
|
Container.BindInstance(networkManager)
|
||||||
.AsSingle();
|
.AsSingle();
|
||||||
|
|
||||||
var playerGO = Instantiate(playerPrefab);
|
|
||||||
playerGO.name = playerPrefab.name;
|
|
||||||
var playerComponent = playerGO.GetComponent<PlayerComponent>();
|
|
||||||
|
|
||||||
Container.BindInstance(playerComponent)
|
|
||||||
.AsSingle();
|
|
||||||
|
|
||||||
Container.Bind<HVRInputModule>()
|
Container.Bind<HVRInputModule>()
|
||||||
.FromComponentInNewPrefab(uiManagerPrefab)
|
.FromComponentInNewPrefab(uiManagerPrefab)
|
||||||
.AsSingle()
|
.AsSingle()
|
||||||
|
|||||||
@@ -10,15 +10,13 @@ using System.Collections.Generic;
|
|||||||
public class GameManager : NetworkBehaviour
|
public class GameManager : NetworkBehaviour
|
||||||
{
|
{
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
[ReadOnly]
|
private GameObject rigPrefab;
|
||||||
[Inject]
|
|
||||||
private PlayerComponent soloRig;
|
|
||||||
|
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
[ReadOnly]
|
[ReadOnly]
|
||||||
private PlayerComponent multiplayerRig;
|
private PlayerComponent player;
|
||||||
|
|
||||||
public PlayerComponent LocalPlayer => multiplayerRig ?? soloRig;
|
public PlayerComponent LocalPlayer => player;
|
||||||
|
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
[ReadOnly]
|
[ReadOnly]
|
||||||
@@ -43,6 +41,8 @@ public class GameManager : NetworkBehaviour
|
|||||||
networkManager.OnClientConnectedCallback += OnClientConnectedCallback;
|
networkManager.OnClientConnectedCallback += OnClientConnectedCallback;
|
||||||
networkManager.OnClientDisconnectCallback += OnClientDisconnectCallback;
|
networkManager.OnClientDisconnectCallback += OnClientDisconnectCallback;
|
||||||
|
|
||||||
|
player = SpawnSoloRig();
|
||||||
|
|
||||||
if (autoConnectOrHost)
|
if (autoConnectOrHost)
|
||||||
{
|
{
|
||||||
if (ClonesManager.IsClone())
|
if (ClonesManager.IsClone())
|
||||||
@@ -56,6 +56,11 @@ public class GameManager : NetworkBehaviour
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private PlayerComponent SpawnSoloRig()
|
||||||
|
{
|
||||||
|
return Instantiate(rigPrefab).GetComponent<PlayerComponent>();
|
||||||
|
}
|
||||||
|
|
||||||
public void JoinGame(string code)
|
public void JoinGame(string code)
|
||||||
{
|
{
|
||||||
networkManager.StartClient();
|
networkManager.StartClient();
|
||||||
@@ -107,23 +112,25 @@ public class GameManager : NetworkBehaviour
|
|||||||
{
|
{
|
||||||
yield return new WaitForEndOfFrame();
|
yield return new WaitForEndOfFrame();
|
||||||
|
|
||||||
|
var position = player.Position;
|
||||||
|
var rotation = player.Rotation;
|
||||||
|
player.DestroyDependencies();
|
||||||
|
|
||||||
if (toSolo)
|
if (toSolo)
|
||||||
{
|
{
|
||||||
soloRig.Toggle(toSolo);
|
yield return new WaitForEndOfFrame();
|
||||||
soloRig.Teleport(multiplayerRig.Position, multiplayerRig.Rotation);
|
player = SpawnSoloRig();
|
||||||
multiplayerRig.DestroyDependencies();
|
|
||||||
multiplayerRig = null;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
soloRig.Toggle(toSolo);
|
Destroy(player.gameObject);
|
||||||
|
yield return new WaitForEndOfFrame();
|
||||||
var playerObject = networkManager.LocalClient.PlayerObject;
|
var playerObject = networkManager.LocalClient.PlayerObject;
|
||||||
multiplayerRig = playerObject.GetComponent<PlayerComponent>();
|
player = playerObject.GetComponent<PlayerComponent>();
|
||||||
multiplayerRig.Teleport(soloRig.Position, soloRig.Rotation);
|
|
||||||
multiplayerRig.ToggleAudioListener(true);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
player.Teleport(position, rotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnClientDisconnectCallback(ulong clientId)
|
private void OnClientDisconnectCallback(ulong clientId)
|
||||||
|
|||||||
@@ -70,6 +70,8 @@ public class HandMenuUI : NetworkBehaviour
|
|||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
|
this.Inject();
|
||||||
|
|
||||||
if (uiInput == null) return;
|
if (uiInput == null) return;
|
||||||
|
|
||||||
canvas = GetComponent<Canvas>();
|
canvas = GetComponent<Canvas>();
|
||||||
@@ -88,14 +90,6 @@ public class HandMenuUI : NetworkBehaviour
|
|||||||
settingsButton.onClick.AddListener(() => SettingsClicked());
|
settingsButton.onClick.AddListener(() => SettingsClicked());
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnNetworkSpawn()
|
|
||||||
{
|
|
||||||
base.OnNetworkSpawn();
|
|
||||||
|
|
||||||
// Player components need to be injected manualy again, because NetworkManager doesn't inject them.
|
|
||||||
gameObject.Inject();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
CheckInput();
|
CheckInput();
|
||||||
|
|||||||
@@ -43,4 +43,9 @@ public static class Injector
|
|||||||
{
|
{
|
||||||
LookupContainer(go, container).InjectGameObject(go);
|
LookupContainer(go, container).InjectGameObject(go);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void Inject(this MonoBehaviour mb, ContainerSources container = ContainerSources.SceneContext)
|
||||||
|
{
|
||||||
|
LookupContainer(mb.gameObject, container).Inject(mb);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user