private AudioMixerGroupController DuplicateGroupRecurse(AudioMixerGroupController sourceGroup, bool recordUndo) { var targetGroup = new AudioMixerGroupController(this); // Copy effects var targetEffectsList = new List <AudioMixerEffectController>(); foreach (var sourceEffect in sourceGroup.effects) { targetEffectsList.Add(CopyEffect(sourceEffect)); } // Copy child groups var targetChildren = new List <AudioMixerGroupController>(); foreach (var childGroup in sourceGroup.children) { targetChildren.Add(DuplicateGroupRecurse(childGroup, recordUndo)); } targetGroup.name = sourceGroup.name + " - Copy"; targetGroup.PreallocateGUIDs(); targetGroup.effects = targetEffectsList.ToArray(); targetGroup.children = targetChildren.ToArray(); targetGroup.solo = sourceGroup.solo; targetGroup.mute = sourceGroup.mute; targetGroup.bypassEffects = sourceGroup.bypassEffects; float value; foreach (var s in snapshots) { if (s.GetValue(sourceGroup.GetGUIDForVolume(), out value)) { s.SetValue(targetGroup.GetGUIDForVolume(), value); } if (s.GetValue(sourceGroup.GetGUIDForPitch(), out value)) { s.SetValue(targetGroup.GetGUIDForPitch(), value); } if (s.GetValue(sourceGroup.GetGUIDForSend(), out value)) { s.SetValue(targetGroup.GetGUIDForSend(), value); } } AssetDatabase.AddObjectToAsset(targetGroup, this); if (recordUndo) { Undo.RegisterCreatedObjectUndo(targetGroup, targetGroup.name); } // Add to view if source is shown (so it's visible in the channelstrip) if (CurrentViewContainsGroup(sourceGroup.groupID)) { targetGroup.controller.AddGroupToCurrentView(targetGroup); } return(targetGroup); }
public AudioMixerGroupController CreateNewGroup(string name, bool storeUndoState) { var group = new AudioMixerGroupController(this); group.name = name; group.PreallocateGUIDs(); var effect = new AudioMixerEffectController("Attenuation"); AddNewSubAsset(effect, storeUndoState); effect.PreallocateGUIDs(); group.InsertEffect(effect, 0); AddNewSubAsset(group, storeUndoState); return(group); }
public void CreateDefaultAsset(string path) { masterGroup = new AudioMixerGroupController(this); masterGroup.name = "Master"; masterGroup.PreallocateGUIDs(); var attenuation = new AudioMixerEffectController("Attenuation"); attenuation.PreallocateGUIDs(); masterGroup.InsertEffect(attenuation, 0); AudioMixerSnapshotController snapshot = new AudioMixerSnapshotController(this); snapshot.name = "Snapshot"; this.snapshots = new AudioMixerSnapshotController[] { snapshot }; this.startSnapshot = snapshot; Object[] objectArray = { this, masterGroup, attenuation, snapshot }; AssetDatabase.CreateAssetFromObjects(objectArray, path); }
private AudioMixerGroupController DuplicateGroupRecurse(AudioMixerGroupController sourceGroup) { AudioMixerGroupController group = new AudioMixerGroupController((AudioMixer) this); List<AudioMixerEffectController> effectControllerList = new List<AudioMixerEffectController>(); foreach (AudioMixerEffectController effect in sourceGroup.effects) effectControllerList.Add(this.CopyEffect(effect)); List<AudioMixerGroupController> mixerGroupControllerList = new List<AudioMixerGroupController>(); foreach (AudioMixerGroupController child in sourceGroup.children) mixerGroupControllerList.Add(this.DuplicateGroupRecurse(child)); group.name = sourceGroup.name + " - Copy"; group.PreallocateGUIDs(); group.effects = effectControllerList.ToArray(); group.children = mixerGroupControllerList.ToArray(); group.solo = sourceGroup.solo; group.mute = sourceGroup.mute; group.bypassEffects = sourceGroup.bypassEffects; foreach (AudioMixerSnapshotController snapshot in this.snapshots) { float num; if (snapshot.GetValue(sourceGroup.GetGUIDForVolume(), out num)) snapshot.SetValue(group.GetGUIDForVolume(), num); if (snapshot.GetValue(sourceGroup.GetGUIDForPitch(), out num)) snapshot.SetValue(group.GetGUIDForPitch(), num); } AssetDatabase.AddObjectToAsset((UnityEngine.Object) group, (UnityEngine.Object) this); if (this.CurrentViewContainsGroup(sourceGroup.groupID)) group.controller.AddGroupToCurrentView(group); return group; }
public AudioMixerGroupController CreateNewGroup(string name, bool storeUndoState) { AudioMixerGroupController mixerGroupController = new AudioMixerGroupController((AudioMixer) this); mixerGroupController.name = name; mixerGroupController.PreallocateGUIDs(); AudioMixerEffectController effect = new AudioMixerEffectController("Attenuation"); this.AddNewSubAsset((UnityEngine.Object) effect, storeUndoState); effect.PreallocateGUIDs(); mixerGroupController.InsertEffect(effect, 0); this.AddNewSubAsset((UnityEngine.Object) mixerGroupController, storeUndoState); return mixerGroupController; }
private AudioMixerGroupController DuplicateGroupRecurse(AudioMixerGroupController sourceGroup) { AudioMixerGroupController audioMixerGroupController = new AudioMixerGroupController(this); List<AudioMixerEffectController> list = new List<AudioMixerEffectController>(); AudioMixerEffectController[] effects = sourceGroup.effects; for (int i = 0; i < effects.Length; i++) { AudioMixerEffectController sourceEffect = effects[i]; list.Add(this.CopyEffect(sourceEffect)); } List<AudioMixerGroupController> list2 = new List<AudioMixerGroupController>(); AudioMixerGroupController[] children = sourceGroup.children; for (int j = 0; j < children.Length; j++) { AudioMixerGroupController sourceGroup2 = children[j]; list2.Add(this.DuplicateGroupRecurse(sourceGroup2)); } audioMixerGroupController.name = sourceGroup.name + " - Copy"; audioMixerGroupController.PreallocateGUIDs(); audioMixerGroupController.effects = list.ToArray(); audioMixerGroupController.children = list2.ToArray(); audioMixerGroupController.solo = sourceGroup.solo; audioMixerGroupController.mute = sourceGroup.mute; audioMixerGroupController.bypassEffects = sourceGroup.bypassEffects; AudioMixerSnapshotController[] snapshots = this.snapshots; for (int k = 0; k < snapshots.Length; k++) { AudioMixerSnapshotController audioMixerSnapshotController = snapshots[k]; float value; if (audioMixerSnapshotController.GetValue(sourceGroup.GetGUIDForVolume(), out value)) { audioMixerSnapshotController.SetValue(audioMixerGroupController.GetGUIDForVolume(), value); } if (audioMixerSnapshotController.GetValue(sourceGroup.GetGUIDForPitch(), out value)) { audioMixerSnapshotController.SetValue(audioMixerGroupController.GetGUIDForPitch(), value); } } AssetDatabase.AddObjectToAsset(audioMixerGroupController, this); if (this.CurrentViewContainsGroup(sourceGroup.groupID)) { audioMixerGroupController.controller.AddGroupToCurrentView(audioMixerGroupController); } return audioMixerGroupController; }
public AudioMixerGroupController CreateNewGroup(string name, bool storeUndoState) { AudioMixerGroupController audioMixerGroupController = new AudioMixerGroupController(this); audioMixerGroupController.name = name; audioMixerGroupController.PreallocateGUIDs(); AudioMixerEffectController audioMixerEffectController = new AudioMixerEffectController("Attenuation"); this.AddNewSubAsset(audioMixerEffectController, storeUndoState); audioMixerEffectController.PreallocateGUIDs(); audioMixerGroupController.InsertEffect(audioMixerEffectController, 0); this.AddNewSubAsset(audioMixerGroupController, storeUndoState); return audioMixerGroupController; }