Exemplo n.º 1
0
        private static bool IsVisible(WaterRaindropsIME.Droplet droplet)
        {
            bool flag = true;

            flag &= (droplet.Position.x >= 0f && droplet.Position.x <= 1f);
            return(flag & (droplet.Position.y >= 0f && droplet.Position.y <= 1f));
        }
Exemplo n.º 2
0
        private void OnDropletUpdate(ref WaterRaindropsIME.Droplet droplet)
        {
            Vector2 position = droplet.Position;
            Vector2 velocity = droplet.Velocity;

            droplet.Life -= Time.fixedDeltaTime;
            if (droplet.Volume < 0.2f)
            {
                return;
            }
            Vector4 vector = base.transform.worldToLocalMatrix * this.Force;
            Vector2 a      = new Vector2(vector.x, -vector.y);
            Vector2 b      = new Vector2(this.Tracking.Force.x, this.Tracking.Force.y);
            Vector2 a2     = Vector2.zero;

            if (this._Friction != null)
            {
                a2 = this._Friction[(int)(position.x * (float)(this._Target.width - 1)), (int)(position.y * (float)(this._Target.height - 1))];
            }
            float   magnitude  = velocity.magnitude;
            Vector2 normalized = velocity.normalized;
            Vector2 b2         = -normalized * ((magnitude + 1f) * (magnitude + 1f)) * this.AirFriction;
            Vector2 b3         = -a2 * this.WindowFrictionMultiplier;
            Vector2 a3         = a + b + b2 + b3;
            Vector2 a4         = a3 / droplet.Volume;

            droplet.Velocity += a4 * Time.deltaTime;
            droplet.Position += droplet.Velocity * Time.deltaTime;
            float num  = Vector3.Distance(droplet.Position, position);
            float num2 = num * this.VolumeLoss + 0.001f;

            droplet.Volume -= num2;
        }
Exemplo n.º 3
0
 private void Advance()
 {
     this._Droplets.RemoveAll((WaterRaindropsIME.Droplet x) => !WaterRaindropsIME.IsVisible(x) || x.Life <= 0f || x.Volume <= 0f);
     for (int i = 0; i < this._Droplets.Count; i++)
     {
         WaterRaindropsIME.Droplet droplet = this._Droplets[i];
         this.OnDropletUpdate(ref droplet);
         if (!WaterRaindropsIME.IsVisible(droplet))
         {
             this._Droplets[i] = droplet;
         }
         else
         {
             this.Draw(i, droplet.Position, droplet.Volume, droplet.Velocity);
             this._Droplets[i] = droplet;
         }
     }
 }