示例#1
0
        private double CalculateDistance(double intervalPos)
        {
            var value = ScaleCurveToValue(DistanceCurve.GetValue(intervalPos), 100, 1);

            if (value < 1)
            {
                value = 1;
            }

            return(value);
        }
示例#2
0
    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);
        }
    }