void fakeCreation(Song s) { var theBPMCounter = 1; var theSTOPCounter = 0; double mesurecount = 0; double prevmesure = 0; double timecounter = 0; double timeBPM = 0; double timestop = 0; double timetotal = 0; float prec = 0.001f; //stepBySecondsAverage double timestart = -10f; double stoptime = 0; int countStep = 0; double stepbysecAv = 0f; //stepmax double maxStepPerSeconds = 0f; int numberStepBetweenTwoBeat = 0; double timestartMax = -10f; //double maxLenght = 0f; //longestStream double lenghtStream = 0f; double maxLenghtStream = 0f; double speedOfMaxStream = 0f; double previousSpeed = 0f; //Footswitch int numberOfFootswitch = 0; int[] casevalidate = new int[4]; //left down up right casevalidate[0] = 0; casevalidate[1] = 0; casevalidate[2] = 0; casevalidate[3] = 0; //Cross int numberOfCross = 0; int[] caseCrossvalidate = new int[4]; //left down up right caseCrossvalidate[0] = 0; caseCrossvalidate[1] = 0; caseCrossvalidate[2] = 0; caseCrossvalidate[3] = 0; //Hands int numberOfHands = 0; //freeze var freezed = new int[4]; freezed[0] = 0; freezed[1] = 0; freezed[2] = 0; freezed[3] = 0; //graph var listNumberStep = new Dictionary<double, double>(); foreach(var mesure in s.stepchart){ for(int beat=0;beat<mesure.Count;beat++){ #region BPMChange var bps = s.getBPS(s.bpms.ElementAt(theBPMCounter-1).Value); if(theBPMCounter < s.bpms.Count && theSTOPCounter < s.stops.Count){ while((theBPMCounter < s.bpms.Count && theSTOPCounter < s.stops.Count) && (s.mesureBPMS.ElementAt(theBPMCounter) < mesurecount - prec || s.mesureSTOPS.ElementAt(theSTOPCounter) < mesurecount - prec)){ if(s.mesureBPMS.ElementAt(theBPMCounter) < s.mesureSTOPS.ElementAt(theSTOPCounter)){ timecounter += (s.mesureBPMS.ElementAt(theBPMCounter) - prevmesure)/bps; timeBPM += timecounter; timecounter = 0; prevmesure = s.mesureBPMS.ElementAt(theBPMCounter); theBPMCounter++; bps = s.getBPS(s.bpms.ElementAt(theBPMCounter-1).Value); //Debug.Log("And bpm change before / bpm"); }else if(s.mesureBPMS.ElementAt(theBPMCounter) > s.mesureSTOPS.ElementAt(theSTOPCounter)){ timestop += s.stops.ElementAt(theSTOPCounter).Value; theSTOPCounter++; //Debug.Log("And stop change before"); }else{ timecounter += (s.mesureBPMS.ElementAt(theBPMCounter) - prevmesure)/bps; timeBPM += timecounter; timecounter = 0; prevmesure = s.mesureBPMS.ElementAt(theBPMCounter); theBPMCounter++; bps = s.getBPS(s.bpms.ElementAt(theBPMCounter-1).Value); timestop += s.stops.ElementAt(theSTOPCounter).Value; theSTOPCounter++; //Debug.Log("And bpm change before"); //Debug.Log("And stop change before"); } } }else if(theBPMCounter < s.bpms.Count){ while((theBPMCounter < s.bpms.Count) && s.mesureBPMS.ElementAt(theBPMCounter) < mesurecount - prec){ timecounter += (s.mesureBPMS.ElementAt(theBPMCounter) - prevmesure)/bps; timeBPM += timecounter; timecounter = 0; prevmesure = s.mesureBPMS.ElementAt(theBPMCounter); theBPMCounter++; bps = s.getBPS(s.bpms.ElementAt(theBPMCounter-1).Value); } }else if(theSTOPCounter < s.stops.Count){ while((theSTOPCounter < s.stops.Count) && s.mesureSTOPS.ElementAt(theSTOPCounter) < mesurecount - prec){ timestop += s.stops.ElementAt(theSTOPCounter).Value; theSTOPCounter++; } } #endregion timecounter += (mesurecount - prevmesure)/bps; timetotal = timecounter + timeBPM + timestop; char[] note = mesure.ElementAt(beat).TrimStart(' ').Trim().ToCharArray(); if((beat*8f)%(mesure.Count) == 0){ var newMax = numberStepBetweenTwoBeat/(timetotal - timestartMax); if(!listNumberStep.ContainsKey(timetotal)){ listNumberStep.Add(timetotal, newMax); }else{ listNumberStep.Add(timetotal + 0.00001, newMax); } if(maxStepPerSeconds < newMax){ maxStepPerSeconds = newMax; } if(Mathf.Abs((float)(newMax - previousSpeed)) < 0.001f && numberStepBetweenTwoBeat > 0 && newMax > 4f){ lenghtStream += (timetotal - timestartMax); if(lenghtStream > maxLenghtStream){ speedOfMaxStream = newMax; maxLenghtStream = lenghtStream; } }else{ lenghtStream = 0; } previousSpeed = newMax; numberStepBetweenTwoBeat = 0; timestartMax = timetotal; } var barr = false; var barrstop = false; var iselected = -1; var doubleselection = false; var tripleselect = 0; for(int i =0;i<4; i++){ if(note[i] == '1'){ if(iselected == -1){ iselected = i; }else{ doubleselection = true; } tripleselect++; barr = true; }else if(note[i] == '2'){ barr = true; if(iselected == -1){ iselected = i; }else{ doubleselection = true; } freezed[i] = 1; }else if(note[i] == '3'){ freezed[i] = 0; barrstop = true; }else if(note[i] == '4'){ barr = true; if(iselected == -1){ iselected = i; }else{ doubleselection = true; } freezed[i] = 1; }else if(note[i] == 'M'){ barrstop = true; } } for(int i=0;i<4;i++){ if(freezed[i] == 1) tripleselect++; } if(tripleselect >= 3f){ numberOfHands++; } if(barr || barrstop){ stoptime = timetotal; } if(barr){ if(timestart == -10f) timestart = timetotal; countStep++; numberStepBetweenTwoBeat++; if(!doubleselection){ switch(iselected){ case 0: //fs if(((casevalidate[1] == 2 && casevalidate[2] == 0) || (casevalidate[2] == 2 && casevalidate[1] == 0)) && casevalidate[0] == 0 && casevalidate[3] == 1){ numberOfFootswitch++; casevalidate[0] = 1; casevalidate[1] = 0; casevalidate[2] = 0; casevalidate[3] = 0; }else{ casevalidate[0] = 1; casevalidate[1] = 0; casevalidate[2] = 0; casevalidate[3] = 0; } //cross if((caseCrossvalidate[0] == 0 && (((caseCrossvalidate[1] == 1 || caseCrossvalidate[1] == 2) && caseCrossvalidate[2] == 0) || (caseCrossvalidate[1] == 0 && (caseCrossvalidate[2] == 1 || caseCrossvalidate[2] == 2))) && caseCrossvalidate[3] == 1)){ numberOfCross++; caseCrossvalidate[0] = 1; caseCrossvalidate[1] = 0; caseCrossvalidate[2] = 0; caseCrossvalidate[3] = 0; }else{ caseCrossvalidate[0] = 1; caseCrossvalidate[1] = 0; caseCrossvalidate[2] = 0; caseCrossvalidate[3] = 0; } break; case 1: //fs if(((casevalidate[0] == 0 && casevalidate[3] == 1) || (casevalidate[0] == 1 && casevalidate[3] == 0)) && casevalidate[2] == 0 && casevalidate[1] < 2){ casevalidate[1]++; }else{ casevalidate[0] = 0; casevalidate[1] = 0; casevalidate[2] = 0; casevalidate[3] = 0; } //cross if((caseCrossvalidate[0] == 1 || caseCrossvalidate[3] == 1)){ if(caseCrossvalidate[0] == 1 && caseCrossvalidate[1] == 1 && caseCrossvalidate[2] == 2 && caseCrossvalidate[3] == 0){ caseCrossvalidate[2] = 0; } if(caseCrossvalidate[0] == 0 && caseCrossvalidate[1] == 1 && caseCrossvalidate[2] == 2 && caseCrossvalidate[3] == 1){ caseCrossvalidate[2] = 0; } caseCrossvalidate[1] = 2; if(caseCrossvalidate[2] == 2) caseCrossvalidate[2] = 1; }else{ caseCrossvalidate[0] = 0; caseCrossvalidate[1] = 0; caseCrossvalidate[2] = 0; caseCrossvalidate[3] = 0; } break; case 2: //fs if(((casevalidate[0] == 0 && casevalidate[3] == 1) || (casevalidate[0] == 1 && casevalidate[3] == 0)) && casevalidate[1] == 0 && casevalidate[2] < 2){ casevalidate[2]++; }else{ casevalidate[0] = 0; casevalidate[1] = 0; casevalidate[2] = 0; casevalidate[3] = 0; } //cross if((caseCrossvalidate[0] == 1 || caseCrossvalidate[3] == 1)){ if(caseCrossvalidate[0] == 1 && caseCrossvalidate[1] == 2 && caseCrossvalidate[2] == 1 && caseCrossvalidate[3] == 0){ caseCrossvalidate[1] = 0; } if(caseCrossvalidate[0] == 0 && caseCrossvalidate[1] == 2 && caseCrossvalidate[2] == 1 && caseCrossvalidate[3] == 1){ caseCrossvalidate[1] = 0; } caseCrossvalidate[2] = 2; if(caseCrossvalidate[1] == 2) caseCrossvalidate[1] = 1; }else{ caseCrossvalidate[0] = 0; caseCrossvalidate[1] = 0; caseCrossvalidate[2] = 0; caseCrossvalidate[3] = 0; } break; case 3: //fs if(((casevalidate[1] == 2 && casevalidate[2] == 0) || (casevalidate[2] == 2 && casevalidate[1] == 0)) && casevalidate[3] == 0 && casevalidate[0] == 1){ numberOfFootswitch++; casevalidate[0] = 0; casevalidate[1] = 0; casevalidate[2] = 0; casevalidate[3] = 1; }else{ casevalidate[0] = 0; casevalidate[1] = 0; casevalidate[2] = 0; casevalidate[3] = 1; } //cross if(caseCrossvalidate[0] == 1 && (( caseCrossvalidate[1] == 2 && caseCrossvalidate[2] == 0) || (caseCrossvalidate[1] == 0 && caseCrossvalidate[2] == 2) && caseCrossvalidate[3] == 0)){ numberOfCross++; caseCrossvalidate[0] = 0; caseCrossvalidate[1] = 0; caseCrossvalidate[2] = 0; caseCrossvalidate[3] = 1; }else{ caseCrossvalidate[0] = 0; caseCrossvalidate[1] = 0; caseCrossvalidate[2] = 0; caseCrossvalidate[3] = 1; } break; } }else{ casevalidate[0] = 0; casevalidate[1] = 0; casevalidate[2] = 0; casevalidate[3] = 0; caseCrossvalidate[0] = 0; caseCrossvalidate[1] = 0; caseCrossvalidate[2] = 0; caseCrossvalidate[3] = 0; } } #region ChangeBPM if(theBPMCounter < s.bpms.Count){ if(Mathf.Abs((float)(s.mesureBPMS.ElementAt(theBPMCounter) - mesurecount)) < prec){ timeBPM += timecounter; timecounter = 0; theBPMCounter++; //Debug.Log("And bpm change"); } } if(theSTOPCounter < s.stops.Count){ if(Mathf.Abs((float)(s.mesureSTOPS.ElementAt(theSTOPCounter) - mesurecount)) < prec){ timestop += s.stops.ElementAt(theSTOPCounter).Value; theSTOPCounter++; //Debug.Log("And stop"); } } #endregion prevmesure = mesurecount; mesurecount += (4f/(float)mesure.Count); } } stepbysecAv = (double)countStep/(stoptime - timestart); s.duration = stoptime; s.stepPerSecondAverage = stepbysecAv; s.stepPerSecondMaximum = maxStepPerSeconds; //s.timeMaxStep = maxLenght; s.stepPerSecondStream = speedOfMaxStream; s.longestStream = maxLenghtStream; s.numberOfFootswitch = numberOfFootswitch; s.numberOfCross = numberOfCross - numberOfFootswitch; s.numberOfHands = numberOfHands; s.intensityGraph = new float[100]; var theamountOfTime = s.duration/100f; double thetotaltime = 0; double themoy = 0; double thecountmoy = 0; var countintensity = 0; double theprevioustimetotal = 0; for(int i=0;i<listNumberStep.Count && thetotaltime < s.duration;i++){ if((thetotaltime - theprevioustimetotal) >= theamountOfTime){ var thevalue = themoy/thecountmoy; s.intensityGraph[countintensity] = (float)thevalue; countintensity++; thecountmoy = 0; themoy = 0; theprevioustimetotal = thetotaltime; }else{ themoy += listNumberStep.ElementAt(i).Value; thecountmoy++; thetotaltime = listNumberStep.ElementAt(i).Key; } } }
//Create the chart void createTheChart(Song s) { var ypos = 0f; arrowLeftList = new List<Arrow>(); arrowUpList = new List<Arrow>(); arrowDownList = new List<Arrow>(); arrowRightList = new List<Arrow>(); mineLeftList = new List<Arrow>(); mineUpList = new List<Arrow>(); mineDownList = new List<Arrow>(); mineRightList = new List<Arrow>(); var theBPMCounter = 1; var theSTOPCounter = 0; double mesurecount = 0; double prevmesure = 0; double timecounter = 0; double timeBPM = 0; double timestop = 0; double timetotal = 0; float prec = 0.001f; var ArrowFreezed = new Arrow[4]; Bumps = new List<double>(); foreach(var mesure in s.stepchart){ for(int beat=0;beat<mesure.Count;beat++){ var bps = s.getBPS(s.bpms.ElementAt(theBPMCounter-1).Value); if(theBPMCounter < s.bpms.Count && theSTOPCounter < s.stops.Count){ while((theBPMCounter < s.bpms.Count && theSTOPCounter < s.stops.Count) && (s.mesureBPMS.ElementAt(theBPMCounter) < mesurecount - prec || s.mesureSTOPS.ElementAt(theSTOPCounter) < mesurecount - prec)){ if(s.mesureBPMS.ElementAt(theBPMCounter) < s.mesureSTOPS.ElementAt(theSTOPCounter)){ timecounter += (s.mesureBPMS.ElementAt(theBPMCounter) - prevmesure)/bps; timeBPM += timecounter; timecounter = 0; prevmesure = s.mesureBPMS.ElementAt(theBPMCounter); theBPMCounter++; bps = s.getBPS(s.bpms.ElementAt(theBPMCounter-1).Value); //Debug.Log("And bpm change before / bpm"); }else if(s.mesureBPMS.ElementAt(theBPMCounter) > s.mesureSTOPS.ElementAt(theSTOPCounter)){ timestop += s.stops.ElementAt(theSTOPCounter).Value; theSTOPCounter++; //Debug.Log("And stop change before"); }else{ timecounter += (s.mesureBPMS.ElementAt(theBPMCounter) - prevmesure)/bps; timeBPM += timecounter; timecounter = 0; prevmesure = s.mesureBPMS.ElementAt(theBPMCounter); theBPMCounter++; bps = s.getBPS(s.bpms.ElementAt(theBPMCounter-1).Value); timestop += s.stops.ElementAt(theSTOPCounter).Value; theSTOPCounter++; //Debug.Log("And bpm change before"); //Debug.Log("And stop change before"); } } }else if(theBPMCounter < s.bpms.Count){ while((theBPMCounter < s.bpms.Count) && s.mesureBPMS.ElementAt(theBPMCounter) < mesurecount - prec){ timecounter += (s.mesureBPMS.ElementAt(theBPMCounter) - prevmesure)/bps; timeBPM += timecounter; timecounter = 0; prevmesure = s.mesureBPMS.ElementAt(theBPMCounter); theBPMCounter++; bps = s.getBPS(s.bpms.ElementAt(theBPMCounter-1).Value); } }else if(theSTOPCounter < s.stops.Count){ while((theSTOPCounter < s.stops.Count) && s.mesureSTOPS.ElementAt(theSTOPCounter) < mesurecount - prec){ timestop += s.stops.ElementAt(theSTOPCounter).Value; theSTOPCounter++; } } timecounter += (mesurecount - prevmesure)/bps; timetotal = timecounter + timeBPM + timestop; if((beat)%(mesure.Count/4) == 0) Bumps.Add(timetotal); var previousnote = mesure.ElementAt(beat).Trim(); //Traitement if(displayValue[0]){ //No mine previousnote = previousnote.Replace('M', '0'); } if(displayValue[1]){ //No jump if(previousnote.Where( c => c == '1' || c == '2' || c == '4').Count() == 2){ var done = false; for(int i=0; i<4; i++){ if(previousnote.ElementAt(i) == '1' || previousnote.ElementAt(i) == '2' || previousnote.ElementAt(i) == '4'){ if(done){ previousnote = previousnote.Remove(i, 1); previousnote = previousnote.Insert(i,"0"); }else{ done = true; } } } } } if(displayValue[2]){ //No hands if(previousnote.Where( c => c == '1' || c == '2' || c == '4').Count() >= 3){ var done = false; for(int i=0; i<4; i++){ if(previousnote.ElementAt(i) == '1' || previousnote.ElementAt(i) == '2' || previousnote.ElementAt(i) == '4'){ if(done){ previousnote = previousnote.Remove(i, 1); previousnote = previousnote.Insert(i,"0"); }else{ done = true; } } } } } if(displayValue[3]){ //No freeze previousnote = previousnote.Replace('2', '1'); previousnote = previousnote.Replace('4', '1'); previousnote = previousnote.Replace('3', '0'); } char[] note = previousnote.ToCharArray(); var listNeighboors = new List<Arrow>(); var barr = false; for(int i =0;i<4; i++){ if(note[i] == '1'){ barr = true; var goArrow = (GameObject) Instantiate(arrow, new Vector3(i*2, -ypos, 0f), arrow.transform.rotation); if(DataManager.Instance.skinSelected == 1 || DataManager.Instance.skinSelected == 3){ for(int j=0; j<goArrow.transform.childCount;j++){ if(goArrow.transform.GetChild(j).name.Contains("Deco")){ goArrow.transform.GetChild(j).renderer.material.color = chooseColor(beat + 1, mesure.Count); } } }else{ goArrow.renderer.material.color = chooseColor(beat + 1, mesure.Count); } var theArrow = new Arrow(goArrow, ArrowType.NORMAL, timetotal); switch(i){ case 0: if(DataManager.Instance.skinSelected == 1){ theArrow.goArrow.transform.Rotate(0f, 0f, 90f); }else if(DataManager.Instance.skinSelected == 3){ theArrow.goArrow.transform.FindChild("RotationCenter").Rotate(0f, 0f, 90f); } theArrow.arrowPos = ArrowPosition.LEFT; arrowLeftList.Add(theArrow); break; case 1: if(DataManager.Instance.skinSelected == 1){ theArrow.goArrow.transform.Rotate(0f, 0f, 180f); }else if(DataManager.Instance.skinSelected == 3){ theArrow.goArrow.transform.FindChild("RotationCenter").Rotate(0f, 0f, 180f); } theArrow.arrowPos = ArrowPosition.DOWN; arrowDownList.Add(theArrow); break; case 2: theArrow.arrowPos = ArrowPosition.UP; arrowUpList.Add(theArrow); break; case 3: if(DataManager.Instance.skinSelected == 1){ theArrow.goArrow.transform.Rotate(0f, 0f, -90f); }else if(DataManager.Instance.skinSelected == 3){ theArrow.goArrow.transform.FindChild("RotationCenter").Rotate(0f, 0f, -90f); } theArrow.arrowPos = ArrowPosition.RIGHT; arrowRightList.Add(theArrow); break; } listNeighboors.Add(theArrow); goArrow.SetActiveRecursively(false); gameObject.GetComponent<ManageGameObject>().Add(timetotal, goArrow); //barrow = true; }else if(note[i] == '2'){ barr = true; var goArrow = (GameObject) Instantiate(arrow, new Vector3(i*2, -ypos, 0f), arrow.transform.rotation); if(DataManager.Instance.skinSelected == 1 || DataManager.Instance.skinSelected == 3){ for(int j=0; j<goArrow.transform.childCount;j++){ if(goArrow.transform.GetChild(j).name.Contains("Deco")){ goArrow.transform.GetChild(j).renderer.material.color = chooseColor(beat + 1, mesure.Count); } } }else{ goArrow.renderer.material.color = chooseColor(beat + 1, mesure.Count); } var theArrow = new Arrow(goArrow, ArrowType.FREEZE, timetotal); ArrowFreezed[i] = theArrow; switch(i){ case 0: if(DataManager.Instance.skinSelected == 1){ theArrow.goArrow.transform.Rotate(0f, 0f, 90f); }else if(DataManager.Instance.skinSelected == 3){ theArrow.goArrow.transform.FindChild("RotationCenter").Rotate(0f, 0f, 90f); } theArrow.arrowPos = ArrowPosition.LEFT; arrowLeftList.Add(theArrow); break; case 1: if(DataManager.Instance.skinSelected == 1){ theArrow.goArrow.transform.Rotate(0f, 0f, 180f); }else if(DataManager.Instance.skinSelected == 3){ theArrow.goArrow.transform.FindChild("RotationCenter").Rotate(0f, 0f, 180f); } theArrow.arrowPos = ArrowPosition.DOWN; arrowDownList.Add(theArrow); break; case 2: theArrow.arrowPos = ArrowPosition.UP; arrowUpList.Add(theArrow); break; case 3: if(DataManager.Instance.skinSelected == 1){ theArrow.goArrow.transform.Rotate(0f, 0f, -90f); }else if(DataManager.Instance.skinSelected == 3){ theArrow.goArrow.transform.FindChild("RotationCenter").Rotate(0f, 0f, -90f); } theArrow.arrowPos = ArrowPosition.RIGHT; arrowRightList.Add(theArrow); break; } listNeighboors.Add(theArrow); goArrow.SetActiveRecursively(false); GetComponent<ManageGameObject>().Add(timetotal, goArrow); }else if(note[i] == '3'){ barr = true; var theArrow = ArrowFreezed[i]; if(ArrowFreezed[i] != null){ var goFreeze = (GameObject) Instantiate(freeze, new Vector3(i*2, (theArrow.goArrow.transform.position.y + ((-ypos - theArrow.goArrow.transform.position.y)/2f)) , 1f), freeze.transform.rotation); goFreeze.transform.localScale = new Vector3(1f, -((-ypos - theArrow.goArrow.transform.position.y)/2f), 0.1f); if(DataManager.Instance.skinSelected == 1 || DataManager.Instance.skinSelected == 3){ for(int j=0; j<theArrow.goArrow.transform.childCount;j++){ if(theArrow.goArrow.transform.GetChild(j).name.Contains("Deco")){ goFreeze.transform.GetChild(0).renderer.material.color = theArrow.goArrow.transform.GetChild(j).renderer.material.color; j = theArrow.goArrow.transform.childCount; } } }else{ goFreeze.transform.GetChild(0).renderer.material.color = theArrow.goArrow.renderer.material.color; } theArrow.setArrowFreeze(timetotal, new Vector3(i*2,-ypos, 0f), goFreeze, null); } ArrowFreezed[i] = null; }else if(note[i] == '4'){ barr = true; var goArrow = (GameObject) Instantiate(arrow, new Vector3(i*2, -ypos, 0f), arrow.transform.rotation); if(DataManager.Instance.skinSelected == 1 || DataManager.Instance.skinSelected == 3){ for(int j=0; j<goArrow.transform.childCount;j++){ if(goArrow.transform.GetChild(j).name.Contains("Deco")){ goArrow.transform.GetChild(j).renderer.material.color = chooseColor(beat + 1, mesure.Count); } } }else{ goArrow.renderer.material.color = chooseColor(beat + 1, mesure.Count); } var theArrow = new Arrow(goArrow, ArrowType.ROLL, timetotal); ArrowFreezed[i] = theArrow; switch(i){ case 0: if(DataManager.Instance.skinSelected == 1){ theArrow.goArrow.transform.Rotate(0f, 0f, 90f); }else if(DataManager.Instance.skinSelected == 3){ theArrow.goArrow.transform.FindChild("RotationCenter").Rotate(0f, 0f, 90f); } theArrow.arrowPos = ArrowPosition.LEFT; arrowLeftList.Add(theArrow); break; case 1: if(DataManager.Instance.skinSelected == 1){ theArrow.goArrow.transform.Rotate(0f, 0f, 180f); }else if(DataManager.Instance.skinSelected == 3){ theArrow.goArrow.transform.FindChild("RotationCenter").Rotate(0f, 0f, 180f); } theArrow.arrowPos = ArrowPosition.DOWN; arrowDownList.Add(theArrow); break; case 2: theArrow.arrowPos = ArrowPosition.UP; arrowUpList.Add(theArrow); break; case 3: if(DataManager.Instance.skinSelected == 1){ theArrow.goArrow.transform.Rotate(0f, 0f, -90f); }else if(DataManager.Instance.skinSelected == 3){ theArrow.goArrow.transform.FindChild("RotationCenter").Rotate(0f, 0f, -90f); } theArrow.arrowPos = ArrowPosition.RIGHT; arrowRightList.Add(theArrow); break; } listNeighboors.Add(theArrow); goArrow.SetActiveRecursively(false); GetComponent<ManageGameObject>().Add(timetotal, goArrow); }else if(note[i] == 'M'){ var goArrow = (GameObject) Instantiate(mines, new Vector3(i*2, -ypos, 0f), mines.transform.rotation); var theArrow = new Arrow(goArrow, ArrowType.MINE, timetotal); switch(i){ case 0: theArrow.arrowPos = ArrowPosition.LEFT; mineLeftList.Add(theArrow); break; case 1: theArrow.arrowPos = ArrowPosition.DOWN; mineDownList.Add(theArrow); break; case 2: theArrow.arrowPos = ArrowPosition.UP; mineUpList.Add(theArrow); break; case 3: theArrow.arrowPos = ArrowPosition.RIGHT; mineRightList.Add(theArrow); break; } } } if(barr){ if(firstArrow <= 0f) firstArrow = timetotal; lastArrow = timetotal; } if(listNeighboors.Count > 1){ foreach(var el in listNeighboors){ el.neighboors = listNeighboors; el.imJump = true; } } if(theBPMCounter < s.bpms.Count){ if(Mathf.Abs((float)(s.mesureBPMS.ElementAt(theBPMCounter) - mesurecount)) < prec){ timeBPM += timecounter; timecounter = 0; theBPMCounter++; //Debug.Log("And bpm change"); } } if(theSTOPCounter < s.stops.Count){ if(Mathf.Abs((float)(s.mesureSTOPS.ElementAt(theSTOPCounter) - mesurecount)) < prec){ timestop += s.stops.ElementAt(theSTOPCounter).Value; theSTOPCounter++; //Debug.Log("And stop"); } } prevmesure = mesurecount; mesurecount += (4f/(float)mesure.Count); ypos += (4f/(float)mesure.Count)*speedmod; } } //Sort arrowUpList = arrowUpList.OrderBy(c => c.time).ToList(); arrowDownList = arrowDownList.OrderBy(c => c.time).ToList(); arrowRightList = arrowRightList.OrderBy(c => c.time).ToList(); arrowLeftList = arrowLeftList.OrderBy(c => c.time).ToList(); mineUpList = mineUpList.OrderBy(c => c.time).ToList(); mineDownList = mineDownList.OrderBy(c => c.time).ToList(); mineRightList = mineRightList.OrderBy(c => c.time).ToList(); mineLeftList = mineLeftList.OrderBy(c => c.time).ToList(); GetComponent<ManageGameObject>().DoTheStartSort(); }