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);
 }
Example #2
0
    public void Initialize(PooledObjectInitializationData initializationData)
    {
        PooledInteractableInitData initData = initializationData as PooledInteractableInitData;

        if (initData == null)
        {
            return;
        }
        _interactableId = initData.OverrideId;
    }