mirror of
https://github.com/Facepunch/sbox-public.git
synced 2026-01-16 02:09:20 -05:00
This commit imports the C# engine code and game files, excluding C++ source code. [Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
145 lines
2.9 KiB
C#
145 lines
2.9 KiB
C#
using System.Globalization;
|
|
|
|
namespace Sandbox.UI
|
|
{
|
|
public abstract partial class BaseStyles
|
|
{
|
|
static float? ParseFloat( string value )
|
|
{
|
|
if ( float.TryParse( value, CultureInfo.InvariantCulture, out var result ) )
|
|
return result;
|
|
|
|
return null;
|
|
}
|
|
|
|
static int? ParseInt( string value )
|
|
{
|
|
if ( int.TryParse( value, CultureInfo.InvariantCulture, out var result ) )
|
|
return result;
|
|
|
|
return null;
|
|
}
|
|
|
|
static float? ParseSeconds( string value )
|
|
{
|
|
if ( value.EndsWith( 's' ) )
|
|
{
|
|
return ParseFloat( value.Substring( 0, value.Length - 1 ) );
|
|
}
|
|
|
|
return default;
|
|
}
|
|
|
|
static float? ParseAspectRatio( string value )
|
|
{
|
|
var vals = value.Split( new[] { ' ', ':', '/' }, StringSplitOptions.RemoveEmptyEntries );
|
|
if ( vals.Length == 1 )
|
|
{
|
|
return ParseFloat( value );
|
|
}
|
|
return ParseFloat( vals[0] ) / ParseFloat( vals[1] );
|
|
}
|
|
|
|
/// <summary>
|
|
/// Whether there is an active CSS animation.
|
|
/// </summary>
|
|
public bool HasAnimation
|
|
{
|
|
get
|
|
{
|
|
if ( _animationname is null ) return false;
|
|
if ( _animationname.Length == 0 ) return false;
|
|
if ( _animationname == "none" ) return false;
|
|
if ( string.IsNullOrWhiteSpace( _animationname ) ) return false;
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
protected void Lerp( ref float? o, in float? a, in float? b, in float? defaultValue, float delta )
|
|
{
|
|
if ( !a.HasValue && !b.HasValue )
|
|
return;
|
|
|
|
float from = a ?? defaultValue.Value;
|
|
float to = b ?? defaultValue.Value;
|
|
|
|
if ( from == to )
|
|
{
|
|
o = from;
|
|
return;
|
|
}
|
|
|
|
o = from.LerpTo( to, delta );
|
|
}
|
|
|
|
protected void Lerp( ref PanelTransform? o, in PanelTransform? a, in PanelTransform? b, in PanelTransform? defaultValue, float delta )
|
|
{
|
|
if ( !a.HasValue && !b.HasValue )
|
|
return;
|
|
|
|
var from = a ?? defaultValue.Value;
|
|
var to = b ?? defaultValue.Value;
|
|
|
|
if ( from == to )
|
|
{
|
|
o = from;
|
|
return;
|
|
}
|
|
|
|
o = PanelTransform.Lerp( from, to, delta );
|
|
}
|
|
|
|
protected void Lerp( ref Color? o, in Color? a, in Color? b, in Color? defaultValue, float delta )
|
|
{
|
|
if ( !a.HasValue && !b.HasValue )
|
|
return;
|
|
|
|
var from = a ?? defaultValue ?? default;
|
|
var to = b ?? defaultValue ?? default;
|
|
|
|
if ( from == to )
|
|
{
|
|
o = from;
|
|
return;
|
|
}
|
|
|
|
o = Color.Lerp( from, to, delta );
|
|
}
|
|
|
|
protected void Lerp( ref Length? o, in Length? a, in Length? b, in Length? defaultValue, float delta )
|
|
{
|
|
if ( !a.HasValue && !b.HasValue )
|
|
return;
|
|
|
|
var from = a ?? defaultValue.Value;
|
|
var to = b ?? defaultValue.Value;
|
|
|
|
if ( from == to )
|
|
{
|
|
o = from;
|
|
return;
|
|
}
|
|
|
|
o = Length.Lerp( from, to, delta );
|
|
}
|
|
|
|
protected void Lerp( ref int? o, in int? a, in int? b, in int? defaultValue, float delta )
|
|
{
|
|
if ( !a.HasValue && !b.HasValue )
|
|
return;
|
|
|
|
var from = a ?? defaultValue.Value;
|
|
var to = b ?? defaultValue.Value;
|
|
|
|
if ( from == to )
|
|
{
|
|
o = from;
|
|
return;
|
|
}
|
|
|
|
o = (int)MathX.Lerp( from, to, delta );
|
|
}
|
|
}
|
|
}
|