// Token: 0x06000AA0 RID: 2720 RVA: 0x0002DA0C File Offset: 0x0002BE0C private static void ThreadedScale(Texture2D tex, int newWidth, int newHeight, bool useBilinear) { TextureUtility.texColors = tex.GetPixels(); TextureUtility.newColors = new Color[newWidth * newHeight]; if (useBilinear) { TextureUtility.ratioX = 1f / ((float)newWidth / (float)(tex.width - 1)); TextureUtility.ratioY = 1f / ((float)newHeight / (float)(tex.height - 1)); } else { TextureUtility.ratioX = (float)tex.width / (float)newWidth; TextureUtility.ratioY = (float)tex.height / (float)newHeight; } TextureUtility.w = tex.width; TextureUtility.w2 = newWidth; int num = Mathf.Min(SystemInfo.processorCount, newHeight); int num2 = newHeight / num; TextureUtility.finishCount = 0; if (TextureUtility.mutex == null) { TextureUtility.mutex = new Mutex(false); } if (num > 1) { int i; TextureUtility.ThreadData threadData; for (i = 0; i < num - 1; i++) { threadData = new TextureUtility.ThreadData(num2 * i, num2 * (i + 1)); ParameterizedThreadStart start = (!useBilinear) ? new ParameterizedThreadStart(TextureUtility.PointScale) : new ParameterizedThreadStart(TextureUtility.BilinearScale); Thread thread = new Thread(start); thread.Start(threadData); } threadData = new TextureUtility.ThreadData(num2 * i, newHeight); if (useBilinear) { TextureUtility.BilinearScale(threadData); } else { TextureUtility.PointScale(threadData); } while (TextureUtility.finishCount < num) { Thread.Sleep(1); } } else { TextureUtility.ThreadData obj = new TextureUtility.ThreadData(0, newHeight); if (useBilinear) { TextureUtility.BilinearScale(obj); } else { TextureUtility.PointScale(obj); } } tex.Resize(newWidth, newHeight); tex.SetPixels(TextureUtility.newColors); tex.Apply(); }