/// <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;
		}