BITFALL/Assets/Artists/Scripts/GameMode/PlayerSpawnService.cs

59 lines
1.7 KiB
C#
Raw Normal View History

2024-03-12 21:54:29 +08:00
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using BITKit;
using BITKit.Entities.Player;
using BITKit.SceneManagement;
2024-04-13 01:10:30 +08:00
using Cinemachine;
2024-03-12 21:54:29 +08:00
using Cysharp.Threading.Tasks;
using UnityEngine;
using YooAsset;
namespace BITFALL.GameMode
{
public class PlayerSpawnService : MonoBehaviour
{
[SerializeReference,SubclassSelector] private ISceneService sceneService;
[SerializeReference, SubclassSelector] private IReference playerPath;
[SerializeReference, SubclassSelector] private IPlayerService playerService;
2024-04-13 01:10:30 +08:00
[SerializeField] private CinemachineVirtualCamera virtualCamera;
2024-03-12 21:54:29 +08:00
private void Start()
{
2024-04-13 01:10:30 +08:00
virtualCamera.enabled = false;
2024-03-12 21:54:29 +08:00
sceneService.OnSceneLoaded += OnSceneLoaded;
destroyCancellationToken.Register(() =>
{
sceneService.OnSceneLoaded -= OnSceneLoaded;
});
}
2024-04-13 01:10:30 +08:00
private void OnSceneLoad(string obj)
{
throw new NotImplementedException();
}
2024-03-12 21:54:29 +08:00
private async void OnSceneLoaded(string obj)
{
2024-04-13 01:10:30 +08:00
await UniTask.Delay(500);
var spawnPoint = NodeQuery.Query<InfoPlayerStart>().OrderBy(x => x.Property).First();
virtualCamera.transform.SetPositionAndRotation(spawnPoint.Position,spawnPoint.Rotation);
virtualCamera.enabled = true;
Camera.main.transform.position = spawnPoint.Position;
await UniTask.Delay(1000);
2024-03-12 21:54:29 +08:00
if (destroyCancellationToken.IsCancellationRequested) return;
if (playerService.LocalPlayer) return;
var player = YooAssets.LoadAssetAsync<GameObject>(playerPath.Value);
await player;
if (destroyCancellationToken.IsCancellationRequested) return;
var instance = Instantiate(player.AssetObject.As<GameObject>(),spawnPoint.Position, spawnPoint.Rotation);
2024-04-13 01:10:30 +08:00
virtualCamera.enabled = false;
2024-03-12 21:54:29 +08:00
}
}
}