using UnityEngine;
|
using System.Collections.Generic;
|
|
public class XRayShadow
|
{
|
private static Stack<XRayShadow> m_ShadowPool = new Stack<XRayShadow>();
|
|
public static XRayShadowController Request(Renderer requester, float lastTime = 1)
|
{
|
if (requester == null)
|
{
|
return null;
|
}
|
|
SkinnedMeshRenderer _smr = requester.GetComponent<SkinnedMeshRenderer>();
|
|
if (_smr == null)
|
{
|
return null;
|
}
|
|
Mesh _mesh = new Mesh();
|
_smr.BakeMesh(_mesh);
|
|
GameObject _xayShadow = new GameObject();
|
MeshFilter _filter = _xayShadow.AddComponent<MeshFilter>();
|
_filter.mesh = _mesh;
|
|
MeshRenderer _renderer = _xayShadow.AddComponent<MeshRenderer>();
|
_renderer.material = BuiltInLoader.LoadMaterial("XRay");
|
|
_xayShadow.transform.localScale = requester.transform.localScale*1.2f;
|
_xayShadow.transform.position = requester.transform.position;
|
_xayShadow.transform.rotation = requester.transform.rotation;
|
_xayShadow.layer = LayerUtility.BattleEffectLow;
|
|
XRayShadowController _controller = _xayShadow.AddComponent<XRayShadowController>();
|
_controller.duration = lastTime;
|
_controller.deleteTime = Time.time + _controller.duration;
|
_controller.meshRenderer = _renderer;
|
_controller.SetColor(UIHelper.GetUIColor(2, false));
|
return _controller;
|
}
|
|
public static void Request(Renderer requester, Color color, float intensity, float lastTime = 1)
|
{
|
XRayShadowController _controller = Request(requester, lastTime);
|
|
if (_controller)
|
{
|
_controller.SetColor(color);
|
_controller.SetIntensity(intensity);
|
}
|
}
|
}
|