private void RegisterInteractable(InteractableObjectiveEntry entry) { if (entry.RequiresSpawn) { if (!PooledObjectManager.Instance.RegisterPooledObject(entry.InteractablePrefabId, 1)) { Debug.LogError($"[{nameof(InteractWithTargetObjectiveState)}]: Could not register interactable with prefab ID {entry.InteractablePrefabId}!"); return; } if (!PooledObjectManager.Instance.UsePooledObject(entry.InteractablePrefabId, out PooledObject obj)) { Debug.LogError($"[{nameof(InteractWithTargetObjectiveState)}]: Failed to retrieve interactable with prefab ID {entry.InteractablePrefabId}!"); return; } PooledInteractableInitData initData = new PooledInteractableInitData(entry.Location, entry.InteractableId); obj.Initialize(initData); obj.Spawn(); } if (!LevelDataManager.Instance.TryGetInteractable(entry.InteractableId, out IInteractable interactable)) { Debug.LogError($"[{nameof(InteractWithTargetObjectiveState)}]: Could not find registered interactable with ID {entry.InteractablePrefabId}!"); return; } interactable.OnCompleteInteraction += OnCompleteInteraction; _interactables.Add(interactable); }
public void Initialize(PooledObjectInitializationData initializationData) { PooledInteractableInitData initData = initializationData as PooledInteractableInitData; if (initData == null) { return; } _interactableId = initData.OverrideId; }