public void SetEvent(FMOD.Event evt) { if (evt == null) { if (m_runtimeEvent != null) { if (m_eventSystemHandle != null && m_eventSystemHandle.getEventSystem() != null && m_eventSystemHandle.getEventSystem().wasCleaned() == false) { Stop(); CleanParameters(); m_eventSystemHandle.getEventSystem().releaseRunningInstance(this); } freeEventData(); m_runtimeEvent = null; } } else { m_runtimeEvent = evt; foreach (FmodRuntimeEventParameter param in getParameters()) { param.SetEvent(m_runtimeEvent); } setMinRange(getMinRange()); setMaxRange(getMaxRange()); if (! m_selfHandle.IsAllocated) { m_selfHandle = GCHandle.Alloc(this, GCHandleType.Normal); } ERRCHECK(evt.setCallback(FmodEventAudioSource.EventStoppedCallbackStatic, (IntPtr)m_selfHandle)); } }