public void TestOverlap() { var loc1 = new SequenceRegion() { Seqname = "2", Start = 12227067, End = 12227087 }; var loc2 = new SequenceRegion() { Seqname = "1", Start = 12227065, End = 12227076 }; //different chromosomes Assert.IsFalse(loc1.Overlap(loc2, 0.0)); loc1.Seqname = "1"; Assert.IsTrue(loc1.Overlap(loc2, 0.0)); loc1.Start = loc2.End + 1; Assert.IsFalse(loc1.Overlap(loc2, 0.0)); }
private int ReadCSV_OnBeatAction(System.IO.TextReader reader, int line_number) { string line; SequenceRegion region = new SequenceRegion(); List <OnBeatActionInfo> sequence = new List <OnBeatActionInfo>(); while ((line = reader.ReadLine()) != null) { line_number++; string[] lineCells = line.Split(','); switch (lineCells[0]) { case "regionParameters": region.name = lineCells[1]; region.totalBeatCount = float.Parse(lineCells[2]); region.repeatPosition = float.Parse(lineCells[3]); break; case "scoringUnitSequenceRegion-End": { region.triggerBeatTiming = m_onBeatActionInfoRegionOffset; songInfo.onBeatActionRegionSequence.Add(region); for (float repeatOffest = 0; repeatOffest < region.totalBeatCount; repeatOffest += region.repeatPosition) { foreach (OnBeatActionInfo onBeatActionInfo in sequence) { if (onBeatActionInfo.triggerBeatTiming + repeatOffest > region.totalBeatCount) { break; } OnBeatActionInfo cloned = onBeatActionInfo.GetClone() as OnBeatActionInfo; cloned.triggerBeatTiming += m_onBeatActionInfoRegionOffset + repeatOffest; songInfo.onBeatActionSequence.Add(cloned); } } m_onBeatActionInfoRegionOffset += region.totalBeatCount; return(line_number); } // ↑已经有 return 所以这个 break 不会被执行 //break; case "SingleShot": { OnBeatActionInfo onBeatActionInfo = new OnBeatActionInfo(); if (lineCells[2] != "") { onBeatActionInfo.playerActionType = (PlayerActionEnum)System.Enum.Parse(typeof(PlayerActionEnum), lineCells[2]); } else { onBeatActionInfo.playerActionType = PlayerActionEnum.HeadBanging; } onBeatActionInfo.triggerBeatTiming = float.Parse(lineCells[1]); // 记录下定义的行号用于调试 onBeatActionInfo.line_number = line_number; sequence.Add(onBeatActionInfo); } break; } ; } Debug.LogError("ScoringUnitSequenceRegion.ReadCSV: ParseError - missing ScoringUnitSequenceRegion-End"); return(line_number); }
private List<SequenceRegion> InitLocs() { loc1 = new SequenceRegion() { Seqname = "2", Start = 12227067, End = 12227087 }; loc2 = new SequenceRegion() { Seqname = "1", Start = 12227065, End = 12227076 }; var locs = new List<SequenceRegion>(new[] { loc1, loc2 }); return locs; }
/// <summary> /// 读入谱面信息 /// </summary> /// <param name="reader"></param> /// <param name="line_number"></param> /// <returns></returns> private int ReadCSV_OnBeatAction(System.IO.TextReader reader, int line_number, int _iIndex) { string line; SequenceRegion region = new SequenceRegion(); List <OnBeatActionInfo> sequence = new List <OnBeatActionInfo>(); while ((line = reader.ReadLine()) != null) { line_number++; Debug.Log("line_number :" + _iIndex + " " + line_number); string[] lineCells = line.Split(','); switch (lineCells[0]) { case "regionParameters": region.name = lineCells[1]; //-区域的名字调试用 region.totalBeatCount = float.Parse(lineCells[2]); //-一共多少拍 region.repeatPosition = float.Parse(lineCells[3]); //-部分重复单位(节拍数) break; case "scoringUnitSequenceRegion-End": //-区域结束,应该只有一块 { region.triggerBeatTiming = m_onBeatActionInfoRegionOffset[_iIndex - 1]; songInfo.onBeatActionRegionSequence.Add(region); for (float repeatOffest = 0; repeatOffest < region.totalBeatCount; repeatOffest += region.repeatPosition) { foreach (OnBeatActionInfo onBeatActionInfo in sequence) { if (onBeatActionInfo.triggerBeatTiming + repeatOffest > region.totalBeatCount) { break; } OnBeatActionInfo cloned = onBeatActionInfo.GetClone() as OnBeatActionInfo; cloned.triggerBeatTiming += m_onBeatActionInfoRegionOffset[_iIndex - 1] + repeatOffest; songInfo.onBeatActionSequence[_iIndex - 1].Add(cloned); } } m_onBeatActionInfoRegionOffset[_iIndex - 1] += region.totalBeatCount; } return(line_number); // 因为↑有return,所以这个break不被执行. //break; case "SingleShot": { OnBeatActionInfo onBeatActionInfo = new OnBeatActionInfo(); if (lineCells[2] != "") { onBeatActionInfo.playerActionType = (PlayerActionEnum)System.Enum.Parse(typeof(PlayerActionEnum), lineCells[2]); } else //-默认就是HeadBanging { onBeatActionInfo.playerActionType = PlayerActionEnum.HeadBanging; } Debug.Log("triggerBeatTiming :" + float.Parse(lineCells[1])); onBeatActionInfo.triggerBeatTiming = float.Parse(lineCells[1]); //-记录行号 onBeatActionInfo.line_number = line_number; sequence.Add(onBeatActionInfo); } break; } ; } Debug.LogError("ScoringUnitSequenceRegion.ReadCSV: ParseError - missing ScoringUnitSequenceRegion-End"); return(line_number); }