code: def _update_state(self):
      timestep = 0
      self.screen = self.last_result[
          timestep
      ].observation.feature_screen
      # extract only the requested segmentation maps from the observation
      self.screen = np.take(
          self.screen, self.feature_screen_maps_to_use, axis=0
      )
      self.minimap = self.last_result[
          timestep
      ].observation.feature_minimap
      self.measurements = self.last_result[timestep].observation.player
      self.reward = self.last_result[timestep].reward
      self.done = (
          self.last_result[timestep].step_type
          == environment.StepType.LAST
      )
      self.state = {
          "screen": self.screen,
          "minimap": self.minimap,
          "measurements": self.measurements,
      }
  
imports: from enum import Enum
  from typing import Union, List
  import numpy
  from rl_coach.filters.observation.observation_move_axis_filter import ObservationMoveAxisFilter
  from rl_coach.environments.environment import Environment, EnvironmentParameters, LevelSelection
  from rl_coach.base_parameters import VisualizationParameters
  from rl_coach.spaces import BoxActionSpace, VectorObservationSpace, PlanarMapsObservationSpace, StateSpace, CompoundActionSpace, DiscreteActionSpace
  from rl_coach.filters.filter import InputFilter, OutputFilter
  from rl_coach.filters.observation.observation_rescale_to_size_filter import ObservationRescaleToSizeFilter
  from rl_coach.filters.action.linear_box_to_box_map import LinearBoxToBoxMap
  from rl_coach.filters.observation.observation_to_uint8_filter import ObservationToUInt8Filter
label_desc: Use image node_id 2 for calling the StarCraft2Environment obj's underlying member method code with example usage: obj._update_state() without return types