public static Transform GetNextTransformReference(Transform previousReference, TransformRuntimeSet transformSet) { int randomIndex = (int)Random.Range(0, transformSet.Items.Count); for (int i = 0; i < transformSet.Items.Count; i++) { if (!previousReference || previousReference != transformSet.Items[randomIndex]) { previousReference = transformSet.Items[randomIndex]; return(previousReference); } else { randomIndex = (randomIndex + 1) % transformSet.Items.Count; } } return(null); }
public static Transform GetNextClosestTransformReference(Transform previousReference, TransformRuntimeSet transformSet, Transform entity) { int randomIndex = (int)Random.Range(0, transformSet.Items.Count); float distToRef = Mathf.Infinity; for (int i = 0; i < transformSet.Items.Count; i++) { float currDist = Vector3.Distance(entity.position, transformSet.Items[randomIndex].position); if (!previousReference || previousReference != transformSet.Items[randomIndex]) { if (currDist < distToRef) { previousReference = transformSet.Items[randomIndex]; distToRef = currDist; return(previousReference); } else { randomIndex = (randomIndex + 1) % transformSet.Items.Count; } } else { randomIndex = (randomIndex + 1) % transformSet.Items.Count; } } return(null); }