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);

        //
    }
예제 #2
0
        // 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;
            }
        }