/// <summary> /// Refreshes the mask sorting. If you're using a particleMaskSorting of MASKSORTINGC.Scrambled you can use this to randomize new mask positions. /// </summary> public void RefreshMaskSorting() { playgroundCache.maskSorting = new int[particleCount]; switch (particleMaskSorting) { case MASKSORTINGC.Linear: for (int i = 0; i<playgroundCache.maskSorting.Length; i++) playgroundCache.maskSorting[i] = i; break; case MASKSORTINGC.Reversed: for (int i = 0; i<playgroundCache.maskSorting.Length; i++) playgroundCache.maskSorting[i] = (playgroundCache.maskSorting.Length-1)-i; break; case MASKSORTINGC.Scrambled: for (int i = 0; i<playgroundCache.maskSorting.Length; i++) playgroundCache.maskSorting[i] = playgroundCache.maskSorting[i] = i; PlaygroundC.ShuffleArray(playgroundCache.maskSorting); break; } previousMaskSorting = particleMaskSorting; }
/// <summary> /// Refresh the mask sorting by sending in a custom int[] array. /// The passed in maskSortingArray should contain all numbers from 0 to particleCount-1, it will then apply non-linear masking depending on the order of the numbers in releation to the actual particle array. /// </summary> /// <param name="maskSortingArray">Mask sorting array.</param> public void RefreshMaskSorting (int[] maskSortingArray) { playgroundCache.maskSorting = new int[particleCount]; for (int i = 0; i<particleCount; i++) { if (i<maskSortingArray.Length) playgroundCache.maskSorting[i] = maskSortingArray[i]; else playgroundCache.maskSorting[i] = i; } previousMaskSorting = particleMaskSorting; }