public void AddSolution(SplitterSolution ssNewSpliterSolution, Vector3 v3PrevDirection, GameObject goLaser) { Color32[] clrsToSplit = MMUtils.ColorSplitter(ssNewSpliterSolution.clrLaserColor); int iReverse = (bInvertRays) ? -1 : 1; ssNewSpliterSolution.tLasers = new Transform[clrsToSplit.Length]; ssSpliterSolutions.Add(ssNewSpliterSolution); float fAngleInBetween = 180; //ANGLE_TO_SPLIT / clrsToSplit.Length; float fStartingAngle = -90 * iReverse; //ANGLE_TO_SPLIT + fAngleInBetween; for (int i = 0; i < clrsToSplit.Length; i++) { GameObject go = Instantiate(goLaser, transform.position + goLaser.GetComponent <ScenarioObject>().v3Offset - this.v3Offset, Quaternion.LookRotation(v3PrevDirection)); go.transform.Rotate(new Vector3(0, fStartingAngle, 0), Space.Self); fStartingAngle += fAngleInBetween; go.transform.SetParent(transform); ssNewSpliterSolution.tLasers[i] = go.transform; go.GetComponent <RayLaser>().UpdateRayColor(clrsToSplit[i]); go.GetComponent <RayLaser>().SetCilinderActive(false); } }