コード例 #1
0
        public void TestBasicLinear()
        {
            var constructor = new EventConstructor(yBegin: 0, tBegin: 0, tEnd: 2 * (float)Math.PI);
            var sampleOut   = EventList.Join(new List <EventList>()
            {
                constructor.SampleEvents(_pts)
                .Modify
                .SetX(t => (float)Math.Cos(t))
                .SetY(t => (float)Math.Sin(t))
                .SetTimeRange(1000, 2000)
                .AlignRotate()
                .Events,
            }, false);

            PlotPoints(sampleOut);
            Assert.AreEqual((float)Math.PI / 2, sampleOut.R[0], delta);
            Assert.AreEqual(0, sampleOut.R[_pts / 4], delta);
            Assert.AreEqual((float)-Math.PI / 2, sampleOut.R[_pts / 2], delta);
            Assert.AreEqual((float)Math.PI, sampleOut.R[_pts / 4 * 3], delta);

            Assert.AreEqual(1, sampleOut.X[0], delta);
            Assert.AreEqual(0, sampleOut.X[_pts / 4], delta);
            Assert.AreEqual(-1, sampleOut.X[_pts / 2], delta);
            Assert.AreEqual(0, sampleOut.X[_pts / 4 * 3], delta);

            Assert.AreEqual(0, sampleOut.Y[0], delta);
            Assert.AreEqual(1, sampleOut.Y[_pts / 4], delta);
            Assert.AreEqual(0, sampleOut.Y[_pts / 2], delta);
            Assert.AreEqual(-1, sampleOut.Y[_pts / 4 * 3], delta);
        }
コード例 #2
0
 // Start is called before the first frame update
 void Start()
 {
     eventCanvas.gameObject.SetActive(false);
     ButtonTwo.gameObject.SetActive(false);
     ButtonThree.gameObject.SetActive(false);
     ButtonFour.gameObject.SetActive(false);
     eventsHappened = 0;
     Manager        = GetComponent <GameManager>();
     Construct      = GetComponent <EventConstructor>();
 }
コード例 #3
0
        public void TestPipelineWorkflow()
        {
            var constructor = new EventConstructor();
            var samples     = constructor.SampleEvents(_pts);

            samples.Modify
            .AddRotateXY(0.5f * (float)Math.PI)
            .AddRotateXY(0.5f * (float)Math.PI);
            Assert.AreEqual(-1f, samples.Y[0]);
            Assert.AreEqual(0, samples.Y[_pts]);
        }
コード例 #4
0
        public void TestOopWorkflow()
        {
            var constructor = new EventConstructor();
            var samples     = constructor.SampleEvents(_pts);
            var rotate      = new EventAddRotateXY(0.5f * (float)Math.PI);

            samples.Modify.WithModifiers(new List <EventModifier>()
            {
                rotate, rotate
            });

            Assert.AreEqual(-1f, samples.Y[0]);
            Assert.AreEqual(0, samples.Y[_pts]);
        }
コード例 #5
0
        public void TestStandard()
        {
            var reader      = new OsuManiaReader("tests/Files/ex.osu");
            var columns     = reader.Columns.Take(200).ToList();
            var offsets     = reader.Offsets.Take(200).ToList();
            var samples     = 20;
            var duration    = 1000;
            var columnSpace = 0.3f;
            var spritePath  = "down.png";
            var sprites     = new List <Sprite>();
            var constructor = new EventConstructor();

            var colMap = new Dictionary <int, float>();

            colMap.Add(0, 0.5f * (float)Math.PI);
            colMap.Add(1, 0);
            colMap.Add(2, -1f * (float)Math.PI);
            colMap.Add(3, -0.5f * (float)Math.PI);

            // Receptors
            for (int i = 0; i < 4; i++)
            {
                var sprite = new Sprite(
                    new EventConstructor(yBegin: 0)
                    .SampleEvents(samples)
                    .Modify
                    .SetTimeRange(-duration, 20000 - duration)
                    .AddRotate(colMap[i])
                    .AddX((i - 1.5f) * columnSpace)
                    .AddRotateXY(t => t % 20000 / 10000f * (float)Math.PI)
                    .FitXY(-1, 1, -1, 1,
                           0, 480, 480, 0)
                    .AddX(80)
                    .Events,
                    "receptor.png"
                    );
                sprites.Add(sprite);
            }

            // Notes
            foreach (var obj in columns.Zip(offsets))
            {
                var column = obj.First;
                var offset = obj.Second;
                var sprite = new Sprite(
                    constructor
                    .SampleEvents(samples)
                    .Modify
                    .AddRotate(t => - t * 2 * (float)Math.PI)
                    .AddRotateXY(t => - t * (float)Math.PI)
                    .SetTimeRange(offset - duration, offset)
                    .AddRotate(colMap[column])
                    .AddX((column - 1.5f) * columnSpace)
                    .AddRotateXY(t => t % 20000 / 10000f * (float)Math.PI)
                    .FitXY(-1, 1, -1, 1,
                           0, 480, 480, 0)
                    .AddX(80)
                    .Events,
                    spritePath
                    );

                sprites.Add(sprite);
            }


            var storyboard = new Storyboard(sprites);

            storyboard.Export("Getty - Sonic Bass (Evening).osb");
        }
コード例 #6
0
 public void Setup()
 {
     System.IO.Directory.CreateDirectory(dir);
     Constructor = new EventConstructor();
     EventList   = Constructor.SampleEvents(_pts);
 }