private void updateQueue(QueueObj queueObj, int newSize, EleDirection?dir) { int sizeDiff = Mathf.Abs(newSize - queueObj.q.Count); if (newSize > queueObj.q.Count) { for (int i = 0; i < sizeDiff; i++) { GameObject currCicle = Instantiate(person); currCicle.transform.SetParent(this.transform); currCicle.SetActive(true); currCicle.transform.position = queueObj.offset - Vector3.right * xSpace * queueObj.q.Count; PersonScript currCircleScript = currCicle.GetComponent <PersonScript>(); if (dir == EleDirection.UP) { Transform arrowTransform = currCicle.transform.GetChild(0); arrowTransform.gameObject.SetActive(true); } if (dir == EleDirection.DOWN) { Transform arrowTransform = currCicle.transform.GetChild(0); arrowTransform.Rotate(0, 0, 180, Space.Self); arrowTransform.gameObject.SetActive(true); } queueObj.q.Enqueue(currCicle); } } if (newSize < queueObj.q.Count) { for (int i = 0; i < sizeDiff; i++) { lastPerson = queueObj.q.Peek(); lastPersonScript = lastPerson.GetComponent <PersonScript>(); lastPersonScript.animateDestroy(); //lastPerson.transform.position += xSpace * Vector3.right; //lastPerson.transform.SetParent(elevatorObj.transform); queueObj.q.Dequeue(); } foreach (GameObject curr in queueObj.q) { personTransitionList.Add(new GameObjectTransition(curr, curr.transform.position + sizeDiff * Vector3.right * xSpace)); } } else { return; } }