class_docstr: Acts as a CoreEnv in the env stack in agent deployment scenario.
  
  Designed to be run on a separate thread, alongside the agent deployment running on the main thread.
  
  Hence, the control flow is: External env (like a Unity env) controlling the agent deployment object,
  which in turn controls this external core env, which controls the execution of rollout loop by suspending it
  until the next state is available from the agent deployment object.
  
  Wrappers of this env and the agents acting on top of it see it as ordinary CoreEnv, but no actual
  logic happens here -- instead, states and associated info are obtained from the agent deployment
  running on the main thread, and executions produced by the agents are passed back to the agent deployment.
  
  During the step function, the execution of this thread is suspended while waiting for the next state
  from the agent deployment.
  
  :param state_queue: Queue this core env uses to get states from agent deployment object
  :param maze_action_queue: Queue this core env uses to pass executions back to agent deployment object
  :param rollout_done_event: Set by the agent deployment object. Used for detection of the end of rollout period.
  :param renderer: If available, what renderer should be associated with the state data (for rendering, plus
                   to be serialized with trajectory data)
docstr: Current actor ID set by the agent deployment.
docstr_tok: ["Current","actor","ID","set","by","the","agent","deployment","."]
code: def actor_id(self) -> ActorID:
      """Current actor ID set by the agent deployment."""
      return self._actor_id
  
imports: from queue import Queue
  from threading import Event
  from typing import Tuple, Any, Dict, Union, Iterable, Optional
  import numpy
  from maze.core.annotations import override
  from maze.core.env.core_env import CoreEnv
  from maze.core.env.environment_context import EnvironmentContext
  from maze.core.env.event_env_mixin import EventEnvMixin
  from maze.core.env.maze_action import MazeActionType
  from maze.core.env.maze_state import MazeStateType
  from maze.core.env.structured_env import StepKeyType, ActorID
  from maze.core.events.event_record import EventRecord
  from maze.core.log_events.kpi_calculator import KpiCalculator
  from maze.core.rendering.renderer import Renderer
label_desc: Use image node_id 5 for calling the ExternalCoreEnv obj's underlying member method code with example usage: obj.actor_id() and returns: self