using UnityEngine; using System.Collections; using System; public static class PatternArrayGenerator { /** * Generate pattern array. The first frame is always set to 1 */ public static int[] GetPatternArray(int hz, int duration, int fps) { int[] patternArray = new int[fps * duration]; if (hz == 0) return patternArray; int frameToSkip = fps / hz; for (int i = 0; i < patternArray.Length; i+=frameToSkip) { patternArray [i] = 1; } return patternArray; } public static int[] GetPatternArraySineWave(double frequency, int duration, double fps, bool usePrecisePi) { double PI; if (usePrecisePi) PI = 3.14159265358979323846f; else PI = 3.14; int totalFrames = (int) (fps * duration); double[] stim = new double[totalFrames]; int[] stim2 = new int[totalFrames]; if (frequency == 0) return stim2; for (int i = 0, j=1 ; i < stim.Length ; i++, j++) { stim[i] = (double)((2 * PI * frequency) * (double)(j/(double)fps)); stim2[i] = (int) Math.Sign(Math.Sin(stim[i])); //#if DEBUG // print("stim[" + i + "]=" + stim2[i] + " (" + stim[i] + ") [" + Math.Sin(stim[i]) + "]"); //#endif } // stim2 [0] = 555; // stim2 [stim.Length - 1] = 999; // Logger.Print (stim2.ToString()); return stim2; } public static int[] GetPatternArraySineWave(double frequency, double duration, double fps, bool usePrecisePi) { double PI; if (usePrecisePi) PI = 3.14159265358979323846f; else PI = 3.14; int totalFrames = (int) (fps * duration); double[] stim = new double[totalFrames]; int[] stim2 = new int[totalFrames]; if (frequency == 0) return stim2; for (int i = 0, j=1 ; i < stim.Length ; i++, j++) { stim[i] = (double)((2 * PI * frequency) * (double)(j/(double)fps)); stim2[i] = (int) Math.Sign(Math.Sin(stim[i])); #if DEBUG // print("stim[" + i + "]=" + stim2[i] + " (" + stim[i] + ") [" + Math.Sin(stim[i]) + "]"); #endif } return stim2; } }