summaryrefslogtreecommitdiff
path: root/Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts/WiresConnector.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts/WiresConnector.cs')
-rw-r--r--Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts/WiresConnector.cs114
1 files changed, 0 insertions, 114 deletions
diff --git a/Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts/WiresConnector.cs b/Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts/WiresConnector.cs
deleted file mode 100644
index 0bd1c9f0..00000000
--- a/Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts/WiresConnector.cs
+++ /dev/null
@@ -1,114 +0,0 @@
-using UnityEngine;
-
-namespace Assets.AbstractWiresEffect.Scripts
-{
- internal sealed class WiresConnector : MonoBehaviour
- {
- public GameObject WiresParticles;
- public GameObject LineRendererPrefab;
- public bool UseSkinnedMeshRenderer;
- public SkinnedMeshRenderer TargetSkinnedMeshRenderer;
- public float MaxDistance;
- public int MaxConnections;
- public int MaxLineRenderers;
-
- private ParticleSystem _particleSystem;
- private ParticleSystem.MainModule _particleSystemMainModule;
- private ParticleSystem.Particle[] _particles;
- private LineRenderer[] _lineRenderers;
- private Transform _psTransform;
-
- private void Start()
- {
- _lineRenderers = new LineRenderer[MaxLineRenderers];
-
- var go = Instantiate(WiresParticles, transform.position, WiresParticles.transform.rotation);
- go.transform.parent = transform;
-
- _particleSystem = go.GetComponent<ParticleSystem>();
- var sh = _particleSystem.shape;
-
- if (UseSkinnedMeshRenderer)
- sh.skinnedMeshRenderer = TargetSkinnedMeshRenderer;
-
- _particleSystemMainModule = _particleSystem.main;
- _psTransform = _particleSystem.GetComponent<Transform>();
-
- int maxParticles = _particleSystemMainModule.maxParticles;
- _particles = new ParticleSystem.Particle[maxParticles];
- }
-
- private void LateUpdate()
- {
- var liveParticles = _particleSystem.GetParticles(_particles);
- var lineRenderersCount = _lineRenderers.Length;
-
- var lrIndex = 0;
- for (int i = 0; i < liveParticles; i++)
- {
- var p1Pos = _particles[i].position;
-
- var particleConnections = 0;
-
- for (int j = i + 1; j < liveParticles; j++)
- {
- if (particleConnections == MaxConnections || lrIndex == MaxLineRenderers)
- break;
-
- var p2Pos = _particles[j].position;
-
- float distance = Vector3.Distance(p2Pos, p1Pos);
- if (distance > MaxDistance)
- continue;
-
- LineRenderer lineRenderer;
-
- if (_lineRenderers[lrIndex] == null)
- {
- var go = Instantiate(LineRendererPrefab, _psTransform.position, _psTransform.rotation);
- lineRenderer = go.GetComponent<LineRenderer>();
- lineRenderer.transform.parent = _psTransform.transform;
- _lineRenderers[lrIndex] = lineRenderer;
- }
-
- lineRenderer = _lineRenderers[lrIndex];
-
- lineRenderer.enabled = true;
- lineRenderer.SetPosition(0, p1Pos);
- lineRenderer.SetPosition(1, p2Pos);
-
- lrIndex++;
- particleConnections++;
- }
- }
-
- var outdatedLineRenderers = lineRenderersCount - lrIndex;
-
- for (int i = lrIndex; i < outdatedLineRenderers; i++)
- {
- if (_lineRenderers[i] != null)
- _lineRenderers[i].enabled = false;
- }
- }
-
- private void Stop()
- {
- DestroyAllLines();
- }
-
- private void OnDestroy()
- {
- DestroyAllLines();
- }
-
- private void DestroyAllLines()
- {
- if (_lineRenderers == null)
- return;
-
- foreach (var lineRenderer in _lineRenderers)
- if (lineRenderer != null)
- Destroy(lineRenderer);
- }
- }
-} \ No newline at end of file