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