diff options
| author | Jordan Woyak <jordan.woyak@gmail.com> | 2022-10-11 15:13:33 -0500 |
|---|---|---|
| committer | Jordan Woyak <jordan.woyak@gmail.com> | 2022-10-11 19:28:21 -0500 |
| commit | f5b9049421047f61cf9c139b7671564b04677de5 (patch) | |
| tree | a59682652d3859bae83d13cb846aebc4987b4693 /Source/Core/InputCommon/ControlReference/FunctionExpression.cpp | |
| parent | a056a1366f458754aee61b67f05f61f34c826353 (diff) | |
Input: Add "abs" input expression function.
Diffstat (limited to 'Source/Core/InputCommon/ControlReference/FunctionExpression.cpp')
| -rw-r--r-- | Source/Core/InputCommon/ControlReference/FunctionExpression.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/Source/Core/InputCommon/ControlReference/FunctionExpression.cpp b/Source/Core/InputCommon/ControlReference/FunctionExpression.cpp index 17ceae3bd0..46cfc37beb 100644 --- a/Source/Core/InputCommon/ControlReference/FunctionExpression.cpp +++ b/Source/Core/InputCommon/ControlReference/FunctionExpression.cpp @@ -69,6 +69,22 @@ private: void SetValue(ControlState value) override { GetArg(0).SetValue(1.0 - value); } }; +// usage: abs(expression) +class AbsExpression final : public FunctionExpression +{ +private: + ArgumentValidation + ValidateArguments(const std::vector<std::unique_ptr<Expression>>& args) override + { + if (args.size() == 1) + return ArgumentsAreValid{}; + else + return ExpectedArguments{"expression"}; + } + + ControlState GetValue() const override { return std::abs(GetArg(0).GetValue()); } +}; + // usage: sin(expression) class SinExpression : public FunctionExpression { @@ -641,6 +657,8 @@ std::unique_ptr<FunctionExpression> MakeFunctionExpression(std::string_view name return std::make_unique<NotExpression>(); if (name == "if") return std::make_unique<IfExpression>(); + if (name == "abs") + return std::make_unique<AbsExpression>(); if (name == "sin") return std::make_unique<SinExpression>(); if (name == "cos") |
