public bool Trickle(BufferedGhostState downFrom)
        {
            bool flag = false;

            for (int index = 0; index < this.properties.Count; ++index)
            {
                BufferedGhostProperty property = this.properties[index];
                if (!property.isNetValue && downFrom.properties[index].valid)
                {
                    property.value = downFrom.properties[index].value;
                    property.valid = true;
                    flag           = true;
                }
            }
            return(flag);
        }
 public void Apply(BufferedGhostState previous, float lerp = 1f)
 {
     BufferedGhostState.lastAppliedState  = this;
     BufferedGhostState.lastPreviousState = previous;
     for (int index = 0; index < this.properties.Count; ++index)
     {
         BufferedGhostProperty property = this.properties[index];
         if (property.valid)
         {
             property.binding.value = property.value;
         }
         else if (previous != null)
         {
             property.binding.value = property.value = previous.properties[index].value;
         }
         else
         {
             property.value = property.binding.value;
         }
     }
 }