39 lines
1.3 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|