public void PlanetariaMathTestScriptSimplePasses() { // PlanetariaMath.modolo_using_euclidean_division() for (int test = 0; test < tests; ++test) { float dividend = Random.Range(float.MinValue, float.MaxValue); float divisor = Random.Range(float.MinValue, float.MaxValue); if (divisor != 0) { float modulus = PlanetariaMath.modolo_using_euclidean_division(dividend, divisor); Assert.IsTrue(0 <= modulus && modulus < Mathf.Abs(divisor), dividend + " mod " + divisor + " = " + modulus); } } Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(0.9f, 1) == 0.9f); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(1, 1) == 0); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(2, 1) == 0); // positive dividend, positive divisor Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(0, 10) == 0); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(1, 10) == 1); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(2, 10) == 2); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(9, 10) == 9); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(10, 10) == 0); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(11, 10) == 1); // negative dividend, positive divisor Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(-1, 10) == 9); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(-2, 10) == 8); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(-9, 10) == 1); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(-10, 10) == 0); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(-11, 10) == 9); // positive dividend, negative divisor Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(0, -10) == 0); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(1, -10) == 1); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(2, -10) == 2); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(9, -10) == 9); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(10, -10) == 0); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(11, -10) == 1); // negative dividend, negative divisor Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(-1, -10) == 9); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(-2, -10) == 8); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(-9, -10) == 1); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(-10, -10) == 0); Assert.IsTrue(PlanetariaMath.modolo_using_euclidean_division(-11, -10) == 9); // }
// use dot product of velocity and input to determine if the player is fighting their momentum. // if they are, add extra noise so it sounds like the thrusters are working harder (harsher noise). private void OnAudioFilterRead(float[] data, int channels) { // Procedural engine audio based on: https://www.gamasutra.com/blogs/JoeStrout/20170223/292317/Procedural_Audio_in_Unity.php System.Random random_number_generator = new System.Random(); // go through the audio clip that needs to be generated for (int sample = 0; sample < data.Length; sample += 1) { float random_number; // play a sound for multiple frames (e.g. a "square wave") if (repeats_left <= 0) // but randomly generate new samples as needed { random_number = (float)random_number_generator.NextDouble(); // this determines the local amplitude (volume) wave_value = PlanetariaMath.triangular_distribution(random_number, -volume, 0, +volume); random_number = (float)random_number_generator.NextDouble(); // this approximately determines the pitch repeats_left = Mathf.FloorToInt(PlanetariaMath.triangular_distribution(random_number, 172, 259, 518)); // FIXME: MAGIC NUMBER: } random_number = (float)random_number_generator.NextDouble(); float resistance_multiplier = 1 + thruster_variance_multiplier * random_number * thruster_resistance; data[sample] = wave_value * resistance_multiplier * thruster_force * player_life; repeats_left -= 1; } }