From cfcc3712268db35517d1994510800f0b4c7bc9c1 Mon Sep 17 00:00:00 2001 From: PopSlime Date: Sun, 6 Nov 2022 13:48:23 +0800 Subject: [PATCH] Add in_area function. --- Assets/Cryville/Crtr/PdtEvaluator.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Assets/Cryville/Crtr/PdtEvaluator.cs b/Assets/Cryville/Crtr/PdtEvaluator.cs index 91737ed..5516830 100644 --- a/Assets/Cryville/Crtr/PdtEvaluator.cs +++ b/Assets/Cryville/Crtr/PdtEvaluator.cs @@ -115,6 +115,7 @@ namespace Cryville.Crtr { _ctxops.Add(IdentifierManager.SharedInstance.Request("min"), new func_min(() => ContextSelfValue)); _ctxops.Add(IdentifierManager.SharedInstance.Request("max"), new func_max(() => ContextSelfValue)); _ctxops.Add(IdentifierManager.SharedInstance.Request("abs"), new func_abs(() => ContextSelfValue)); + _ctxops.Add(IdentifierManager.SharedInstance.Request("in_area"), new func_in_area()); } static PdtEvaluator() { _shortops.Add(new PdtOperatorSignature("@", 2), new op_at_2()); @@ -383,6 +384,18 @@ namespace Cryville.Crtr { ret.SetNumber(Mathf.Abs(arg)); } } + class func_in_area : PdtOperator { + public func_in_area() : base(1) { } + protected override unsafe void Execute() { + var arg = GetOperand(0); + if (arg.Type == PdtInternalType.Number && arg.AsNumber() >= 0) { + GetReturnFrame(PdtInternalType.Null, 0); + return; + } + var ret = GetReturnFrame(arg.Type, arg.Length); + arg.CopyTo(ret); + } + } unsafe static class oputil { public static float AsNumber(PropSrc src) { if (src == null)