Files
dungeons/Assets/Scripts/Installers/GlobalInstaller.cs

87 lines
2.3 KiB
C#

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<MusicManager>()
.FromComponentInNewPrefab(musicPlayerPrefab)
.AsSingle()
.OnInstantiated<MusicManager>((ctx, obj) =>
{
obj.name = musicPlayerPrefab.name;
});
Container.Bind<HVRManager>()
.FromComponentInNewPrefab(hvrGlobalPrefab)
.AsSingle()
.OnInstantiated<HVRManager>((ctx, obj) =>
{
obj.name = hvrGlobalPrefab.name;
})
.NonLazy();
Container.Bind<GameManager>()
.FromComponentInNewPrefab(gameManagerPrefab)
.AsSingle()
.OnInstantiated<GameManager>((ctx, obj) =>
{
obj.name = gameManagerPrefab.name;
})
.NonLazy();
Container.Bind<SceneManager>()
.FromComponentInNewPrefab(sceneManagerPrefab)
.AsSingle()
.OnInstantiated<SceneManager>((ctx, obj) =>
{
obj.name = sceneManagerPrefab.name;
})
.NonLazy();
var go = Instantiate(networkManagerPrefab);
go.name = networkManagerPrefab.name;
var networkManager = go.GetComponent<NetworkManager>();
Container.BindInstance(networkManager)
.AsSingle();
var playerGO = Instantiate(playerPrefab);
playerGO.name = playerPrefab.name;
var playerComponent = playerGO.GetComponent<PlayerComponent>();
Container.BindInstance(playerComponent)
.AsSingle();
}
}