using UnityEngine;
using System.Collections;
[ExecuteInEditMode]
public class RenderQueueModifier : MonoBehaviour
{
#region VARIABLE
public enum renderType
{
front,
back
}
public GameObject target;
public renderType type = renderType.front;
Renderer[] _renderers;
int _lastQueue;
#endregion
#region FUNCTION
#endregion
#region MONOBEHAVIOUR
void Start()
{
_renderers = GetComponentsInChildren<Renderer>();
}
void Update()
{
if (target == null)
{
return;
}
UIWidget widget = target.GetComponent<UIWidget>();
int queue = 0;
if (widget == null)
{
if (widget.drawCall == null)
{
return;
}
queue = widget.drawCall.renderQueue;
}
else
{
Material m = target.GetComponentInChildren<Renderer>().sharedMaterial;
if (m == null)
{
return;
}
queue = m.renderQueue;
}
queue += type == renderType.front ? 1 : -1;
if (_lastQueue != queue)
{
_lastQueue = queue;
foreach (Renderer r in _renderers)
{
r.material.renderQueue = _lastQueue;
}
}
}
#endregion
}