public void PassCheckpoint(GameObject checkPointcrossed, GameObject player) { int checkPointPassedIndex = -1; CheckPointPart checkPointPart = CheckPointParts.FirstOrDefault(c => (checkPointPassedIndex = Array.IndexOf(c.checkPoints, checkPointcrossed)) > -1); checkPointPart.crossedBy[checkPointPassedIndex] = player; if (!checkPointPart.crossedBy.Any(x => x == null) && activeCheckPoint != checkPointPart) { activeCheckPoint = checkPointPart; } }
private void FindChecksPoint() { GameObject[] resettableParts = GameObject.FindGameObjectsWithTag("ChallengeReset"); CheckPointParts = new CheckPointPart[resettableParts.Length]; int i = 0; foreach (GameObject resetPart in resettableParts) { List <GameObject> checkPoints = FindAllCheckpointsInGameObject(resetPart); CheckPointParts[i] = new CheckPointPart { partToReset = resetPart, checkPoints = checkPoints.ToArray(), crossedBy = new GameObject[checkPoints.Count] }; i++; } }