コード例 #1
0
            public new float3 Get3DPointWorld(float progress)
            {
                ClearData();
                ConvertData();

                Assert.IsTrue(SplineEntityData3D.HasValue, "Failed to generate spline");
                Dynamic3DJob job = new Dynamic3DJob(this, progress, Allocator.TempJob);

                job.Execute();

                float3 jobResult = job.Result;

                job.Dispose();
                return(jobResult);
            }
コード例 #2
0
            public new float3 Get3DPointLocal(float progress)
            {
                ClearData();
                ConvertData();

                Assert.IsTrue(SplineEntityData3D.HasValue, "Failed to generate spline");
                Dynamic3DJob job = new Dynamic3DJob(this, progress, Allocator.TempJob);

                job.Execute();

                LocalSpaceConversion3D conversion = new LocalSpaceConversion3D(Position, Forward, job.Result, Allocator.TempJob);

                conversion.Execute();

                float3 pos = conversion.SplinePosition.Value;

                conversion.Dispose();
                job.Dispose();
                return(pos);
            }
コード例 #3
0
ファイル: Base3DEditor.cs プロジェクト: crener/Dots-Spline
        /// <summary>
        /// Renders points along the spline to demonstrate possible point bunching along the splines length
        /// </summary>
        /// <param name="quantity">amount of points to render</param>
        /// <param name="spline">spline to render on</param>
        protected static void RenderIntermediateSplinePoints(float quantity, ISpline3D spline)
        {
            Handles.color = Color.red;
            const float multiplier = 0.3f;

            // use the jobs as they support all the possible settings that a spline can have
            Dynamic3DJob job = new Dynamic3DJob(spline, 0f, Allocator.Temp);

            for (int i = 0; i <= quantity; i++)
            {
                float          progress          = i == 0 ? 0f : i / (quantity - 1f);
                SplineProgress jobSplineProgress = job.SplineProgress;
                jobSplineProgress.Progress = progress;
                job.SplineProgress         = jobSplineProgress;

                job.Execute();
                HandleDrawCross(job.Result, multiplier);
            }

            job.Dispose();
        }
コード例 #4
0
ファイル: test.cs プロジェクト: crener/Dots-Spline
    // Start is called before the first frame update
    void Start()
    {
        const float progress = 0.3f;
        ISpline3D   spline3D = GetComponent <ISpline3D>();

        // calculate the point manually
        Dynamic3DJob dynamic2 = new Dynamic3DJob(spline3D, progress, Allocator.Temp);

        dynamic2.Execute();
        float3 manualResult = dynamic2.Result;

        dynamic2.Dispose();

        // calculate the point using dynamic job
        Dynamic3DJob dynamic = new Dynamic3DJob(spline3D, progress, Allocator.TempJob);
        JobHandle    handle  = dynamic.Schedule();

        handle.Complete();
        float3 dynamicJobResult = dynamic.Result;

        dynamic.Dispose();

        // calculate the point using specific job type
        BezierSpline3DPointJob direct = new BezierSpline3DPointJob(spline3D, progress, Allocator.TempJob);
        JobHandle handle2             = direct.Schedule(handle);

        handle2.Complete();
        float3 directJobResult = direct.Result;

        direct.Dispose();

        if (handle2.IsCompleted)
        {
            Assert.AreEqual(manualResult, directJobResult);
            Assert.AreEqual(manualResult, dynamicJobResult);
        }
    }