private void DoShowEffects()
        {
            FastLineRendererProperties props = new FastLineRendererProperties();
            FastLineRenderer           r     = FastLineRenderer.CreateWithParent(null, LineRenderer);

            r.Material.EnableKeyword("DISABLE_CAPS");
            r.SetCapacity(8192 * FastLineRenderer.VerticesPerLine);
            r.Turbulence  = 350.0f;
            r.BoundsScale = new Vector3(4.0f, 4.0f, 4.0f);
            //r.JitterMultiplier = UnityEngine.Random.Range(0.25f, 1.5f);

            const float maxLifeTimeSeconds = 1.5f;

            for (int i = 0; i < 32; i++)
            {
                Vector3 pos  = new Vector3(10.0f, Screen.height * 0.5f);
                Vector3 pos2 = new Vector3(10.0f + (UnityEngine.Random.Range(50.0f, 150.0f)), Screen.height * 0.5f + (UnityEngine.Random.Range(-15.0f, 15.0f)));
                props.Start  = pos;
                props.End    = pos2;
                props.Radius = UnityEngine.Random.Range(8.0f, 16.0f);
                float s = UnityEngine.Random.Range(1.0f, maxLifeTimeSeconds);
                props.SetLifeTime(s, s * UnityEngine.Random.Range(0.1f, 0.2f));
                props.Color           = new Color32(RandomByte(), RandomByte(), RandomByte(), RandomByte());
                props.Velocity        = RandomVelocity(20.0f);
                props.Velocity.z      = 0.0f;
                props.AngularVelocity = UnityEngine.Random.Range(-0.1f, 0.1f);
                r.AddLine(props);
            }
            r.Apply();

            // send the script back into the cache, freeing up resources after max lifetime seconds.
            r.SendToCacheAfter(TimeSpan.FromSeconds(maxLifeTimeSeconds));
        }
Пример #2
0
 public void Init(FastLineRenderer parent, float radius)
 {
     Assert.IsNotNull(parent);
     lineRenderer = FastLineRenderer.CreateWithParent(null, parent);
     lineRenderer.Material.EnableKeyword("DISABLE_CAPS");
     lineRenderer.SetCapacity(FastLineRenderer.MaxLinesPerMesh * FastLineRenderer.VerticesPerLine);
     props        = new FastLineRendererProperties();
     props.Radius = radius;
 }
        private void UpdateDynamicLines()
        {
            if (!Input.GetKeyDown(KeyCode.Space) || LineRenderer == null)
            {
                return;
            }
            else if (ShowEffects)
            {
                DoShowEffects();
                return;
            }

            const float maxLifeTimeSeconds   = 5.0f;
            FastLineRendererProperties props = new FastLineRendererProperties();
            FastLineRenderer           r     = FastLineRenderer.CreateWithParent(null, LineRenderer);

            r.Material.EnableKeyword("DISABLE_CAPS");
            r.SetCapacity(8192 * FastLineRenderer.VerticesPerLine);
            r.Turbulence  = 150.0f;
            r.BoundsScale = new Vector3(4.0f, 4.0f, 4.0f);
            props.GlowIntensityMultiplier = 0.1f;
            props.GlowWidthMultiplier     = 4.0f;

            for (int i = 0; i < 8192; i++)
            {
                Vector3 pos;
                if (Camera.main.orthographic)
                {
                    pos    = UnityEngine.Random.insideUnitCircle;
                    pos.x *= Screen.width * UnityEngine.Random.Range(0.1f, 0.4f);
                    pos.y *= Screen.height * UnityEngine.Random.Range(0.1f, 0.4f);
                }
                else
                {
                    pos    = UnityEngine.Random.insideUnitSphere;
                    pos.x *= Screen.width * UnityEngine.Random.Range(0.5f, 2.0f);
                    pos.y *= Screen.height * UnityEngine.Random.Range(0.5f, 2.0f);
                    pos.z *= UnityEngine.Random.Range(-200.0f, 200.0f);
                }
                props.End    = pos;
                props.Radius = UnityEngine.Random.Range(1.0f, 4.0f);
                float s = UnityEngine.Random.Range(1.0f, maxLifeTimeSeconds);
                props.SetLifeTime(s, s * 0.15f);
                props.Color           = new Color32(RandomByte(), RandomByte(), RandomByte(), RandomByte());
                props.Velocity        = RandomVelocity(100.0f);
                props.AngularVelocity = UnityEngine.Random.Range(-6.0f, 6.0f);
                r.AddLine(props);
            }
            r.Apply();
            r.SendToCacheAfter(TimeSpan.FromSeconds(maxLifeTimeSeconds));
        }
