120 lines
3.8 KiB
C#
120 lines
3.8 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
|
|
namespace NWH.Common.Vehicles
|
|
{
|
|
public abstract class WheelUAPI : MonoBehaviour
|
|
{
|
|
// INPUTS
|
|
public abstract float MotorTorque { get; set; }
|
|
public abstract float BrakeTorque { get; set; }
|
|
public abstract float CounterTorque { get; }
|
|
public abstract float RollingResistanceTorque { get; set; }
|
|
public abstract float SteerAngle { get; set; }
|
|
|
|
|
|
// PHYSICAL PROPERTIES
|
|
public abstract float Mass { get; set; }
|
|
public abstract float Radius { get; set; }
|
|
public abstract float Width { get; set; }
|
|
public abstract float Inertia { get; set; }
|
|
public abstract float RPM { get; }
|
|
public abstract float AngularVelocity { get; }
|
|
public abstract Vector3 WheelPosition { get; }
|
|
public abstract float Load { get; }
|
|
public abstract float MaxLoad { get; set; }
|
|
public abstract bool IsGrounded { get; }
|
|
public abstract float Damage { get; set; }
|
|
public abstract float Camber { get; set; }
|
|
|
|
|
|
// SPRING
|
|
public abstract float SpringMaxLength { get; set; }
|
|
public abstract float SpringMaxForce { get; set; }
|
|
public abstract float SpringForce { get; }
|
|
public abstract float SpringLength { get; }
|
|
public abstract float SpringCompression { get; }
|
|
|
|
|
|
// DAMPER
|
|
public abstract float DamperBumpRate { get; set; }
|
|
public abstract float DamperReboundRate { get; set; }
|
|
public abstract float DamperForce { get; }
|
|
|
|
|
|
// FRICTION
|
|
public abstract FrictionPreset FrictionPreset { get; set; }
|
|
public abstract float LongitudinalFrictionGrip { get; set; }
|
|
public abstract float LongitudinalFrictionStiffness { get; set; }
|
|
public abstract float LateralFrictionGrip { get; set; }
|
|
public abstract float LateralFrictionStiffness { get; set; }
|
|
public abstract float ForceApplicationPointDistance { get; set; }
|
|
|
|
|
|
// LONGITUDINAL FRICTION
|
|
public abstract float LongitudinalSlip { get; }
|
|
public abstract float LongitudinalSpeed { get; }
|
|
public virtual bool IsSkiddingLongitudinally
|
|
{
|
|
get { return NormalizedLongitudinalSlip > 0.35f; }
|
|
}
|
|
|
|
public virtual float NormalizedLongitudinalSlip
|
|
{
|
|
get
|
|
{
|
|
float lngSlip = LongitudinalSlip;
|
|
float absLngSlip = lngSlip < 0f ? -lngSlip : lngSlip;
|
|
return absLngSlip < 0f ? 0f : absLngSlip > 1f ? 1f : absLngSlip;
|
|
}
|
|
}
|
|
|
|
|
|
// LATERAL FRICTION
|
|
public abstract float LateralSlip { get; }
|
|
public abstract float LateralSpeed { get; }
|
|
public virtual bool IsSkiddingLaterally
|
|
{
|
|
get { return NormalizedLateralSlip > 0.35f; }
|
|
}
|
|
|
|
public virtual float NormalizedLateralSlip
|
|
{
|
|
get
|
|
{
|
|
float latSlip = LateralSlip;
|
|
float absLatSlip = latSlip < 0f ? -latSlip : latSlip;
|
|
return absLatSlip < 0f ? 0f : absLatSlip > 1f ? 1f : absLatSlip;
|
|
}
|
|
}
|
|
|
|
|
|
// FRICTION CIRCLE
|
|
public abstract float FrictionCircleShape { get; set; }
|
|
public abstract float FrictionCircleStrength { get; set; }
|
|
|
|
|
|
// COLLISION
|
|
public abstract Vector3 HitPoint { get; }
|
|
public abstract Vector3 HitNormal { get; }
|
|
public abstract Collider HitCollider { get; }
|
|
|
|
|
|
// VISUAL
|
|
public abstract GameObject WheelVisual { get; set; }
|
|
|
|
public abstract GameObject NonRotatingVisual { get; set; }
|
|
|
|
|
|
// GENERAL
|
|
public abstract Rigidbody ParentRigidbody { get; }
|
|
|
|
public abstract bool AutoSimulate { get; set; }
|
|
|
|
public abstract void Step();
|
|
|
|
public abstract void Validate();
|
|
}
|
|
}
|
|
|