Example #1
0
        public void Point()
        {
            ISimpleTestSpline2D bezierSpline2D = CreateSpline();

            float2 a = float2.zero;

            bezierSpline2D.AddControlPoint(a);
            float2 b = new float2(1f, 0f);

            bezierSpline2D.AddControlPoint(b);

            Spline2DData data = bezierSpline2D.SplineEntityData2D.Value;

            Assert.AreEqual(1f, bezierSpline2D.Length());
            Assert.AreEqual(1f, data.Length);

            Assert.AreEqual(1, bezierSpline2D.Times.Count);
            Assert.AreEqual(1, data.Time.Length);
            Assert.AreEqual(1f, bezierSpline2D.Times[0]);
            Assert.AreEqual(1f, data.Time[0]);

            BezierSpline2DPointJob job = new BezierSpline2DPointJob(bezierSpline2D, -0.5f, Allocator.Temp);

            try
            {
                CheckFloatJob(a, job, -0.5f);
                CheckFloatJob(a, job, 0f);
                CheckFloatJob(new float2(0.5f, 0f), job, 0.5f);
                CheckFloatJob(b, job, 5f);
            }
            finally
            {
                job.Dispose();
            }
        }
Example #2
0
        private void CheckFloatJob(float2 expected, BezierSpline2DPointJob job, float progress)
        {
            job.SplineProgress = new SplineProgress()
            {
                Progress = progress
            };
            job.Execute();

            TestHelpers.CheckFloat2(expected, job.Result);
        }
Example #3
0
        private float2 getPointViaJob(ISpline2D spline, float progress)
        {
            switch (spline.SplineDataType)
            {
            case SplineType.Bezier:
                BezierSpline2DPointJob bzSpline = new BezierSpline2DPointJob(spline, progress, Allocator.Temp);
                bzSpline.Execute();

                float2 result = bzSpline.Result;
                bzSpline.Dispose();
                return(result);

            case SplineType.Linear:
                LinearSpline2DPointJob pSpline = new LinearSpline2DPointJob(spline, progress, Allocator.Temp);
                pSpline.Execute();
                return(pSpline.Result);

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Example #4
0
            public void Execute(ArchetypeChunk chunk, int chunkIndex, int firstEntityIndex)
            {
                NativeArray <SplineProgress> movers  = chunk.GetNativeArray(MoverDef);
                NativeArray <Translation>    transes = chunk.GetNativeArray(TransDef);

                BezierSpline2DPointJob point = new BezierSpline2DPointJob()
                {
                    Spline = Spline
                };


                for (int i = chunk.Count - 1; i >= 0; i--)
                {
                    SplineProgress move = movers[i];

                    point.SplineProgress = move;
                    point.Execute();

                    transes[i] = new Translation()
                    {
                        Value = new float3(point.Result, 0f)
                    };
                }
            }