From d322161d06db7740b1c4a9ea6f54387571180422 Mon Sep 17 00:00:00 2001 From: bd_ Date: Sun, 28 Jul 2024 16:38:17 -0700 Subject: [PATCH] feat: allow multiple filters to be bound to the same pass (#293) Closes: #289 --- CHANGELOG.md | 1 + Editor/API/Fluent/Sequence/Sequence.cs | 9 +++------ Editor/API/Model/SolverPass.cs | 3 ++- Editor/API/Solver/PluginResolver.cs | 4 ++-- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aef0cafa..8e1845bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - [#287] Added PublishedValue class - [#288] Added support for passing ObjectRegistry to IRenderFilter +- [#289] Added support for binding multiple render filters to a single pass ### Fixed - [#283] Cached proxy objects are visible after exiting play mode diff --git a/Editor/API/Fluent/Sequence/Sequence.cs b/Editor/API/Fluent/Sequence/Sequence.cs index 1eebdfb4..71dae862 100644 --- a/Editor/API/Fluent/Sequence/Sequence.cs +++ b/Editor/API/Fluent/Sequence/Sequence.cs @@ -1,6 +1,5 @@ #region -using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using nadena.dev.ndmf.model; @@ -52,15 +51,13 @@ internal DeclaringPass(SolverPass pass, SolverContext solverContext, BuildPhase _seq = seq; } - public DeclaringPass PreviewingWith(IRenderFilter filter) + public DeclaringPass PreviewingWith(params IRenderFilter[] filters) { - if (_pass.RenderFilter != null) + foreach (var filter in filters) { - throw new InvalidOperationException("Render filter already set"); + _pass.RenderFilters.Add(filter); } - _pass.RenderFilter = filter; - return this; } diff --git a/Editor/API/Model/SolverPass.cs b/Editor/API/Model/SolverPass.cs index e8a2de2d..1aab2f4b 100644 --- a/Editor/API/Model/SolverPass.cs +++ b/Editor/API/Model/SolverPass.cs @@ -1,6 +1,7 @@ #region using System; +using System.Collections.Generic; using System.Collections.Immutable; using nadena.dev.ndmf.preview; @@ -23,7 +24,7 @@ internal class SolverPass internal IImmutableSet RequiredExtensions { get; set; } internal IImmutableSet CompatibleExtensions { get; set; } - internal IRenderFilter RenderFilter { get; set; } + internal List RenderFilters { get; } = new(); internal bool IsExtensionCompatible(Type ty) { diff --git a/Editor/API/Solver/PluginResolver.cs b/Editor/API/Solver/PluginResolver.cs index 5f5eeb12..d7c907a4 100644 --- a/Editor/API/Solver/PluginResolver.cs +++ b/Editor/API/Solver/PluginResolver.cs @@ -199,9 +199,9 @@ ImmutableList ToConcretePasses(BuildPhase phase, IEnumerable