This class manages emitters, primitives, raytracing and multithreading. Full XML docs for each field are included with the DLL.
```cs
public class RaytracingContext
{
// Create + destroy
public RaytracingContext();
public void Dispose();
// Customisable settings
public Action<string> LogCallback;
public bool LogMemoryAllocationWarnings;
public int WorkItemCount;
public int MaximumConcurrencyLevel;
public int MaximumGroupedEAXCount;
public float SpeedOfSound;
public float MetersPerUnit;
public float ReferenceFrequencyLF;
public float ReferenceFrequencyHF;
public bool EmittersOutsideTheWorldAreMuffled;
public AirAbsorptionSettings AirAbsorption;
public CustomEAXFormulas CustomEAXFormulas;
public Vector3F WorldPosition;
public Vector3F WorldSize;
public Vector3F WorldMax;
public MaterialProperties GetMaterial(MaterialType type);
// The following settings are only available in debug builds, and only affect rendering
public bool RenderingEnabled;
public Color GetMaterialColor(MaterialType type);
public void SetMaterialColor(MaterialType type, Color colour);
public Vector3F CameraPosition;
public float CameraPitch;
public float CameraYaw;
public float FieldOfView
// Update + wait for threads
public void Update();
public void Wait();
// Primitives
public void AddPrimitive(Primitive primitive);
public void RemovePrimitive(Primitive primitive);
// Emitters
public Emitter AddEmitter(Emitter emitter);
public void RemoveEmitter(Emitter emitter);
// Reverb
public bool materialsDirty;
public bool ReverbCalculated;
public List<EAXReverbResults> GroupedEAX;
public Action OnReverbUpdated;
// Benchmarks
public float MainThreadTime;
public float PreparationTime;
public float RaytracingTime;
public float AnalysisTime;
public int RaysCastThisFrame;
public int TotalPossibleRayCount;
public float RayCachePercent;
}
```