Code/Components/HapticController.cs
using Sandbox;
public sealed class HapticController : Component, Component.ICollisionListener
{
[RequireComponent] public Rigidbody Rigidbody { get; set; }
private Vector3 _lastVelocity;
private Vector3 _velocityDelta;
public void OnCollisionStart( Collision other )
{
if ( _velocityDelta.Length < 20f )
Input.TriggerHaptics( HapticEffect.SoftImpact );
else
Input.TriggerHaptics( HapticEffect.HardImpact );
}
public void OnCollisionStop( CollisionStop other )
{
}
public void OnCollisionUpdate( Collision other )
{
}
protected override void OnFixedUpdate()
{
_velocityDelta = Rigidbody.Velocity - _lastVelocity;
_lastVelocity = Rigidbody.Velocity;
}
}