87 lines
2.3 KiB
C#
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();
|
|
}
|
|
} |