Beispiel #1
0
    void Start()
    {
        HoverRotation hover = GetComponent <HoverRotation>();

        if (hover != null)
        {
            if (usePerlin)
            {
                int     num = Mathf.Min(hover.rotations.Length);
                Vector3 p   = transform.position;
                p.x *= .12112f;
                p.y *= .32131f;
                p.z *= .51241f;

                p.x += p.z;
                p.y += p.z * .5f;

                for (int i = 0; i < num; i++)
                {
                    var        pos  = p + new Vector3(i * .01337f, i * .31337f, i * .73313f);
                    Oscillator osci = hover.oscis[i];

                    if (curTime.randomize)
                    {
                        osci.SetTime(curTime.Perlin(pos.z, pos.x), PerlinNoise.GetValue(pos.y, pos.z) < .5f);
                    }

                    osci.maxTime *= time.Perlin(pos.x, pos.y);
                    osci.curTime  = osci.maxTime * new BMM(true, 0, 1).Perlin(pos.z, pos.x);
                    float val = scale.Perlin(pos.y, pos.z);
                    osci.minVal *= val;
                    osci.maxVal *= val;

                    Vector3 offset = hover.rotations[i];
                    Vector3 scales = new Vector3(offsetx.Perlin(pos.y, pos.z), offsety.Perlin(pos.z, pos.x), offsetz.Perlin(pos.z, pos.y));
                    hover.rotations[i] = Vector3.Scale(offset, scales);

                    if (PerlinNoise.GetValue(pos.x, pos.z) < .5)
                    {
                        hover.rotations[i] *= -1;
                    }
                }
            }
            else
            {
                if (useSeed)
                {
                    Random.Push(seed);
                }
                int num = Mathf.Min(hover.rotations.Length, hover.oscis.Length);
                for (int i = 0; i < num; i++)
                {
                    Oscillator osci = hover.oscis[i];

                    osci.maxTime *= time.value;
                    osci.curTime  = osci.maxTime * Random.value;
                    float val = scale.value;
                    osci.minVal *= val;
                    osci.maxVal *= val;

                    Vector3 offset = hover.rotations[i];
                    Vector3 scales = new Vector3(offsetx.value, offsety.value, offsetz.value);
                    hover.rotations[i] = Vector3.Scale(offset, scales);
                    if (Random.value < .5)
                    {
                        hover.rotations[i] *= -1;
                    }
                }
                if (useSeed)
                {
                    Random.Pop(); seed++;
                }
            }
        }

        Destroy(this);
    }