98 lines
3.0 KiB
C#
98 lines
3.0 KiB
C#
|
|
using UnityEngine;
|
|
|
|
namespace PhxhSDK
|
|
{
|
|
public class RendererWrapper
|
|
{
|
|
private readonly Renderer[] _renderers;
|
|
private Material[][] _originalMaterials;
|
|
private Shader[] _originalShaders;
|
|
|
|
|
|
public RendererWrapper(Renderer[] renderers)
|
|
{
|
|
if (renderers == null)
|
|
{
|
|
DebugUtil.LogError("RendererWrapper: renderer is null");
|
|
}
|
|
_renderers = renderers;
|
|
|
|
if (_renderers.Length > 0)
|
|
{
|
|
_originalMaterials = new Material[_renderers.Length][];
|
|
for (int i = 0; i < _renderers.Length; i++)
|
|
{
|
|
_originalMaterials[i] = _renderers[i].sharedMaterials;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void SetVisible(bool visible)
|
|
{
|
|
if (_renderers != null)
|
|
{
|
|
foreach (var renderer in _renderers)
|
|
{
|
|
if (renderer != null)
|
|
{
|
|
renderer.enabled = visible;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void SetMaterialProperty(string name, Color value)
|
|
{
|
|
if (_renderers != null)
|
|
{
|
|
foreach (var renderer in _renderers)
|
|
{
|
|
if (renderer != null)
|
|
{
|
|
var mpb = TempMaterialPropertyBlock.Instance;
|
|
mpb.SetColor(name, value);
|
|
renderer.SetPropertyBlock(mpb);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void SetMaterial(Material material)
|
|
{
|
|
if (_renderers != null)
|
|
{
|
|
foreach (var renderer in _renderers)
|
|
{
|
|
if (renderer != null)
|
|
{
|
|
if (renderer.materials != null && renderer.sharedMaterials.Length > 0)
|
|
{
|
|
var mats = new Material[renderer.sharedMaterials.Length];
|
|
for (int i = 0; i < mats.Length; i++)
|
|
{
|
|
mats[i] = material;
|
|
}
|
|
renderer.sharedMaterials = mats;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void ResetMaterial()
|
|
{
|
|
if (_originalMaterials != null && _renderers != null && _originalMaterials.Length != _renderers.Length)
|
|
{
|
|
DebugUtil.LogError(
|
|
"{0}.ResetMaterial, _originalMaterials.Length {1} != _renderers.Length {2}", GetType(),
|
|
_originalMaterials.Length, _renderers.Length);
|
|
return;
|
|
}
|
|
for (int i = 0; i < _originalMaterials.Length; i++)
|
|
{
|
|
_renderers[i].sharedMaterials = _originalMaterials[i];
|
|
}
|
|
}
|
|
}
|
|
} |