private double CalculateDistance(double intervalPos) { var value = ScaleCurveToValue(DistanceCurve.GetValue(intervalPos), 100, 1); if (value < 1) { value = 1; } return(value); }
internal unsafe void __MarshalTo(ref __Native @ref) { @ref.OrientFront = OrientFront; @ref.OrientTop = OrientTop; @ref.Position = Position; @ref.Velocity = Velocity; @ref.InnerRadius = InnerRadius; @ref.InnerRadiusAngle = InnerRadiusAngle; @ref.ChannelCount = ChannelCount; @ref.ChannelRadius = ChannelRadius; if (ChannelAzimuths != null && ChannelAzimuths.Length > 0 && ChannelCount > 0) { @ref.ChannelAzimuthsPointer = Marshal.AllocHGlobal(sizeof(float) * Math.Min(ChannelCount, ChannelAzimuths.Length)); MemoryHelpers.Write(@ref.ChannelAzimuthsPointer, new Span <float>(ChannelAzimuths), ChannelCount); } @ref.VolumeCurvePointer = DistanceCurve.FromCurvePoints(VolumeCurve); @ref.LFECurvePointer = DistanceCurve.FromCurvePoints(LfeCurve); @ref.LPFDirectCurvePointer = DistanceCurve.FromCurvePoints(LpfDirectCurve); @ref.LPFReverbCurvePointer = DistanceCurve.FromCurvePoints(LpfReverbCurve); @ref.ReverbCurvePointer = DistanceCurve.FromCurvePoints(ReverbCurve); @ref.CurveDistanceScaler = CurveDistanceScaler; @ref.DopplerScaler = DopplerScaler; if (Cone == null) { @ref.ConePointer = null; } else { @ref.Cone = Cone.Value; @ref.ConePointer = (Cone *)Unsafe.AsPointer(ref @ref.Cone); } }