示例#1
0
        private void PrepareFirstMusicCue(MusicTreeAsset musicTree)
        {
            nextCueNode = musicTreeRuntime.SelectNextPatch();
            double initTime = musicController.Init(nextCueNode.clip);

            counter.UpdateClipVariables(initTime, musicTree.defaultBPM, musicController.Frequency);
        }
示例#2
0
        void OnGUI()
        {
            EditorGUI.BeginChangeCheck();

            treeFieldValue = EditorGUILayout.ObjectField(treeFieldValue, typeof(MusicTreeAsset), false) as MusicTreeAsset;
            if (EditorGUI.EndChangeCheck())
            {
                MusicTreeEditorManager.Instance.OnSelectedTreeChanged(treeFieldValue);
            }

            if (drawer == null)
            {
                return;
            }

            EditorGUILayout.BeginHorizontal();
            DrawSidebar();

            using (var scrollview = new EditorGUILayout.ScrollViewScope(scrollPos))
            {
                drawer.Update();
                scrollPos = scrollview.scrollPosition;
            }
            EditorGUILayout.EndHorizontal();
        }
        public static float DurationInBeats(CueMusicTreeNode node, MusicTreeAsset tree)
        {
            int   bpm    = BPMFor(node, tree);
            float result = node.clip.length / 60 * bpm;

            result = RoundBeat(result);
            return(result);
        }
示例#4
0
 public void OnSelectedTreeChanged(MusicTreeAsset a)
 {
     TreeAsset = a;
     if (SelectedTreeAssetChanged != null)
     {
         SelectedTreeAssetChanged(TreeAsset);
     }
     OnChangesToTreeHierarchy();
 }
示例#5
0
        public static float DurationInBeats(CueMusicTreeNode node, MusicTreeAsset tree)
        {
            int   bpm    = BPMFor(node, tree);
            float result = node.clip == null ? 0 : node.clip.length / 60 * bpm;
            float f      = result % .25f;

            result -= f;
            if (f > .125)
            {
                result += .25f;
            }
            return(result);
        }
示例#6
0
        public AmusiEngine(MusicTreeAsset musicTree, AudioSource[] audioSources)
        {
            this.musicTree = musicTree;

            Instance = this;
            if (InstanceChanged != null)
            {
                InstanceChanged();
            }

            InitializeMusicController(audioSources);

            counter          = new BeatCounter();
            musicTreeRuntime = CachedMusicTree.CreateFrom(musicTree);
            checker          = new NoteEventChecker(musicTreeRuntime);

            PrepareFirstMusicCue(musicTree);
        }
 public static int BPMFor(CueMusicTreeNode node, MusicTreeAsset tree)
 {
     return(node.useCustomBPM ? node.customBPM : tree.defaultBPM);
 }
示例#8
0
 public static void CreateEmptyTree()
 {
     MusicTreeAsset.CreateEmpty();
 }