Add in_area function.

This commit is contained in:
2022-11-06 13:48:23 +08:00
parent c635d89c6a
commit cfcc371226

View File

@@ -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)