/// <summary> /// Animates the particle reaction hologram. /// </summary> /// <param name="particles">The combination of particles.</param> public void CreateSplines(List <Particle> particles) { _particleSplineArray = new HologramSpline[particles.Count]; for (int i = 0; i < particles.Count; i++) { HologramSpline particleSpline = CreateSpline(particles[i]); particleSpline.spline.gameObject.name = particleSpline.particle.particleName + i; _particleSplineArray[i] = particleSpline; } }
private void DisplaySpline(HologramSpline hologramSpline) { Particle particle = hologramSpline.particle; BezierSpline spline = hologramSpline.spline; Vector3 vDir = hologramSpline.vDir; //Displaying the lines. if (particle.line) { var line = Instantiate(_lineRendererPrefab, Vector3.zero, Quaternion.identity, spline.transform); line.transform.localPosition = Vector3.zero; line.transform.localRotation = Quaternion.identity; Vector3[] points = new Vector3[_numberOfPoints + 1]; for (int i = 0; i <= _numberOfPoints; i++) { points[i] = spline.transform.InverseTransformPoint(spline.GetPoint(i / (float)_numberOfPoints)); } line.SetPositions(points); line.colorGradient.SetKeys( new GradientColorKey[] { new GradientColorKey(Color.white, 0.0f), new GradientColorKey(particle.endColor, 0.5f), }, new GradientAlphaKey[] { new GradientAlphaKey(0.0f, 0.0f), new GradientAlphaKey(0.0f, 1.0f), }); line.materials[1].SetColor("Color Tint", particle.endColor); } //Displaying the heads. if (particle.head) { GameObject lineHead = (GameObject)Instantiate(_headPrefab, Vector3.zero, Quaternion.identity, spline.transform); lineHead.GetComponentInChildren <XRLineRenderer>().colorGradient.SetKeys( new GradientColorKey[] { new GradientColorKey(Color.white, 0.0f), new GradientColorKey(particle.endColor, 0.2f), }, new GradientAlphaKey[] { new GradientAlphaKey(0.0f, 0.0f), new GradientAlphaKey(0.0f, 1.0f), }); lineHead.GetComponentInChildren <XRLineRenderer>().materials[1].SetColor("Color Tint", particle.endColor); lineHead.transform.position = spline.GetPoint(1.0f); lineHead.transform.localRotation = Quaternion.FromToRotation(lineHead.transform.up, vDir); _particleHeads.Add(lineHead.GetComponent <XRLineRenderer>()); } }