Пример #4
0
        public void GenerateLotsOfLines()
        {
            for (int i = 0; i < 10; i++)
            {
                if (UseUnityLineRendererToggle != null && UseUnityLineRendererToggle.isOn && UnityLineRenderer != null)
                {
                    for (int j = 0; j < FastLineRenderer.MaxLinesPerMesh; j++)
                    {
                        Vector3 pos = new Vector3(UnityEngine.Random.Range(0.0f, Screen.width), UnityEngine.Random.Range(0.0f, Screen.height), UnityEngine.Random.Range(-400.0f, 400.0f));
                        UnityLineRendererPositions.Add(pos);
                    }
                    UnityLineRenderer.positionCount = UnityLineRendererPositions.Count;
                    UnityLineRenderer.SetPositions(UnityLineRendererPositions.ToArray());
                }
                else if (lotsOfLinesRenderer != null)
                {
                    // fast clone, just re-use the mesh!
                    const float      range = 1000.0f;
                    FastLineRenderer r     = FastLineRenderer.CreateWithParent(null, LineRenderer);
                    r.Material.EnableKeyword("DISABLE_CAPS");
                    r.Mesh = lotsOfLinesRenderer.Mesh;
                    r.transform.Translate(UnityEngine.Random.Range(-range, range), UnityEngine.Random.Range(-range, range), UnityEngine.Random.Range(-range, range));
                }
                else
                {
                    FastLineRenderer r = FastLineRenderer.CreateWithParent(null, LineRenderer);
                    r.Material.EnableKeyword("DISABLE_CAPS");
                    r.SetCapacity(FastLineRenderer.MaxLinesPerMesh * FastLineRenderer.VerticesPerLine);
                    FastLineRendererProperties props = new FastLineRendererProperties();
                    for (int j = 0; j < FastLineRenderer.MaxLinesPerMesh; j++)
                    {
                        Color32 randColor = new Color32(RandomByte(), RandomByte(), RandomByte(), RandomByte());
                        // Vector3 pos = new Vector3(UnityEngine.Random.Range(0.0f, Screen.width), UnityEngine.Random.Range(0.0f, Screen.height), UnityEngine.Random.Range(-400.0f, 400.0f));
                        Vector3 pos = new Vector3(UnityEngine.Random.Range(0.0f, Screen.width), UnityEngine.Random.Range(0.0f, Screen.height), 0);
                        props.Start  = pos;
                        props.End    = Vector3.zero;
                        props.Color  = randColor;
                        props.Radius = UnityEngine.Random.Range(1.0f, 4.0f);
                        props.SetLifeTime(float.MaxValue);
                        // props.AngularVelocity = UnityEngine.Random.Range(-6.0f, 6.0f);
                        // props.Velocity = RandomVelocity(50.0f);
                        r.AppendLine(props);
                    }
                    r.Apply();
                    lotsOfLinesRenderer = r;
                }

                LineCountLabel.text = "Lines: " + (lineCount += FastLineRenderer.MaxLinesPerMesh);
            }
        }
Пример #5
0
    private void drawStreamLines()
    {
        List <Vector3> points = generateOneStreamLine(new Vector3(200 * DataBase.SpaceFactor, 100 * DataBase.SpaceFactor, 30 * DataBase.SpaceFactor));

        /*
         * VectorLine line = new VectorLine("Grid", points, 3f, LineType.Continuous);
         * //line.SetColors(GenerateColorsFromPositions(positions_TEST));
         * line.Draw3DAuto();
         */

        FastLineRenderer           LineRenderer = FastLineRenderer.CreateWithParent(gameObject, FastLineRendererTemplate);
        FastLineRendererProperties props        = new FastLineRendererProperties();

        props.Radius   = 0.01f;
        props.LineJoin = FastLineRendererLineJoin.AdjustPosition;
        LineRenderer.AddLine(props, points, null, false, false);
        LineRenderer.Apply();
    }
