Files
RobustToolbox/Robust.Shared/Toolshed/Commands/Math/TrigonometryCommands.cs
T
909fd326a0 Toolshed part 2 (#4256)
* Save work.

* three billion tweaks

* Rune-aware parser.

* a

* all shedded out for the night

* a

* oogh

* Publicizes a lot of common generic commands, so custom toolshed envs can include them.

* Implement parsing for all number types.

* i think i might implode

* a

* Tests.

* a

* Enum parser test.

* do u like parsers

* oopls

* ug fixes

* Toolshed is approaching a non-insignificant part of the engine's size.

* Pool toolshed's tests, also type tests.

* bwa

* tests pass :yay:

* Update Robust.Shared/CVars.cs

Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>

* how did this not fail tests

* awa

* many levels of silly

---------

Co-authored-by: moonheart08 <moonheart08@users.noreply.github.com>
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
2023-08-23 16:03:34 -05:00

202 lines
5.6 KiB
C#

using System.Collections.Generic;
using System.Linq;
using System.Numerics;
namespace Robust.Shared.Toolshed.Commands.Math;
#region Sine
[ToolshedCommand]
public sealed class SinCommand : ToolshedCommand
{
[CommandImplementation, TakesPipedTypeAsGeneric]
public T Operation<T>([PipedArgument] T x)
where T : ITrigonometricFunctions<T>
{
return T.Sin(x);
}
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
where T : ITrigonometricFunctions<T>
=> x.Select(Operation);
}
[ToolshedCommand]
public sealed class SinPiCommand : ToolshedCommand
{
[CommandImplementation, TakesPipedTypeAsGeneric]
public T Operation<T>([PipedArgument] T x)
where T : ITrigonometricFunctions<T>
{
return T.SinPi(x);
}
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
where T : ITrigonometricFunctions<T>
=> x.Select(Operation);
}
[ToolshedCommand]
public sealed class ASinCommand : ToolshedCommand
{
[CommandImplementation, TakesPipedTypeAsGeneric]
public T Operation<T>([PipedArgument] T x)
where T : ITrigonometricFunctions<T>
{
return T.Asin(x);
}
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
where T : ITrigonometricFunctions<T>
=> x.Select(Operation);
}
[ToolshedCommand]
public sealed class ASinPiCommand : ToolshedCommand
{
[CommandImplementation, TakesPipedTypeAsGeneric]
public T Operation<T>([PipedArgument] T x)
where T : ITrigonometricFunctions<T>
{
return T.AsinPi(x);
}
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
where T : ITrigonometricFunctions<T>
=> x.Select(Operation);
}
#endregion
#region Cosine
[ToolshedCommand]
public sealed class CosCommand : ToolshedCommand
{
[CommandImplementation, TakesPipedTypeAsGeneric]
public T Operation<T>([PipedArgument] T x)
where T : ITrigonometricFunctions<T>
{
return T.Cos(x);
}
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
where T : ITrigonometricFunctions<T>
=> x.Select(Operation);
}
[ToolshedCommand]
public sealed class CosPiCommand : ToolshedCommand
{
[CommandImplementation, TakesPipedTypeAsGeneric]
public T Operation<T>([PipedArgument] T x)
where T : ITrigonometricFunctions<T>
{
return T.CosPi(x);
}
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
where T : ITrigonometricFunctions<T>
=> x.Select(Operation);
}
[ToolshedCommand]
public sealed class ACosCommand : ToolshedCommand
{
[CommandImplementation, TakesPipedTypeAsGeneric]
public T Operation<T>([PipedArgument] T x)
where T : ITrigonometricFunctions<T>
{
return T.Acos(x);
}
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
where T : ITrigonometricFunctions<T>
=> x.Select(Operation);
}
[ToolshedCommand]
public sealed class ACosPiCommand : ToolshedCommand
{
[CommandImplementation, TakesPipedTypeAsGeneric]
public T Operation<T>([PipedArgument] T x)
where T : ITrigonometricFunctions<T>
{
return T.AcosPi(x);
}
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
where T : ITrigonometricFunctions<T>
=> x.Select(Operation);
}
#endregion
#region Tangent
[ToolshedCommand]
public sealed class TanCommand : ToolshedCommand
{
[CommandImplementation, TakesPipedTypeAsGeneric]
public T Operation<T>([PipedArgument] T x)
where T : ITrigonometricFunctions<T>
{
return T.Tan(x);
}
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
where T : ITrigonometricFunctions<T>
=> x.Select(Operation);
}
[ToolshedCommand]
public sealed class TanPiCommand : ToolshedCommand
{
[CommandImplementation, TakesPipedTypeAsGeneric]
public T Operation<T>([PipedArgument] T x)
where T : ITrigonometricFunctions<T>
{
return T.TanPi(x);
}
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
where T : ITrigonometricFunctions<T>
=> x.Select(Operation);
}
[ToolshedCommand]
public sealed class ATanCommand : ToolshedCommand
{
[CommandImplementation, TakesPipedTypeAsGeneric]
public T Operation<T>([PipedArgument] T x)
where T : ITrigonometricFunctions<T>
{
return T.Atan(x);
}
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
where T : ITrigonometricFunctions<T>
=> x.Select(Operation);
}
[ToolshedCommand]
public sealed class ATanPiCommand : ToolshedCommand
{
[CommandImplementation, TakesPipedTypeAsGeneric]
public T Operation<T>([PipedArgument] T x)
where T : ITrigonometricFunctions<T>
{
return T.AtanPi(x);
}
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
where T : ITrigonometricFunctions<T>
=> x.Select(Operation);
}
#endregion