Ejemplo n.º 1
0
 /// <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;
     }
 }
Ejemplo n.º 2
0
        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>());
            }
        }