public void AddPianoRollItem(SongEvent e, float futureTick) { Vector3[] keyWidth = PianoDescriptor.getPianoDescriptor().getKeyWidth(e.KeyID, false); float girth = .5f * (keyWidth[0] - keyWidth[1]).magnitude; float duration = Note.GetDuration(e.NoteType); float length = PIXELPERBEAT * duration; float center = e.EndPoint - Timing.CurrentMeasure - (duration / 2f); float z_depth = center * PIXELPERBEAT; Vector3 midpoint = ((keyWidth[0] + keyWidth[1]) / 2f); float x_center = midpoint.x; float y_center = midpoint.y; GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube); cube.GetComponent <MeshRenderer>().sharedMaterial = PianoRollMatRef; cube.name = "rolling" + e.KeyID.ToString().PadLeft('0'); cube.tag = "PianoRoll"; PianoRoll r = cube.AddComponent <PianoRoll>(); r.e = e; r.endPoint = e.EndPoint; r.duration = duration; r.startPoint = e.StartPoint; cube.transform.parent = pianoRollContainer.transform; cube.transform.localPosition = new Vector3(x_center, y_center, z_depth); cube.transform.localScale = new Vector3(girth, 0.01f, length); cube.transform.rotation = GameObject.Find("MainApp").gameObject.transform.rotation; }
// Use this for initialization void Start() { p = PianoDescriptor.getPianoDescriptor(); GameObject leftAnchor = GameObject.Find("leftAnchor"); GameObject rightAnchor = GameObject.Find("rightAnchor"); print(rightAnchor); stage = GameObject.Find("MainApp"); pianoRollContainer = GameObject.Find("PianoRollContainer"); start = stage.transform.InverseTransformPoint(leftAnchor.transform.position); //start and end are relative to stage after all. end = stage.transform.InverseTransformPoint(rightAnchor.transform.position); print(start); print(end); p.setUpPiano(start, end); //Vector3 length = end - start; //Vector3 lengthCentered = length * ((float)p.NumKeys / (p.NumKeys - 1)); //print(lengthCentered); //length = start + lengthCentered; ////try to extend from start to end, but not reach end. //Vector3 halflength = (end - length) / (float)2.0; //end = halflength + length; //start = start + halflength; //print(end); //print(start); for (int i = 0; i < keyIsHighlighted.Length; i++) { keyIsHighlighted[i] = false; } }
/// <summary> /// Static function return a Piano Descriptor singleton. /// </summary> /// <returns></returns> public static PianoDescriptor getPianoDescriptor() { if (descriptor == null) { descriptor = new PianoDescriptor(); } return(descriptor); }