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; } ```