This class manages voices, primitives, raytracing and multithreading.
```cs
public class RaytracingContext
{
// Creation + destruction
public AudioManager(RaytracingContextSettings settings);
public void Dispose();
// Call this every frame
public void Update();
// Primitive functions
public void AddPrimitive(Primitive primitive);
public void RemovePrimitive(Primitive primitive);
// Voice functions
public Voice CreateVoice(IPositionF position);
public Voice CreateVoice(int type, IPositionF position);
public void RemoveVoice(Voice voice);
public readonly bool MaximumVoicesUsed; // true if no more voices can be allocated
// Updates
public void UpdateWorldBounds(Vector3F position, Vector3F size);
public void UpdateVoicesOutsideTheWorldAreMuffled(bool value);
public void UpdateListener(Vector3F position, float pitch?, float yaw?);
public void UpdateTrailBounceCount(int value);
public void UpdateReverbRayCount(int value);
public void UpdateOcclusionRayCount(int value);
public void UpdatePermeationRayCount(int value);
public void UpdateVoiceReverbRayCount(int value);
public void UpdateVoiceReverbBounceCount(int value);
public void UpdateMaxVoices(int value);
public void UpdatePrioritiseNewVoices(bool value);
public void UpdateMaxNewVoiceBatchSize(int value);
public void UpdateWorkItemCount(int value);
public void UpdateMaximumConcurrencyLevel(int value);
public void UpdateMetersPerUnit(float value);
public void UpdateSpeedOfSound(float value);
public void UpdateReferenceFrequencyLF(float value);
public void UpdateReferenceFrequencyHF(float value);
public void UpdateAirAbsorption(AirAbsorptionSettings value);
public void UpdateCustomEAXFormulas(CustomEAXFormulas formulas);
public void UpdateVoiceEnergyFormula(Func<int, float, float, float> value);
public MaterialProperties GetMaterial(MaterialType type);
// Reverb
public bool ReverbCalculated => RawReverb != null;
public RawReverbResults RawReverb;
public ProcessedReverbResults ProcessedReverb;
public EAXReverbResults EAXReverb;
public EAXReverbResults[] blendedEAX = new EAXReverbResults[4];
public int blendedEAXUsed = 0;
// Raytracing stats
public readonly float MainThreadTime;
public readonly float PreparationTime;
public readonly float RaytracingTime;
public readonly float AnalysisTime;
public int RaysCastThisFrame;
// Only when rendering is enabled
public void SetRenderView(Vector3F cameraPos, float cameraPitch, float cameraYaw, float fieldOfView);
public readonly Vector3F cameraPosition;
public readonly Vector3F cameraPitch;
public readonly Vector3F cameraYaw;
public readonly float fieldOfView;
}
```