using AGXUnity;
using AGXUnity.IO.OpenPLX;
using UnityEngine;
using UnityEngine.InputSystem;

/// <summary>
/// This script is a ported version of the controller provided in the t01-boxtruck OpenPLX tutorial, using the InputActionMapper
/// </summary>
public class BoxTruckManeuvering : MonoBehaviour
{
  // Expose scaling factors used when mapping InputActions to OpenPLX signals
  public float Amplitude = 3.0f;
  public InputActionAsset ActionMapAsset;

  private OpenPLXSignals m_signals;
  InputActionMapper m_actionMapper;

  private void Start()
  {
    // Setup signal mapper
    m_signals = GetComponent<OpenPLXSignals>().GetInitialized();
    m_actionMapper = new InputActionMapper( ActionMapAsset, "Boxtruck" );

    // Create maps from InputActions to OpenPLX inputs
    m_actionMapper.CreateMap( m_signals.FindInputTarget( "BoxTruck.Scenes.Scene.boxTruck.front_left_drive_motor.target_angular_velocity_input" ), "drive", Amplitude );
    m_actionMapper.CreateMap( m_signals.FindInputTarget( "BoxTruck.Scenes.Scene.boxTruck.front_right_drive_motor.target_angular_velocity_input" ), "drive", -Amplitude );
  }
}
