Add lobby and scene managers, implement scene switching with fade in/out

This commit is contained in:
2024-08-20 18:47:34 +02:00
parent 0d490be61a
commit 3f64f82464
28 changed files with 353 additions and 19 deletions

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 464b3c5ba97aca44ab958c34d08ea3d5
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 2a39b3c0d6d9bbe46a4816fd62320f4b
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 31c90a1529188b947854cd14e13aef5a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 19be22f6bb3775a478ef0c441b6c3a20
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 669e8154ef4d9b64787f2974409f606c
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -41,5 +41,5 @@ MonoBehaviour:
systemSplashScreen: {fileID: 0} systemSplashScreen: {fileID: 0}
systemSplashScreenType: 0 systemSplashScreenType: 0
_systemLoadingScreenBackground: 0 _systemLoadingScreenBackground: 0
ovrPluginMd5Win64: aa662cdf2f901973cc80422bf87a766d1bbe7d8a73b1be1e622af9e4457d65e2 ovrPluginMd5Win64: aa662cdf2f901973cc80422bf87a766d438fe4f2245bacd864e9180e0a41d7ca
ovrPluginMd5Android: b191da349d7c05c640e5f41721d8abdfa2a3f8d400e1e1d353e3c5d59202932c ovrPluginMd5Android: b191da349d7c05c640e5f41721d8abdfa7931b9213e8e481fc0316f7eef4ffc9

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: f597f19f656ba56eae4f6a3a7cc528f4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 48e08dc33330d11e9d4a1b246c52e4f6
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ed09910c0094cb27be8f3ca264680da3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: cc355dd4cf1e6173beaeb22c2858cbe1
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 91b0b4c77fdd1d24aa1af646e9d29960
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: aebd7ef925dd4fe4690c3238e879f914
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 8645273165cb7f54290d6eaa1e10ab37
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -13,6 +13,11 @@ PrefabInstance:
propertyPath: RaycastLayermask.m_Bits propertyPath: RaycastLayermask.m_Bits
value: 1048577 value: 1048577
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 885885627402359450, guid: 6974999791dc8804fafee05e319aa932,
type: 3}
propertyPath: m_PresetInfoIsWorld
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3485174680740724534, guid: 6974999791dc8804fafee05e319aa932, - target: {fileID: 3485174680740724534, guid: 6974999791dc8804fafee05e319aa932,
type: 3} type: 3}
propertyPath: SocketContainer propertyPath: SocketContainer
@@ -78,6 +83,11 @@ PrefabInstance:
propertyPath: TeleportableLayers.m_Bits propertyPath: TeleportableLayers.m_Bits
value: 1049143 value: 1049143
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 5601958842363464469, guid: 6974999791dc8804fafee05e319aa932,
type: 3}
propertyPath: m_PresetInfoIsWorld
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6805818130727380499, guid: 6974999791dc8804fafee05e319aa932, - target: {fileID: 6805818130727380499, guid: 6974999791dc8804fafee05e319aa932,
type: 3} type: 3}
propertyPath: m_IsActive propertyPath: m_IsActive

View File

@@ -0,0 +1,47 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &9083120132262756458
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6622870952284305087}
- component: {fileID: 4322271132041590388}
m_Layer: 0
m_Name: SceneManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6622870952284305087
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9083120132262756458}
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!114 &4322271132041590388
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9083120132262756458}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 324a182340742c54cbdb3967f1916e29, type: 3}
m_Name:
m_EditorClassIdentifier:
playerController: {fileID: 0}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 195c448c3b94b5f47a2aa13187a0bc99
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,48 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &5030030548773179242
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 16652901659177099}
- component: {fileID: 8662502360844444211}
m_Layer: 0
m_Name: LobbyManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &16652901659177099
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5030030548773179242}
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!114 &8662502360844444211
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5030030548773179242}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b8b4a0794fa1d6c44adcec647be166a6, type: 3}
m_Name:
m_EditorClassIdentifier:
musicManager: {fileID: 0}
backgroundMusicClip: {fileID: 8300000, guid: 30dd1c9e0f80b8c41a66e325c4f6884f, type: 3}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 81d211fb3f60c2644a664537a51bda29
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -80,3 +80,5 @@ MonoBehaviour:
type: 3} type: 3}
playerPrefab: {fileID: 75161255762383020, guid: 1ef3259331ddc1f4d94b628323ec45f3, playerPrefab: {fileID: 75161255762383020, guid: 1ef3259331ddc1f4d94b628323ec45f3,
type: 3} type: 3}
sceneManagerPrefab: {fileID: 9083120132262756458, guid: 195c448c3b94b5f47a2aa13187a0bc99,
type: 3}

View File

