Exemple #1
0
 public void SetSourceEvent(FmodEvent srcEvent)
 {
     if (m_source == srcEvent)
     {
         return;
     }
     CleanRuntimeEvent();
     m_source = srcEvent;
     if (m_source != null)
     {
         UpdateRestorationData();
         m_type = m_source.getSourceType();
         setMaxRange(m_source.m_maxRange);
         setMinRange(m_source.m_minRange);
         if (m_parameters != null)
         {
             CleanAndRemoveParameters();
         }
         else
         {
             m_parameters = new List <FmodRuntimeEventParameter>();
         }
         foreach (FmodEventParameter p in m_source.getParameters())
         {
             FmodRuntimeEventParameter runtimeParam = gameObject.AddComponent <FmodRuntimeEventParameter>();
             runtimeParam.Initialize(p);
             m_parameters.Add(runtimeParam);
         }
     }
     else
     {
         CleanAndRemoveParameters();
     }
 }
Exemple #2
0
    public void UpdateExistingEvent(FmodEvent newEvent)
    {
#if UNITY_EDITOR
        List <FmodRuntimeEventParameter> oldParams = getParameters();
        List <FmodRuntimeEventParameter> toRemove  = new List <FmodRuntimeEventParameter>();

        //checking for existing params
        foreach (FmodRuntimeEventParameter oldParam in oldParams)
        {
            FmodEventParameter matchingParam = newEvent.getParameter(oldParam.getName());

            if (matchingParam == null)
            {
                toRemove.Add(oldParam);
            }
            else
            {
                oldParam.UpdateExistingParam(matchingParam);
            }
        }
        //removing previously existing params that have been deleted
        foreach (FmodRuntimeEventParameter toDelete in toRemove)
        {
            m_parameters.Remove(toDelete);
            DestroyImmediate(toDelete, true);
        }
        PrefabType prefabType = PrefabUtility.GetPrefabType(gameObject);

        // checking for newly created params
        if (prefabType != PrefabType.PrefabInstance &&
            prefabType != PrefabType.ModelPrefabInstance)
        {
            foreach (FmodEventParameter newParam in newEvent.getParameters())
            {
                if (ParameterExists(newParam.getName()) == false)
                {
                    FmodRuntimeEventParameter runtimeParam = gameObject.AddComponent <FmodRuntimeEventParameter>();
                    runtimeParam.Initialize(newParam);
                    m_parameters.Add(runtimeParam);
                }
            }
        }
        m_source = newEvent;
#endif
    }