Extension methods that convert between world units (inches) and metres. Adds float and Vector3 conversion helpers and convenience getters/setters for GameObject positions in metres.
using Sandbox;
namespace Metrify;
public static class UnitExtensions
{
/// <summary>Inches (world units) to metres.</summary>
public static float ToMeters( this float inches ) => Units.ToMeters( inches );
/// <summary>Metres to inches (world units).</summary>
public static float ToWorldUnits( this float meters ) => Units.ToInches( meters );
/// <summary>Inches (world units) to metres.</summary>
public static Vector3 ToMeters( this Vector3 inches ) => Units.ToMeters( inches );
/// <summary>Metres to inches (world units).</summary>
public static Vector3 ToWorldUnits( this Vector3 meters ) => Units.ToInches( meters );
/// <summary>This object's world position in metres.</summary>
public static Vector3 WorldPositionMeters( this GameObject go ) => Units.ToMeters( go.WorldPosition );
/// <summary>This object's local position in metres.</summary>
public static Vector3 LocalPositionMeters( this GameObject go ) => Units.ToMeters( go.LocalPosition );
/// <summary>Set this object's world position from metres.</summary>
public static void SetWorldPositionMeters( this GameObject go, Vector3 meters )
=> go.WorldPosition = Units.ToInches( meters );
/// <summary>Set this object's local position from metres.</summary>
public static void SetLocalPositionMeters( this GameObject go, Vector3 meters )
=> go.LocalPosition = Units.ToInches( meters );
}