@@ -8206,6 +8206,7 @@ GameObject:
m_Component: m_Component:
- component: {fileID: 669203337} - component: {fileID: 669203337}
- component: {fileID: 669203336} - component: {fileID: 669203336}
- component: {fileID: 669203338}
m_Layer: 0 m_Layer: 0
m_Name: SceneContext m_Name: SceneContext
m_TagString: Untagged m_TagString: Untagged
@@ -8226,7 +8227,8 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
_scriptableObjectInstallers: [] _scriptableObjectInstallers: []
_monoInstallers: [] _monoInstallers:
- {fileID: 669203338}
_installerPrefabs: [] _installerPrefabs: []
_autoRun: 1 _autoRun: 1
OnPreInstall: OnPreInstall:
@@ -8259,6 +8261,18 @@ Transform:
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &669203338
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 669203335}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a37c700de6d3a4a4385fcc8bcd15405f, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &673324911 --- !u!1001 &673324911
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@@ -1,4 +1,5 @@
using HurricaneVR.Framework.Core; using HurricaneVR.Framework.Core;
using HurricaneVR.Framework.Core.Player;
using HurricaneVR.Framework.Core.Utils; using HurricaneVR.Framework.Core.Utils;
using UnityEngine; using UnityEngine;
using Zenject; using Zenject;
@@ -16,6 +17,9 @@ public class GlobalInstaller : MonoInstaller
[SerializeField] [SerializeField]
private GameObject playerPrefab; private GameObject playerPrefab;
[SerializeField]
private GameObject sceneManagerPrefab;
public override void Start() public override void Start()
{ {
base.Start(); base.Start();
@@ -42,12 +46,21 @@ public class GlobalInstaller : MonoInstaller
}) })
.NonLazy(); .NonLazy();
Container.Bind<HVRObjectCollisionDisabler>() Container.Bind<HVRPlayerController>()
.FromComponentInNewPrefab(playerPrefab) .FromComponentInNewPrefab(playerPrefab)
.AsSingle() .AsSingle()
.OnInstantiated<HVRObjectCollisionDisabler>((ctx, obj) => .OnInstantiated<HVRPlayerController>((ctx, obj) =>
{ {
obj.name = playerPrefab.name; obj.transform.parent.name = playerPrefab.name;
})
.NonLazy();
Container.Bind<SceneManager>()
.FromComponentInNewPrefab(sceneManagerPrefab)
.AsSingle()
.OnInstantiated<SceneManager>((ctx, obj) =>
{
obj.name = sceneManagerPrefab.name;
}) })
.NonLazy(); .NonLazy();
} }

View File

@@ -1,18 +1,17 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using Zenject;
public class LobbyInstaller : MonoBehaviour public class LobbyInstaller : MonoInstaller
{ {
// Start is called before the first frame update public override void InstallBindings()
void Start()
{ {
Container.Bind<LobbyManager>()
} .FromComponentsInNewPrefabResource("Managers/LobbyManager")
.AsSingle()
// Update is called once per frame .OnInstantiated<LobbyManager>((ctx, obj) =>
void Update()
{ {
obj.name = "LobbyManager";
})
.NonLazy();
} }
} }

View File

@@ -0,0 +1,21 @@
using Sirenix.OdinInspector;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Zenject;
public class LobbyManager : MonoBehaviour
{
[Inject]
[SerializeField]
[ReadOnly]
private MusicManager musicManager;
[SerializeField]
private AudioClip backgroundMusicClip;
private void Start()
{
musicManager.Play(backgroundMusicClip);
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b8b4a0794fa1d6c44adcec647be166a6
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,60 @@
using HurricaneVR.Framework.Core.Player;
using Sirenix.OdinInspector;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using Zenject;
public class SceneManager : MonoBehaviour
{
enum Scene
{
Lobby = 0,
Entrance = 1,
Forge = 2
}
[Inject]
[ReadOnly]
[SerializeField]
private HVRPlayerController playerController;
[ReadOnly]
[SerializeField]
private float fadeDuration = 2f;
[ReadOnly]
[SerializeField]
private Scene scene;
[Button]
public void SwitchToEntranceLevel()
{
StartCoroutine(SwitchToScene(Scene.Entrance));
}
private IEnumerator SwitchToScene(Scene scene)
{
playerController.ScreenFader.Fade(1, fadeDuration);
var operation = UnityEngine.SceneManagement.SceneManager
.LoadSceneAsync((int)scene);
operation.allowSceneActivation = false;
float timer = 0;
while (timer <= fadeDuration && !operation.isDone)
{
timer += Time.deltaTime;
yield return null;
}
operation.allowSceneActivation = true;
this.scene = scene;
playerController.ScreenFader.Fade(0, fadeDuration);
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 324a182340742c54cbdb3967f1916e29
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: