Implement player network spawning and position synchronization

This commit is contained in:
2024-08-25 17:43:19 +02:00
parent 6e037b4d06
commit b05cab8288
30 changed files with 689 additions and 26 deletions

View File

@@ -1,13 +1,12 @@
using HurricaneVR.Framework.Core;
using HurricaneVR.Framework.Core.Player;
using HurricaneVR.Framework.Core.Utils;
using Unity.Netcode;
using UnityEngine;
using Zenject;
public class GlobalInstaller : MonoInstaller
{
[SerializeField]
private GameObject musicPlayerPrefab;
@@ -15,10 +14,16 @@ public class GlobalInstaller : MonoInstaller
private GameObject hvrGlobalPrefab;
[SerializeField]
private GameObject playerPrefab;
private GameObject sceneManagerPrefab;
[SerializeField]
private GameObject sceneManagerPrefab;
private GameObject networkManagerPrefab;
[SerializeField]
private GameObject gameManagerPrefab;
[SerializeField]
private GameObject playerPrefab;
public override void Start()
{
@@ -46,12 +51,12 @@ public class GlobalInstaller : MonoInstaller
})
.NonLazy();
Container.Bind<HVRPlayerController>()
.FromComponentInNewPrefab(playerPrefab)
Container.Bind<GameManager>()
.FromComponentInNewPrefab(gameManagerPrefab)
.AsSingle()
.OnInstantiated<HVRPlayerController>((ctx, obj) =>
.OnInstantiated<GameManager>((ctx, obj) =>
{
obj.transform.parent.name = playerPrefab.name;
obj.name = gameManagerPrefab.name;
})
.NonLazy();
@@ -63,5 +68,23 @@ public class GlobalInstaller : MonoInstaller
obj.name = sceneManagerPrefab.name;
})
.NonLazy();
Container.Bind<NetworkManager>()
.FromComponentInNewPrefab(networkManagerPrefab)
.AsSingle()
.OnInstantiated<NetworkManager>((ctx, obj) =>
{
obj.name = networkManagerPrefab.name;
})
.NonLazy();
Container.Bind<PlayerComponent>()
.FromComponentInNewPrefab(playerPrefab)
.AsSingle()
.OnInstantiated<PlayerComponent>((ctx, obj) =>
{
obj.name = playerPrefab.name;
})
.NonLazy();
}
}