void CreateHierarchy() { #if UNITY_EDITOR foreach (AudioClip audioClip in audioClips) { string audioClipPath = UnityEditor.AssetDatabase.GetAssetPath(audioClip).TrimStart(("Assets/Resources/" + audioClipsPath).ToCharArray()); string audioClipDirectory = Path.GetDirectoryName(audioClipPath); GameObject parent = GetOrAddFolder(audioClipDirectory); GameObject child = audioPlayer.gameObject.FindChildRecursive(audioClip.name); if (child == null) { child = new GameObject(audioClip.name); AudioOptions options = child.GetOrAddComponent <AudioOptions>(); AudioSource source = options.GetOrAddComponent <AudioSource>(); source.playOnAwake = false; source.clip = audioClip; options.audioInfo = new AudioInfo(source, options, audioPlayer); options.hierarchyManager = this; options.audioPlayer = audioPlayer; } child.transform.parent = parent.transform; child.transform.Reset(); } #endif }
public override void OnHierarchyWindowItemGUI(int instanceid, Rect selectionrect) { #if UNITY_EDITOR Texture icon = UnityEditor.EditorGUIUtility.ObjectContent(null, typeof(AudioSource)).image; GameObject gameObject = UnityEditor.EditorUtility.InstanceIDToObject(instanceid) as GameObject; if (gameObject == null || icon == null) { return; } float width = selectionrect.width; selectionrect.width = 30; selectionrect.height = 16; AudioOptions audioOptions = gameObject.GetComponent <AudioOptions>(); if (audioOptions == null || audioOptions.audioInfo == null) { return; } AudioInfo audioInfo = audioOptions.audioInfo; selectionrect.x = width - 3 + gameObject.GetHierarchyDepth() * 14; selectionrect.height += 1; GUIStyle style = new GUIStyle("MiniToolbarButtonLeft"); style.fixedHeight += 1; style.contentOffset = new Vector2(-4, 0); style.clipping = TextClipping.Overflow; if (GUI.Button(selectionrect, icon, style)) { UnityEditor.Selection.activeObject = gameObject; if (previewAudioSource != null) { previewAudioSource.gameObject.Remove(); } previewAudioSource = audioInfo.Source.PlayOnListener(); if (previewAudioSource != null) { audioInfo.audioPlayer.itemManager.SetAudioSource(previewAudioSource, audioInfo); routine = DestroyAfterPlaying(previewAudioSource); } } else if (Event.current.isMouse && Event.current.type == EventType.mouseDown) { if (previewAudioSource != null) { previewAudioSource.gameObject.Remove(); } routine = null; } #endif }
public AudioInfo(float fadeIn, AnimationCurve fadeInCurve, float fadeOut, AnimationCurve fadeOutCurve, float randomVolume, float randomPitch, bool doNotKill, AudioSource source, AudioOptions audioOptions, AudioPlayer audioPlayer) { this.fadeIn = fadeIn; this.fadeInCurve = fadeInCurve; this.fadeOut = fadeOut; this.fadeOutCurve = fadeOutCurve; this.randomVolume = randomVolume; this.randomPitch = randomPitch; this.doNotKill = doNotKill; this.source = source; this.audioOptions = audioOptions; this.audioPlayer = audioPlayer; }
public override void OnInspectorGUI() { audioOptions = (Magicolo.AudioTools.AudioOptions)target; audioInfo = audioOptions.audioInfo; audioInfoProperty = serializedObject.FindProperty("audioInfo"); clip = audioOptions.Source.clip; Begin(); ShowFadeIn(); ShowFadeInCurve(); ShowFadeOut(); ShowFadeOutCurve(); EditorGUILayout.PropertyField(audioInfoProperty.FindPropertyRelative("randomVolume")); EditorGUILayout.PropertyField(audioInfoProperty.FindPropertyRelative("randomPitch")); EditorGUILayout.PropertyField(audioInfoProperty.FindPropertyRelative("doNotKill")); ShowClipInfo(); End(); }
public AudioInfo(AudioSource source, AudioOptions audioOptions, AudioPlayer audioPlayer) { this.source = source; this.audioOptions = audioOptions; this.audioPlayer = audioPlayer; }