// === METHODS === // Use this for initialization void Start() { renderSettings = FindObjectOfType <ISMRenderSettings>(); // Plug the associated audio source to the given mixer group source = GetComponent <AudioSource>(); AudioMixerGroup mixerGroup = renderSettings.mixer.FindMatchingGroups(mixerGroupName)[0]; source.outputAudioMixerGroup = mixerGroup; // initialize impulse responses var irNumSamples = Mathf.CeilToInt( renderSettings.IRLength * AudioSettings.outputSampleRate); ir = new float[irNumSamples]; ir[0] = 1.0f; // Set up Convolution Reverb float fParamIdx; renderSettings.mixer.GetFloat(mixerGroupName, out fParamIdx); paramIdx = (int)fParamIdx; ConvolutionReverbInput.UploadSample(ir, paramIdx, name); nextSync = AudioSettings.dspTime; // Select random vectors as placeholders for the old positions oldSourcePosition = Random.insideUnitSphere * 1e3f; }
public override void OnInspectorGUI() { // Get the object behind the GUI ISMRenderSettings targetScript = (ISMRenderSettings)target; // General settings EditorGUILayout.LabelField("General"); EditorGUILayout.PropertyField(listener); EditorGUILayout.PropertyField(mixer); // Simulation settings EditorGUILayout.LabelField("Simulation"); targetScript.Absorption = EditorGUILayout.FloatField("Absorption of walls", targetScript.Absorption); targetScript.DiffuseProportion = EditorGUILayout.FloatField("Diffuse energy proportion", targetScript.DiffuseProportion); targetScript.IRLength = EditorGUILayout.FloatField("IR Length", targetScript.IRLength); targetScript.NumberOfISMReflections = EditorGUILayout.IntField("num reflections", targetScript.NumberOfISMReflections); serializedObject.ApplyModifiedProperties(); }