private void RefreshGroups() { if (GroupCount > 10) { Debug.Log("Max Group Count is set to 10. You attempted to set it to " + GroupCount.ToString() + "."); return; } bool mirror = false; if (Groups == null || LastGroupCountPoll != GroupCount || PreviousMirrorPairRotation != MirrorPairRotation || PreviousPairGroupDirection != PairGroupDirection) { // Refresh the groups, they were changed float rotation = 0; for (int n = 0; n < Groups.Length; n++) { if (n < GroupCount && Groups[n] == null) { Groups[n] = new EmitterGroup(Rotate(Direction, rotation).normalized, SpokeCount, SpokeSpacing, mirror); } else if (n < GroupCount) { Groups[n].Set(Rotate(Direction, rotation).normalized, SpokeCount, SpokeSpacing, mirror); } else { //n is greater than GroupCount -- ensure we clear the rest of the buffer Groups[n] = null; } // invert the mirror flag if needed if (MirrorPairRotation) { mirror = !mirror; } // sets the starting direction of all the groups so we divide by 360 to evenly distribute their direction // Could reduce the scope of the directions here rotation = CalculateGroupRotation(n, rotation); } LastGroupCountPoll = GroupCount; PreviousMirrorPairRotation = MirrorPairRotation; PreviousPairGroupDirection = PairGroupDirection; } else if (RotationSpeed == 0) { float rotation = 0; // If rotation speed is locked, then allow to update Direction of groups for (int n = 0; n < Groups.Length; n++) { if (Groups[n] != null) { Groups[n].Direction = Rotate(Direction, rotation).normalized; } rotation = CalculateGroupRotation(n, rotation); } } }
private void RefreshGroups() { if (GroupCount > 10) { Debug.Log("Max Group Count is set to 10. You attempted to set it to " + GroupCount.ToString() + "."); return; } if (Groups == null || LastGroupCountPoll != GroupCount) { float rotation = 0; for (int n = 0; n < Groups.Length; n++) { if (n < GroupCount && Groups[n] == null) { Groups[n] = new EmitterGroup(Rotate(Direction, rotation).normalized, SpokeCount, SpokeSpacing); } else if (n < GroupCount) { Groups[n].Direction = Rotate(Direction, rotation).normalized; Groups[n].SpokeCount = SpokeCount; Groups[n].SpokeSpacing = SpokeSpacing; } else { //n is greater than GroupCount -- ensure we clear the rest of the buffer Groups[n] = null; } rotation += 360 / GroupCount; } LastGroupCountPoll = GroupCount; } else if (RotationSpeed == 0) { float rotation = 0; // If rotation speed is locked, then allow to update Direction of groups for (int n = 0; n < Groups.Length; n++) { if (Groups[n] != null) { Groups[n].Direction = Rotate(Direction, rotation).normalized; } rotation += 360 / GroupCount; } } }