From 3d5ea4f056083589c1a202d43fcd09c9351a81a0 Mon Sep 17 00:00:00 2001 From: PopSlime Date: Tue, 15 Nov 2022 20:14:27 +0800 Subject: [PATCH] Fix null vector passing. --- Assets/Cryville/Crtr/InputProxy.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Assets/Cryville/Crtr/InputProxy.cs b/Assets/Cryville/Crtr/InputProxy.cs index 4426cea..f2d5644 100644 --- a/Assets/Cryville/Crtr/InputProxy.cs +++ b/Assets/Cryville/Crtr/InputProxy.cs @@ -182,14 +182,15 @@ namespace Cryville.Crtr { if (!_vect.TryGetValue(id, out ft)) ft = tt; if (vec.IsNull) { _etor.ContextCascadeUpdate(_var_value, new PropSrc.Arbitrary(PdtInternalType.Null, _nullvalue)); + OnInput(id, proxy.Target, ft, tt, true); } else { fixed (byte* ptr = _vecbuf) { *(Vector3*)ptr = vec.Vector; } _etor.ContextCascadeUpdate(_var_value, new PropSrc.Arbitrary(PdtInternalType.Vector, _vecbuf)); + OnInput(id, proxy.Target, ft, tt, false); } - OnInput(id, proxy.Target, ft, tt); _vect[id] = tt; _etor.ContextCascadeDiscard(); } @@ -197,14 +198,14 @@ namespace Cryville.Crtr { } static readonly int _var_fv = IdentifierManager.SharedInstance.Request("fv"); static readonly int _var_tv = IdentifierManager.SharedInstance.Request("tv"); - unsafe void OnInput(InputIdentifier id, Identifier target, float ft, float tt) { + unsafe void OnInput(InputIdentifier id, Identifier target, float ft, float tt, bool nullflag) { var def = _ruleset.inputs[target]; if (def.pass != null) { foreach (var p in def.pass) { _etor.ContextCascadeInsert(); _arbop.Name = _var_value; - _etor.Evaluate(_arbop, p.Value); - OnInput(id, p.Key, ft, tt); + if (!nullflag) _etor.Evaluate(_arbop, p.Value); + OnInput(id, p.Key, ft, tt, nullflag); _etor.ContextCascadeDiscard(); } }