Example #1
0
        private bool TryToAddHeldNoteLevelElement(HeldNote heldNote, LevelElementType type)
        {
            LevelElementPlacement placement = LevelElementPlacement.CreateProlongedSynchro(
                type, heldNote.StartTime, heldNote.EndTime);

            return(TryToAddLevelElement(placement));
        }
 public void Init(HeldNote heldNote)
 {
     _meshFilter             = GetComponent <MeshFilter>();
     _meshFilter.mesh        = heldNote.GenerateTrackMesh(10);
     transform.localScale    = new Vector3(1, 1, (float)heldNote.Time.ApproachRateMultiplier); //scale mesh to approach rate (temp. solution)
     transform.localPosition = new Vector3(0, -0.005f, 0);                                     //slightly below track points
 }
Example #3
0
        private void InitTrackMesh(HeldNote heldNote)
        {
            var noteMesh = Instantiate(TrackMeshPrefab);                      //new generic track mesh

            noteMesh.transform.parent        = transform;                     //parent to us
            noteMesh.transform.localPosition = new Vector3(0, 0, 0);          //mesh will hold further offsets
            _trackController = noteMesh.GetComponent <TrackMeshController>(); //store this component for later updates
            _trackController.Init(heldNote);                                  //generate mesh
        }
Example #4
0
        private void TryToAddHeldNote(HeldNote heldNote)
        {
            List <LevelElementType> types = distributionManager.GetOrderedHeldNoteLevelElementTypes();

            foreach (LevelElementType type in types)
            {
                if (TryToAddHeldNoteLevelElement(heldNote, type))
                {
                    break;
                }
            }
        }
Example #5
0
    public void OnMelody(Note note)
    {
        TryChangingSize();
        HeldNote heldNote = note as HeldNote;

        if (heldNote != null)
        {
            if (heldNote.LoopIndex > 0)
            {
                ReverseRotation();
            }
            if (musicManager.GetComponent <AudioSource>().pitch != 0)
            {
                TrySpinning(heldNote.HoldTime / musicManager.GetComponent <AudioSource>().pitch);
            }
        }
    }
Example #6
0
    private void ConvertBeatmapToArray()
    {
        if (beatmap != null)
        {
            notes.Clear();
            string   times = beatmap.text.Substring(beatmap.text.IndexOf("[HitObjects]"));
            string[] lines = times.Split('\n');
            //intentionally skipping index zero and last index
            for (int i = 1; i < lines.Length - 1; i++)
            {
                string   line       = lines[i];
                string[] splitLine  = line.Split(',');
                float    time       = float.Parse(splitLine[2]) / 1000.0f + offset;
                float    timeOfNext = float.MaxValue;
                if (i < lines.Length - 2)
                {
                    timeOfNext = float.Parse(lines[i + 1].Split(',')[2]) / 1000.0f + offset;
                }

                bool isMajor = int.Parse(splitLine[3]) >= 5;
                bool isHeld  = splitLine[3] == "2" || splitLine[3] == "6";
                if (!isHeld)
                {
                    notes.Add(new Note(time, timeOfNext, isMajor));
                }
                else
                {
                    float length        = float.Parse(splitLine[7]) * HeldNoteTimeMultiplier / 1000.0f;
                    int   numberOfLoops = int.Parse(splitLine[6]);
                    for (int ind = 0; ind < numberOfLoops; ind++)
                    {
                        HeldNote noteToAdd = new HeldNote(time, timeOfNext, length, numberOfLoops, ind, isMajor);
                        notes.Add(noteToAdd);
                    }
                }
            }
        }
    }