Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions ChaosFramework.Math.SDK.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
<PropertyGroup>
<ProjectStyle>SDK</ProjectStyle>
<ChaosAnalyzers_CleanCode_Analyzer_TF>netstandard2.0</ChaosAnalyzers_CleanCode_Analyzer_TF>
<ChaosUtil_Primitives_Analyzer_TF>netstandard2.0</ChaosUtil_Primitives_Analyzer_TF>
<ChaosGenerators_Analyzer_TF>netstandard2.0</ChaosGenerators_Analyzer_TF>
<ChaosGenerators_Types_Analyzer_TF>netstandard2.0</ChaosGenerators_Types_Analyzer_TF>
</PropertyGroup>

<Import Project="ChaosFramework.Math.props" />
Expand All @@ -16,6 +19,9 @@
</ItemGroup>

<!-- References -->
<Import Project="submodules/ChaosPresets.References/Analyzers.Dll/ChaosUtil.Primitives.targets" />
<Import Project="submodules/ChaosPresets.References/Analyzers.Dll/ChaosGenerators.Types.targets" />
<Import Project="submodules/ChaosPresets.References/Analyzers.Dll/ChaosGenerators.targets" />
<ItemGroup>
<PackageReference Include="OpenTK" Version="3.0.1" />
<PackageReference Include="System.Drawing.Common" Version="8.0.6" />
Expand Down
7 changes: 7 additions & 0 deletions ChaosFramework.Math.VS.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@
<PropertyGroup>
<ProjectStyle>VS</ProjectStyle>
<ChaosAnalyzers_CleanCode_Analyzer_TF>net4.5</ChaosAnalyzers_CleanCode_Analyzer_TF>
<ChaosUtil_Primitives_Analyzer_TF>net4.5</ChaosUtil_Primitives_Analyzer_TF>
<ChaosGenerators_Analyzer_TF>net4.5</ChaosGenerators_Analyzer_TF>
<ChaosGenerators_Types_Analyzer_TF>net4.5</ChaosGenerators_Types_Analyzer_TF>
<ChaosGenerators_Types_Ref_TF>net4.5</ChaosGenerators_Types_Ref_TF>
</PropertyGroup>

<Import Project="submodules/ChaosPresets.Targets/Frameworks/net4.5.2.targets" />
Expand All @@ -17,13 +21,16 @@
<!-- Included Files -->
<ItemGroup>
<Compile Include="source\**\*.cs" />
<Compile Include="generated\**\*.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<None Include="License\**\*.txt" />
<None Include="OpenTK.dll.config" />
<None Include="packages.config" />
</ItemGroup>

<!-- References -->
<Import Project="submodules/ChaosPresets.References/References/ChaosGenerators.Types.targets" />
<Import Project="submodules/ChaosPresets.References/Analyzers.Dll/ChaosGenerators.Types.targets" />
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Drawing" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
// <auto-generated/>

namespace ChaosFramework.Math
{
public static partial class Clamping
{
/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static sbyte Clamp(sbyte min, sbyte max, sbyte value)
=> value < min ? min : value > max ? max : value;

/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static byte Clamp(byte min, byte max, byte value)
=> value < min ? min : value > max ? max : value;

/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static short Clamp(short min, short max, short value)
=> value < min ? min : value > max ? max : value;

/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static ushort Clamp(ushort min, ushort max, ushort value)
=> value < min ? min : value > max ? max : value;

/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static int Clamp(int min, int max, int value)
=> value < min ? min : value > max ? max : value;

/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static uint Clamp(uint min, uint max, uint value)
=> value < min ? min : value > max ? max : value;

/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static long Clamp(long min, long max, long value)
=> value < min ? min : value > max ? max : value;

/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static ulong Clamp(ulong min, ulong max, ulong value)
=> value < min ? min : value > max ? max : value;

/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static float Clamp(float min, float max, float value)
=> value < min ? min : value > max ? max : value;

/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static double Clamp(double min, double max, double value)
=> value < min ? min : value > max ? max : value;

/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static decimal Clamp(decimal min, decimal max, decimal value)
=> value < min ? min : value > max ? max : value;
}
}
64 changes: 9 additions & 55 deletions source/_Math/Clamping/Clamp.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,61 +8,15 @@ public static partial class Clamping
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static byte Clamp(byte min, byte max, byte value) => value < min ? min : value > max ? max : value;

/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static short Clamp(short min, short max, short value) => value < min ? min : value > max ? max : value;

/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static ushort Clamp(ushort min, ushort max, ushort value) => value < min ? min : value > max ? max : value;

/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static int Clamp(int min, int max, int value) => value < min ? min : value > max ? max : value;

/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static uint Clamp(uint min, uint max, uint value) => value < min ? min : value > max ? max : value;

/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static long Clamp(long min, long max, long value) => value < min ? min : value > max ? max : value;

/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static ulong Clamp(ulong min, ulong max, ulong value) => value < min ? min : value > max ? max : value;

/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static float Clamp(float min, float max, float value) => value < min ? min : value > max ? max : value;

/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static double Clamp(double min, double max, double value) => value < min ? min : value > max ? max : value;

/// <summary> Clamps a value between a given minimum and maximum. </summary>
/// <param name="min"> Will be returned if <paramref name="value"/> is less than <paramref name="min"/>. </param>
/// <param name="max"> Will be returned if <paramref name="value"/> is greater than <paramref name="max"/>. </param>
/// <param name="value"> The value to be clamped between <paramref name="min"/> and <paramref name="max"/>. </param>
public static decimal Clamp(decimal min, decimal max, decimal value) => value < min ? min : value > max ? max : value;
[ChaosGenerators.TemplateGenerator(
"=> value < min ? min : value > max ? max : value;",
typeof(sbyte), typeof(byte),
typeof(short), typeof(ushort),
typeof(int), typeof(uint),
typeof(long), typeof(ulong),
typeof(float), typeof(double), typeof(decimal)
)]
public delegate T _Clamp<T>(T min, T max, T value);

/// <summary>
/// Clamps all components of the given <see cref="Vector2f"/> between <paramref name="min"/> and <paramref name="max"/>.
Expand Down