Exemple #1
0
        void AppendRoadSamples(NativeList <RigidTransform> samples, IntersectionRoadConnection connection)
        {
            var centerLineSamples = RoadCenterLineSamples[connection.Road]
                                    .Reinterpret <RigidTransform>().AsNativeArray();

            var lateralProfileEntity  = LateralProfileEntityRefs[connection.Road].Reinterpret <Entity>()[0];
            var lateralProfileSamples = LateralProfileSampleBuffers[lateralProfileEntity].Reinterpret <float2>();

            var lateralOffset = connection.Direction == IntersectionRoadDirection.Incoming
                ? lateralProfileSamples[0].x
                : lateralProfileSamples[lateralProfileSamples.Length - 1].x;

            var offset        = new float3(lateralOffset, 0f, 0f);
            var offsetSamples = SplineUtility.OffsetSpline(centerLineSamples, offset, Allocator.Temp);

            if (connection.Direction == IntersectionRoadDirection.Incoming)
            {
                SplineUtility.ReverseSpline(offsetSamples);
            }

            samples.AddRange(offsetSamples);
            offsetSamples.Dispose();
        }
Exemple #2
0
        void AppendRoadSamples(NativeList <RigidTransform> samples, IntersectionRoadConnection connection)
        {
            var centerLineSamples = RoadCenterLineSamples[connection.Road]
                                    .Reinterpret <RigidTransform>().AsNativeArray();

            var lateralProfileEntity = LateralProfileEntityRefs[connection.Road].Reinterpret <Entity>()[0];
            var lateralProfile       = LateralProfileComponents[lateralProfileEntity];

            var lateralOffset = connection.Direction == IntersectionRoadDirection.Incoming
                ? lateralProfile.LeftDrivableOffset.x + OffsetFromCurb
                : lateralProfile.RightDrivableOffset.x - OffsetFromCurb;

            var offset        = new float3(lateralOffset, 0f, 0f);
            var offsetSamples = SplineUtility.OffsetSpline(centerLineSamples, offset, Allocator.Temp);

            if (connection.Direction == IntersectionRoadDirection.Incoming)
            {
                SplineUtility.ReverseSpline(offsetSamples);
            }

            samples.AddRange(offsetSamples);
            offsetSamples.Dispose();
        }