Exemplo n.º 1
0
 private void Update()
 {
     // Remove Finished Rings
     for (int i = 0; i < distortion_rings.Count; i++)
     {
         DistortionRing d = distortion_rings[i];
         if (Time.time - d.spawn_time > d.duration_sec)
         {
             distortion_rings.RemoveAt(i);
             i--;
         }
     }
 }
Exemplo n.º 2
0
    /* Responsible for serializing DistortionRing objects into a float array */
    /* Shaders cannot accept object arrays to my knowledge */
    float[] GetDistortionRingData()
    {
        float[] result = new float[MAX_NUM_RINGS * NUM_DATA_MEMBERS_PER_RING];

        for (int i = 0; i < MAX_NUM_RINGS * NUM_DATA_MEMBERS_PER_RING; i++)
        {
            result[i] = 0.0f;
        }

        for (int i = 0; i < distortion_rings.Count; i++)
        {
            DistortionRing ring = distortion_rings[i];
            result[i * NUM_DATA_MEMBERS_PER_RING]     = ring.x;
            result[i * NUM_DATA_MEMBERS_PER_RING + 1] = ring.y;
            result[i * NUM_DATA_MEMBERS_PER_RING + 2] = ring.strength;
            result[i * NUM_DATA_MEMBERS_PER_RING + 3] = ring.radius;
            result[i * NUM_DATA_MEMBERS_PER_RING + 4] = ring.spawn_time;
            result[i * NUM_DATA_MEMBERS_PER_RING + 5] = ring.distance;
            result[i * NUM_DATA_MEMBERS_PER_RING + 6] = ring.duration_sec;
        }

        return(result);
    }