Player Controllers Presets
La gestión de los inputs e interacciones básicas de los usuarios con la aplicación se realiza desde esta clase, que varía según sea en el interior o en el exterior. Asimismo, hemos centralizado las funcionalidades comunes en la clase IdealTwinBasePlayerController, de la cual derivan las otras dos.
IdealTwinBasePlayerController
Componentes por defecto
Por defecto esta clase y las derivadas van a tener el componente de SwitcherPawnComponent para poder ser usados por las clases de IdealTwinBaseCharacter y el
que le va a permitir asignar los inputs ya integrados.

Interacción con elementos en el nivel
El controlador base del jugador implementa un sistema de interacción con el cursor para manejar los clics del usuario en la pantalla y obtener información de manera sencilla. La clase ya gestiona el trazado de rayos para determinar si hay colisión con algún actor que debe implementar la interfaz IdealTwinInteractionInterface.
En el panel de Details>IdealTwinPlayerController>Interaction podemos encontrar las configuraciones que podemos tocar y hacer

Propiedades | Descripción |
|---|---|
Stored Interacted Actor | El Actor ultimo que este siendo detectado para poder interactuar con el será guardado en esta variable para poder hacer la gestion de este. Si el valor es nullptr quiere decir que no hay interacción posible. |
Use Interaction System | Si es true el player controller va a hacer la assignación interna con |
Interaction Trace Channel | Trace Channel que se va a usar para detectar la colisión y después hacer la comprobación de la interfaz |
Es importante señalar que la verificación del tick para la interacción se lleva a cabo en el IdealTwinInputComponent. Esto implica que el player controller debe tener el tick activado y que cualquier gestión de este debe realizarse a través del componente. No obstante, estas configuraciones están disponibles directamente en la clase, bajo Details > Ideal Twin Inputs> Interaction.

IdealTwin Player Controller Exterior
Esta clase está implementada en Blueprint y, si se desea modificar, se recomienda hacer una copia de la implementación actual de la clase.
Además de las funcionalidades mencionadas anteriormente en el controlador de jugador para mapas exteriores, se ha implementado la capacidad de seleccionar UnitVolumesActor mediante el sistema de interacción y la gestión de selección utilizando el IdealTwinUnitsVolumeManager.

Para hacer la posesión del pawn en el mundo este va a usar el componente de SwitcherPawnComponent y dar prioridad al pawn Orbirtal utilizando el tag IdealTwin.Pawn.Orbital.

IdealTwin PlayerController Interior
Esta clase está implementada en Blueprint y, si se desea modificar, se recomienda hacer una copia de la implementación actual de la clase.
En el caso de los niveles de interior la prioridad para la posesion del pawn sera para el IdealTwin.Pawn.Walk como primera vista. Sin embargo en estos tipos de niveles tambien se suele hacer una configuracion en la que se utiliza una vista orbital.

En caso de que también se desee utilizar los CuttingVolume al cambiar de pawn, se activarán y desactivarán los cortes para permitir una vista clara del espacio.