BITFALL/Assets/WSM Game Studio/Train Controller_v3/Shared/Scripts/ReverseDirectionZone.cs

39 lines
1.3 KiB
C#

using UnityEngine;
using UnityEngine.Serialization;
namespace WSMGameStudio.RailroadSystem
{
public class ReverseDirectionZone : MonoBehaviour
{
[FormerlySerializedAs("reverseDirectionMode")]
[SerializeField] private ReverseDirectionMode _reverseDirectionMode;
public ReverseDirectionMode ReverseDirectionMode
{
get { return _reverseDirectionMode; }
set { _reverseDirectionMode = value; }
}
private void OnTriggerEnter(Collider other)
{
ILocomotive locomotive = other.GetComponent<ILocomotive>();
if (locomotive != null)
{
switch (_reverseDirectionMode)
{
case ReverseDirectionMode.Always:
locomotive.Acceleration *= -1;
break;
case ReverseDirectionMode.OnlyIfMovingForward:
if (locomotive.Acceleration > 0f) locomotive.Acceleration *= -1;
break;
case ReverseDirectionMode.OnlyIfMovingBackwards:
if (locomotive.Acceleration < 0f) locomotive.Acceleration *= -1;
break;
}
}
}
}
}