using System; using System.Collections; using System.Collections.Generic; using System.Linq; using BITKit; using BITKit.Entities.Player; using BITKit.SceneManagement; 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; private void Start() { sceneService.OnSceneLoaded += OnSceneLoaded; destroyCancellationToken.Register(() => { sceneService.OnSceneLoaded -= OnSceneLoaded; }); } private async void OnSceneLoaded(string obj) { await UniTask.Delay(100); if (destroyCancellationToken.IsCancellationRequested) return; if (playerService.LocalPlayer) return; var player = YooAssets.LoadAssetAsync(playerPath.Value); await player; if (destroyCancellationToken.IsCancellationRequested) return; var spawnPoint = NodeQuery.Query().OrderBy(x => x.Property).First(); var instance = Instantiate(player.AssetObject.As(),spawnPoint.Position, spawnPoint.Rotation); } } }