From bffd718f2e32fa99fd53ae20b042a35df1616ab9 Mon Sep 17 00:00:00 2001 From: nekobako Date: Tue, 20 Aug 2024 02:58:38 +0900 Subject: [PATCH] fix: add null check --- Editor/ReactiveObjects/MaterialSetterPreview.cs | 8 ++++++++ Editor/ReactiveObjects/ShapeChangerPreview.cs | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/Editor/ReactiveObjects/MaterialSetterPreview.cs b/Editor/ReactiveObjects/MaterialSetterPreview.cs index 8ba4e56d..8ff7b2c8 100644 --- a/Editor/ReactiveObjects/MaterialSetterPreview.cs +++ b/Editor/ReactiveObjects/MaterialSetterPreview.cs @@ -37,6 +37,8 @@ namespace nadena.dev.modular_avatar.core.editor foreach (var setter in setters) { + if (setter == null) continue; + var mami = context.GetComponent(setter.gameObject); bool active = context.ActiveAndEnabled(setter) && (mami == null || menuItemPreview.IsEnabledForPreview(mami)); if (active == context.Observe(setter, s => s.Inverted)) continue; @@ -91,10 +93,14 @@ namespace nadena.dev.modular_avatar.core.editor { var (original, proxy) = proxyPairs.First(); + if (original == null || proxy == null) return null; + var mats = new Material[proxy.sharedMaterials.Length]; foreach (var setter in _setters) { + if (setter == null) continue; + var objects = context.Observe(setter, s => s.Objects.Select(o => (o.Object.Get(s), o.Material, o.MaterialIndex)).ToList(), Enumerable.SequenceEqual); foreach (var (target, mat, index) in objects) @@ -124,6 +130,8 @@ namespace nadena.dev.modular_avatar.core.editor public void OnFrame(Renderer original, Renderer proxy) { + if (original == null || proxy == null) return; + var mats = proxy.sharedMaterials; foreach (var mat in _materials) diff --git a/Editor/ReactiveObjects/ShapeChangerPreview.cs b/Editor/ReactiveObjects/ShapeChangerPreview.cs index bbeb9351..ba862cf4 100644 --- a/Editor/ReactiveObjects/ShapeChangerPreview.cs +++ b/Editor/ReactiveObjects/ShapeChangerPreview.cs @@ -42,6 +42,8 @@ namespace nadena.dev.modular_avatar.core.editor foreach (var changer in changers) { + if (changer == null) continue; + var mami = context.GetComponent(changer.gameObject); bool active = context.ActiveAndEnabled(changer) && (mami == null || menuItemPreview.IsEnabledForPreview(mami)); if (active == context.Observe(changer, c => c.Inverted)) continue; @@ -143,6 +145,8 @@ namespace nadena.dev.modular_avatar.core.editor foreach (var changer in _changers) { + if (changer == null) continue; + var shapes = context.Observe(changer, c => c.Shapes.Select(s => (s.Object.Get(c), s.ShapeName, s.ChangeType, s.Value)).ToList(), Enumerable.SequenceEqual); foreach (var (target, name, type, value) in shapes)