Fix the logic of area judge functions.
This commit is contained in:
@@ -813,11 +813,11 @@ namespace Cryville.Crtr {
|
||||
}
|
||||
protected override float ExecuteImpl(float fn, float tn, float ft, float tt, Vector4? fv, Vector4? tv) {
|
||||
if (fv == null || tv == null) return 0;
|
||||
if ((EvaluateArea(fv) > 0) == _enter) return 0;
|
||||
var t0 = GetOperand(0).AsNumber() + fn;
|
||||
var t1 = GetOperand(1).AsNumber() + tn;
|
||||
Vector4 fiv, tiv;
|
||||
if (!GetInternalVectors(t0, t1, ft, tt, fv.Value, tv.Value, out fiv, out tiv)) return 0;
|
||||
if ((EvaluateArea(fiv) > 0) == _enter) return 0;
|
||||
return IntersectsWithAreaBounds(fiv, tiv, _enter) ? 1 : 0;
|
||||
}
|
||||
}
|
||||
@@ -830,7 +830,7 @@ namespace Cryville.Crtr {
|
||||
if (fv == null || tv == null) return 0;
|
||||
var t0 = GetOperand(0).AsNumber() + fn;
|
||||
var t1 = GetOperand(1).AsNumber() + tn;
|
||||
if ((EvaluateArea(fv) > 0 && ft > t0 && tt < t1) == _enter) return 0;
|
||||
if ((EvaluateArea(fv) > 0 && ft > t0 && ft < t1) == _enter) return 0;
|
||||
Vector4 fiv, tiv;
|
||||
if (!GetInternalVectors(t0, t1, ft, tt, fv.Value, tv.Value, out fiv, out tiv)) return 0;
|
||||
return IntersectsWithAreaBounds(fiv, tiv, _enter) ? 1 : 0;
|
||||
|
Reference in New Issue
Block a user