Skip to content

Commit

Permalink
feat: adding component that can be used to disable renderers on host …
Browse files Browse the repository at this point in the history
…player

Disables renderers based on if the object is visible to the host player or not
  • Loading branch information
James-Frowen committed Feb 10, 2023
1 parent d82cd76 commit 64c09bf
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 0 deletions.
51 changes: 51 additions & 0 deletions Assets/Mirage/Components/Visibility/HostRendererVisibility.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
using UnityEngine;

namespace Mirage
{
/// <summary>
/// Disables all Renders on GameObject when the NetworkIdentity is not visible too the host player because of a <see cref="NetworkVisibility"/>
/// </summary>
[RequireComponent(typeof(NetworkVisibility))]
public class HostRendererVisibility : NetworkBehaviour
{
private NetworkVisibility _visibility;
private Renderer[] _renderers;

private void Awake()
{
_visibility = GetComponent<NetworkVisibility>();
_visibility.OnVisibilityChanged += OnVisibilityChanged;
_renderers = GetComponentsInChildren<Renderer>();
}

private void OnDestroy()
{
if (_visibility != null)
_visibility.OnVisibilityChanged -= OnVisibilityChanged;
}

/// <summary>
/// Can be used to override default GetComponentsInChildren for renderers. Useful if setting up Renderer after Awake is called
/// </summary>
/// <param name="renderers"></param>
public void SetRenderers(Renderer[] renderers)
{
_renderers = renderers;
}

private void OnVisibilityChanged(INetworkPlayer player, bool visible)
{
if (!IsLocalClient)
return;

if (player == Server.LocalPlayer)
SetHostVisibility(visible);
}

private void SetHostVisibility(bool visible)
{
for (var i = 0; i < _renderers.Length; i++)
_renderers[i].enabled = visible;
}
}
}
11 changes: 11 additions & 0 deletions Assets/Mirage/Components/Visibility/HostRendererVisibility.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 64c09bf

Please sign in to comment.