Пример #6
0
    public void RenderPlanetOrbits()
    {
        for (int i = 0; i < orbitsMatrixPlanets.GetLength(0); i++)
        {
            FastLinePlanetline.Reset();
            GameObject go = new GameObject("Orbit");
            go.transform.SetParent(planetIDGameObjectMap[i].transform);
            go.transform.localPosition = new Vector3(0f, 0f, 0f);

            FastLineRenderer lr = FastLineRenderer.CreateWithParent(go, FastLinePlanetline);

            FastLineRendererProperties props = new FastLineRendererProperties();

            props.Radius     = orbitLineRadius;
            props.LineJoin   = FastLineRendererLineJoin.AttachToPrevious;
            lr.UseWorldSpace = true;
            // props.Color = new Color(0.67f, 0.66f, 0.50f, 0.25f);
            lr.AddLine(props, orbitsMatrixPlanets[i], null);
            lr.ScreenRadiusMultiplier = orbitLineScale;

            lr.Apply();
        }

        //for (int i = 0; i < orbitsMatrixPlanets.GetLength(0); i++)
        //{
        //    GameObject go = new GameObject("Orbit");
        //    go.transform.SetParent(planetIDGameObjectMap[i].transform);
        //    go.transform.localPosition = new Vector3(0f, 0f, 0f);


        //    LineRenderer lr = Instantiate<LineRenderer>(LineOrbits, go.transform);
        //    lr.enabled = true;

        //    lr.name = "Orbit-" + solarsystem.Planets[i].OrbitalID;
        //    orbitsPlanets.Add(lr);
        //    lr.startWidth = 1f;
        //    lr.endWidth = 1f;
        //    lr.positionCount = segments;
        //    lr.SetPositions(orbitsMatrixPlanets[i]);
        //}
    }
Пример #7
0
    public void RenderMoonOrbits()
    {
        //for (int i = 0; i < orbitsMatrixMoons.GetLength(0); i++)
        //{
        //     LineRenderer lr = Instantiate<LineRenderer>(
        //         LineOrbits, planetIDGameObjectMap[solarsystem.Moons[i].Parent.OrbitalID].transform);
        //    lr.enabled = enable;
        //    lr.useWorldSpace = false;
        //    lr.name = "Orbit-" + solarsystem.Moons[i].Parent.OrbitalID.ToString() +
        //        "-" + solarsystem.Moons[i].OrbitalID.ToString();
        //    orbitsMoons.Add(lr);
        //    lr.startWidth = 60f;
        //    lr.endWidth = 60f;
        //    lr.startColor = moonsOrbitColour;
        //    lr.endColor = moonsOrbitColour;
        //    lr.positionCount = segmentsMoons;
        //    lr.SetPositions(orbitsMatrixMoons[i]);
        //}

        for (int i = 0; i < orbitsMatrixMoons.GetLength(0); i++)
        {
            FastLineMoonline.Reset();
            GameObject go = new GameObject("Orbit-Moon");
            go.transform.SetParent(planetIDGameObjectMap[solarsystem.Moons[i].Parent.OrbitalID].transform);
            go.transform.localPosition = new Vector3(0f, 0f, 0f);

            FastLineRenderer lr = FastLineRenderer.CreateWithParent(go, FastLineMoonline);

            FastLineRendererProperties props = new FastLineRendererProperties();

            props.Radius     = orbitLineRadius;
            props.LineJoin   = FastLineRendererLineJoin.AttachToPrevious;
            lr.UseWorldSpace = false;
            // props.Color = new Color(0.51f, 0.67f, 0.50f, 0.25f);
            lr.AddLine(props, orbitsMatrixMoons[i], null);
            lr.ScreenRadiusMultiplier = orbitLineScale;

            lr.Apply();
        }
    }