using HurricaneVR.Framework.Core; using HurricaneVR.Framework.Core.Player; using HurricaneVR.Framework.Core.Utils; using System.Collections; using Unity.Netcode; using UnityEngine; using Zenject; public class GlobalInstaller : MonoInstaller { [SerializeField] private GameObject musicPlayerPrefab; [SerializeField] private GameObject hvrGlobalPrefab; [SerializeField] private GameObject sceneManagerPrefab; [SerializeField] private GameObject networkManagerPrefab; [SerializeField] private GameObject gameManagerPrefab; [SerializeField] private GameObject playerPrefab; public override void Start() { base.Start(); name = "ProjectContext"; } public override void InstallBindings() { Container.Bind() .FromComponentInNewPrefab(musicPlayerPrefab) .AsSingle() .OnInstantiated((ctx, obj) => { obj.name = musicPlayerPrefab.name; }); Container.Bind() .FromComponentInNewPrefab(hvrGlobalPrefab) .AsSingle() .OnInstantiated((ctx, obj) => { obj.name = hvrGlobalPrefab.name; }) .NonLazy(); Container.Bind() .FromComponentInNewPrefab(gameManagerPrefab) .AsSingle() .OnInstantiated((ctx, obj) => { obj.name = gameManagerPrefab.name; }) .NonLazy(); Container.Bind() .FromComponentInNewPrefab(sceneManagerPrefab) .AsSingle() .OnInstantiated((ctx, obj) => { obj.name = sceneManagerPrefab.name; }) .NonLazy(); var go = Instantiate(networkManagerPrefab); go.name = networkManagerPrefab.name; var networkManager = go.GetComponent(); Container.BindInstance(networkManager) .AsSingle(); var playerGO = Instantiate(playerPrefab); playerGO.name = playerPrefab.name; var playerComponent = playerGO.GetComponent(); Container.BindInstance(playerComponent) .AsSingle(); } }