private void AddNewSoundState(JTimelineSound line, JSoundTrack track, float time, string stateName, AudioClip clip) { controlID = GUIUtility.GetControlID(track.GetInstanceID(), FocusType.Passive); var clipData = ScriptableObject.CreateInstance <JSoundClipData>(); clipData.TargetObject = line.AffectedObject.gameObject; clipData.StartTime = time; if (clip == null) { if (line.OrientationClip != null) { clipData.Clip = line.OrientationClip; } } else { clipData.Clip = clip; } if (clipData.Clip == null) { SequenceWindow.ShowNotification(new GUIContent("AudioClip is NULL")); } if (clipData.Clip != null) { clipData.SoundDuration = clipData.Clip.length; clipData.PlaybackDuration = clipData.SoundDuration; clipData.Track = track; track.AddClip(clipData); } if (timelineClipRenderDataMap.ContainsKey(track)) { var cachedData = ScriptableObject.CreateInstance <JClipRenderData>(); cachedData.ClipData = clipData; timelineClipRenderDataMap[track].Add(cachedData); } else { var cachedData = ScriptableObject.CreateInstance <JClipRenderData>(); cachedData.ClipData = clipData; List <JClipRenderData> list = new List <JClipRenderData>(); list.Add(cachedData); timelineClipRenderDataMap.Add(track, list); } }