void ObjectsPositionTranslations() { for (int i = 0; i < positionTranslationObjects.Count; i++) { PositionTranslationObject o = positionTranslationObjects[i]; if (o.transform && o.transform.gameObject && (o.target - o.transform.localPosition).magnitude > o.error && o.transform.localPosition == o.prevFramePos) { if (o.delay > 0) { o.delay -= Time.deltaTime; } else { if (o.maxSpeed == -1) { o.transform.localPosition = Vector3.SmoothDamp(o.transform.localPosition, o.target, ref o.currentVelocity, o.smoothTime); } else { o.transform.localPosition = Vector3.SmoothDamp(o.transform.localPosition, o.target, ref o.currentVelocity, o.smoothTime, o.maxSpeed); } o.prevFramePos = o.transform.localPosition; } } else { o.Func?.Invoke(o.transform.gameObject); o.isReached = true; positionTranslationObjects.Remove(o); i--; } } }
public void TranslatePositionObject(ref PositionTranslationObject o) { for (int i = 0; i < positionTranslationObjects.Count; i++) { Transform t = positionTranslationObjects[i].transform; if (o.transform == t) { positionTranslationObjects.RemoveAt(i); break; } } positionTranslationObjects.Add(o); }