protected virtual void Update() { // Get the fingers we want to use var fingers = Use.GetFingers(true); for (var i = 0; i < fingers.Count; i++) { var finger = fingers[i]; if (LeanFingerData.Exists(fingerDatas, finger) == false) { // Too many active links? if (MaxTrails >= 0 && LeanFingerData.Count(fingerDatas) >= MaxTrails) { continue; } if (Prefab != null) { // Spawn and activate var clone = Instantiate(Prefab); clone.gameObject.SetActive(true); // Register with FingerData var fingerData = LeanFingerData.FindOrCreate(ref fingerDatas, finger); fingerData.Line = clone; fingerData.Age = 0.0f; fingerData.Width = Prefab.widthMultiplier; } } } // Update all FingerData for (var i = fingerDatas.Count - 1; i >= 0; i--) { var fingerData = fingerDatas[i]; if (fingerData.Line != null) { UpdateLine(fingerData, fingerData.Finger, fingerData.Line); if (fingerData.Age >= FadeTime) { Destroy(fingerData.Line.gameObject); fingerDatas.RemoveAt(i); } } else { fingerDatas.RemoveAt(i); } } }