protected void Update() { if (this.splitGroups.Count > 0) { for (int i = 0; i < this.splitGroups.Count; i++) { SplitGroup group = this.splitGroups[i]; if (group.elapsedTime < 1f) { group.owner.transform.position = Vector3.Lerp(group.center, group.ownerTarget, group.elapsedTime); group.clone.transform.position = Vector3.Lerp(group.center, group.cloneTarget, group.elapsedTime); group.elapsedTime += Time.deltaTime; this.splitGroups[i] = group; //TODO(Thompson): Test to see if "ref" keyword works. //MovePosition(ref group); //UpdateTime(ref group); } else { if (!this.removeList.Contains(group)) { this.removeList.Add(group); } } } } if (this.removeList.Count > 0) { foreach (SplitGroup group in this.removeList) { if (this.splitGroups.Contains(group)) { CommonUnit unit = group.owner.GetComponent <CommonUnit>(); unit.EnableSelection(); unit.SetNotSplitting(); unit = group.clone.GetComponent <CommonUnit>(); unit.EnableSelection(); unit.SetNotSplitting(); this.splitGroups.Remove(group); } } this.removeList.Clear(); } }
protected void Update() { if (this.mergeGroups.Count > 0) { for (int i = 0; i < this.mergeGroups.Count; i++) { MergeGroup group = this.mergeGroups[i]; if (group.elapsedTime < 1f) { group.owner.transform.position = Vector3.Lerp(group.ownerOrigin, group.center, group.elapsedTime); group.merger.transform.position = Vector3.Lerp(group.mergerOrigin, group.center, group.elapsedTime); group.owner.transform.localScale = Vector3.Lerp(group.initialLocalScale, group.newLocalScale, group.elapsedTime); group.merger.transform.localScale = Vector3.Lerp(group.initialLocalScale, group.newLocalScale, group.elapsedTime); group.elapsedTime += Time.deltaTime; this.mergeGroups[i] = group; } else { this.removeList.Add(this.mergeGroups[i]); } } } if (this.removeList.Count > 0) { foreach (MergeGroup group in this.removeList) { if (this.mergeGroups.Contains(group)) { CommonUnit unit = group.owner.GetComponent <CommonUnit>(); unit.EnableSelection(); unit.SetNotMerging(); if (this.unitManager.getAllObjects().Contains(group.merger)) { this.unitManager.getAllObjects().Remove(group.merger); } GameObject.Destroy(group.merger); this.mergeGroups.Remove(group); } } this.removeList.Clear(); } }