public void Execute() { if (!PooledObjectManager.Instance.UsePooledObject(_playerConfig.UnitData.UnitPrefabId, out PooledObject pooledObject)) { Debug.LogError($"[{nameof(SpawnPlayerAction)}]: Could not retrieve player prefab with id {_playerConfig.UnitData.UnitPrefabId}!"); OnComplete?.Invoke(); return; } PlayerUnit player = pooledObject as PlayerUnit; if (player == null) { Debug.LogError($"[{nameof(SpawnPlayerAction)}]: Pooled Object retrieved with id {_playerConfig.UnitData.UnitPrefabId} was not of type {nameof(PlayerUnit)}!"); OnComplete?.Invoke(); return; } PlayerInitializationData initData = new PlayerInitializationData() { OverrideUniqueId = _playerConfig.UnitData.UnitPrefabId, UnitData = _playerConfig.UnitData }; player.Initialize(initData); player.Spawn(); OnComplete?.Invoke(); }
public override void Initialize(PooledObjectInitializationData initializationData) { base.Initialize(initializationData); PlayerInitializationData initData = initializationData as PlayerInitializationData; if (initData == null) { Debug.LogError($"[{nameof(PlayerUnit)}]: Did not receive player initialization data!"); return; } Instance = this; _playerOutfitController.Initialize(); UnitsManager.Instance.RegisterUnit(this); _playerOutfitController.OnOutfitChangeComplete += OnOutfitChanged; OnOutfitChanged(); Debug.Log($"[{nameof(PlayerUnit)}]: Initialized player character!"); }