Skip to content

Commit

Permalink
fix: Scene visibility states is not copy to proxy (#334)
Browse files Browse the repository at this point in the history
* fix: Scene visibility states is not copy to proxy

* chore: update CHANGELOG

---------

Co-authored-by: bd_ <bd_@nadena.dev>
  • Loading branch information
ReinaS-64892 and bdunderscore authored Aug 18, 2024
1 parent 46d640b commit 9acbdd1
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- [#327] Z-fighting occurs in prefab isolation view
- [#328] Fix issue where preview system is not reinitialized after a scene change
- [#329] Fix issue where scene root monitoring breaks after a domain reload
- [#334] Fix objects under preview not respecting scene visibility state

### Changed

Expand Down
27 changes: 26 additions & 1 deletion Editor/PreviewSystem/Rendering/ProxyPipeline.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#region
#region

using System;
using System.Collections.Generic;
Expand Down Expand Up @@ -274,6 +274,31 @@ public void OnFrame()
{
if (!IsReady) return;

var manager = SceneVisibilityManager.instance;
foreach (var pair in _proxies)
{
var originalRenderer = pair.Key;
var proxyRenderer = pair.Value.Renderer;
if (originalRenderer == null || proxyRenderer == null) { continue; }
var originalObject = originalRenderer.gameObject;
var proxyObject = proxyRenderer.gameObject;

var isOriginHidden = manager.IsHidden(originalObject, true);
var needHiddenStateChange = isOriginHidden != manager.IsHidden(proxyObject, true);
if (needHiddenStateChange)
{
if (isOriginHidden) manager.Hide(proxyObject, true);
else manager.Show(proxyObject, true);
}

var isOriginPickingDisabled = manager.IsPickingDisabled(originalObject, true);
var needPickableStateChange = isOriginPickingDisabled != manager.IsPickingDisabled(proxyObject, true);
if (needPickableStateChange)
{
if (isOriginPickingDisabled) manager.DisablePicking(proxyObject, true);
else manager.EnablePicking(proxyObject, true);
}
}
foreach (var pair in _proxies)
{
pair.Value.OnPreFrame();
Expand Down

0 comments on commit 9acbdd1

Please sign in to comment.