private static void Store(RendererHolder renderer) { renderer.Filter.sharedMesh = null; renderer.Tr.SetParent(null); renderer.Tr.gameObject.SetActive(false); _renderers.Enqueue(renderer); }
private void OnDestroy() { if (_holder != null) { Store(_holder); _holder = null; } }
public void OnPoolDespawned() { Store(_holder); if (_trailMesh != null) { _trailMesh.Clear(); _trailMesh = null; } _holder = null; }
private void Setup() { if (_holder == null) { _holder = GetRenderer(this); } SetLastPosition(); _trailMesh = new Mesh(); _trailMesh.name = name + "TrailMesh"; _holder.Filter.sharedMesh = _trailMesh; _minVertexDistanceSqr = _minVertexDistance * _minVertexDistance; _maxVertexDistanceSqr = _maxVertexDistance * _maxVertexDistance; }
private static RendererHolder GetRenderer(MeleeWeaponTrail trail) { RendererHolder renderer; if (_renderers.Count > 0) { renderer = _renderers.Dequeue(); } else { renderer = new RendererHolder(); } if (renderer.Tr == null) { renderer = new RendererHolder(); } renderer.Tr.gameObject.SetActive(true); renderer.Tr.SetParentResetPos(trail.transform.root); renderer.Tr.gameObject.layer = trail.gameObject.layer; renderer.Renderer.material = trail._material; return(renderer); }