public static GameObject NewNote(string path, int timedelta = 0, bool regundo = false) { GameObject go = GameObject.Instantiate(Resources.Load <GameObject> (path)); NoteData nd = go.GetComponent <NoteData> (); nd.Direction = GridManager.Instance.GridDir; go.transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition); Vector3 tmp = go.transform.position; tmp.z = 0; if (GridManager.Instance.GridDir == 1) { tmp.x = go.transform.position.y / 9f * 16f / 0.8f; tmp.y = -go.transform.position.x + 4.255f - 2f; } else if (GridManager.Instance.GridDir == -1) { tmp.x = go.transform.position.y / 9f * 16f / 0.8f; tmp.y = go.transform.position.x + 4.25f - 2f; } go.transform.position = tmp; nd.Position = ParamCalculator.UnityXToVanillaPosition(tmp.x) - nd.Width / 2; nd.Time = ParamCalculator.PositionYToTime(tmp.y) + timedelta; nd.Width = WidthStore [WidthStoreN]; nd.InnerID = ++AtomicCounter; nd.NotifyWidth = true; go.GetComponent <NoteSelection> ().ShouldAttachGridY = true; if (regundo) { UndoSystem.RegisterUndo(new UndoSystem.CreateNoteUndoAction(nd, path)); } return(go); }
public void AttachToGridX() { if (GridManager.Instance.NumRows <= 0) { return; } dataBefore = new UndoSystem.NoteDataBefore(mData); float minabs = int.MaxValue; float pos = mData.Position; for (int i = 0; i < GridManager.GridCols.Count; i++) { float curtime = GridManager.GridCols [i].Time; curtime /= 1000f; curtime = ParamCalculator.UnityXToVanillaPosition(curtime); if (mData.Direction != 0) { curtime = curtime * 1.25f - 0.625f; } curtime -= mData.Width / 2f; if (Mathf.Abs(curtime - mData.Position) < minabs) { minabs = Mathf.Abs(curtime - mData.Position); pos = curtime; } } mData.Position = pos; UndoSystem.RegisterUndo(new UndoSystem.NoteDataChangeUndoAction(mData, dataBefore, new UndoSystem.NoteDataBefore(mData))); }
// Update is called once per frame void Update() { if (Begin == null || !Begin.gameObject.activeInHierarchy) { if (End != null && End.gameObject.activeInHierarchy) { DestroyObject(End.gameObject); } Destroy(gameObject); return; } if (End == null || !End.gameObject.activeInHierarchy) { if (Begin != null && Begin.gameObject.activeInHierarchy) { UndoSystem.RegisterUndo(new UndoSystem.HoldCreateUndoAction(Begin.GetComponent <NoteData> (), Begin.GetComponent <NoteData> ().Sub, false)); DestroyObject(Begin.gameObject); } Destroy(gameObject); return; } Vector3 bgp = Begin.position; GetComponent <SpriteRenderer> ().enabled = !End.GetComponent <NoteJudge> ().Judged; Vector3 sc = transform.localScale; if (Begin.GetComponent <NoteData> ().Direction == 0) { if (Begin.GetComponent <NoteJudge> ().Judged) { bgp.y = -2; } sc.x = Begin.localScale.x * 4f; sc.y = (End.position.y - bgp.y) * 2f; } else { if (Begin.GetComponent <NoteJudge> ().Judged) { bgp.x = Begin.GetComponent <NoteData> ().Direction * 4.25f; } sc.x = Begin.localScale.x * 4f; sc.y = Mathf.Abs(End.position.x - bgp.x) * 2f; } End.GetComponent <NoteData> ().Time = Mathf.Max(Begin.GetComponent <NoteData> ().Time + 60, End.GetComponent <NoteData> ().Time); End.GetComponent <NoteData> ().Position = Begin.GetComponent <NoteData> ().Position; End.GetComponent <NoteData> ().Width = Begin.GetComponent <NoteData> ().Width; End.GetComponent <NoteData> ().NotifyWidth = true; End.GetComponent <NoteData> ().Direction = Begin.GetComponent <NoteData> ().Direction; Begin.GetComponent <NoteData> ().Sub = End.GetComponent <NoteData> (); transform.position = (bgp + End.position) / 2; transform.localRotation = Begin.localRotation; Color c = new Color(1f, 1f, 1f, 1f); if (Begin.GetComponent <NoteData> ().Direction == 0 && Begin.position.y > 1f) { c.a = 2f - transform.position.y; } else if (Begin.GetComponent <NoteData> ().Direction != 0 && Begin.GetComponent <NoteData> ().Direction *(Begin.position.x) < 2f) { c.a = Begin.GetComponent <NoteData> ().Direction *(transform.position.x) - 1f; } c.a = Mathf.Clamp01(c.a); GetComponent <SpriteRenderer> ().color = c; GetComponent <SpriteRenderer> ().size = new Vector2(sc.x, sc.y); }
public void KeysBared() { if (Input.GetKeyDown(KeyCode.Space)) { TimeControlSystem.isPlaying = !TimeControlSystem.isPlaying; } if (Input.GetKeyDown(KeyCode.Z)) { if (Mathf.Abs(GridManager.Instance.GridDir) > 1) { MessageBox.Show("You Should Enable Grids First!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } NewNote("NoteNormal", regundo: true); } if (Input.GetKeyDown(KeyCode.X)) { if (Mathf.Abs(GridManager.Instance.GridDir) > 1) { MessageBox.Show("You Should Enable Grids First!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } NewNote("NoteChain", regundo: true); } if (Input.GetKeyDown(KeyCode.C)) { if (Mathf.Abs(GridManager.Instance.GridDir) > 1) { MessageBox.Show("You Should Enable Grids First!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } GameObject go = NewNote("NoteHoldSub", 500); Transform ed = go.transform; go = NewNote("NoteHoldHold"); Transform bg = go.transform; go = GameObject.Instantiate(Resources.Load <GameObject> ("NoteHold")); HoldScaling hs = go.GetComponent <HoldScaling> (); hs.Begin = bg; hs.End = ed; UndoSystem.RegisterUndo(new UndoSystem.HoldCreateUndoAction(bg.GetComponent <NoteData>(), ed.GetComponent <NoteData>())); } if (Input.GetKeyDown(KeyCode.U)) { if (PlaybackSystem.PlaySpeed >= 0.2f) { PlaybackSystem.PlaySpeed -= 0.1f; } else { PlaybackSystem.PlaySpeed = 0.1f; } } else if (Input.GetKeyDown(KeyCode.I)) { if (PlaybackSystem.PlaySpeed <= 2.9f) { PlaybackSystem.PlaySpeed += 0.1f; } else { PlaybackSystem.PlaySpeed = 3f; } } KeyCode[] ls = { KeyCode.Alpha1, KeyCode.Alpha2, KeyCode.Alpha3, KeyCode.Alpha4 }; for (int i = 0; i < 4; i++) { if (Input.GetKeyDown(ls [i])) { WidthStoreN = i; } } if (Input.GetKeyDown(KeyCode.G)) { GridManager.Instance.GridDir++; if (GridManager.Instance.GridDir > 1) { GridManager.Instance.GridDir = -1; } } }
IEnumerator do_Update() { if (ShouldAttachGridX) { ShouldAttachGridX = false; AttachToGridX(); } if (ShouldAttachGridY) { ShouldAttachGridY = false; AttachToGridY(); } if (mData.Direction == 0) { Hitbox = new Rect(transform.position.x - transform.localScale.x, transform.position.y - transform.localScale.y * 0.32f, transform.localScale.x * 2, transform.localScale.y * 2 * 0.32f); } else { Hitbox = new Rect(transform.position.x - transform.localScale.y * 0.32f, transform.position.y - transform.localScale.x, transform.localScale.y * 2 * 0.32f, transform.localScale.x * 2); } if ((Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt))) { if (JudgeContain()) { if (Input.GetMouseButton(0)) { AttachToGridX(); } if (Input.GetMouseButton(1)) { AttachToGridY(); } } yield break; } lastClick += Time.deltaTime; if (MouseInterfaceID == -1 && Input.GetMouseButton(0) && GridManager.Instance.GridDir == mData.Direction && JudgeContain() && !TimeControlSystem.isPlaying) { if (lastClick < 0.33f) { Debug.Log(1); Instantiate(Resources.Load <GameObject> ("UI/NoteDataEdit"), HotkeySystem.Instance.Canvas.transform).GetComponent <NoteDataEdit> ().Editing = mData; MouseInterfaceID = -2; } else { MouseInterfaceID = Mathf.Abs(GetHashCode()); IsSelected = true; dataBefore = new UndoSystem.NoteDataBefore(mData); mIndicator = Instantiate(Resources.Load <GameObject> ("RectLines")).GetComponent <RectLines> (); mIndicator.Rectangle = Hitbox; mIndicator.LineWidth = 0.05f; } lastClick = 0; } if (MouseInterfaceID == Mathf.Abs(GetHashCode())) { mIndicator.Rectangle = Hitbox; if (!Input.GetMouseButton(0) || GridManager.Instance.GridDir != mData.Direction) { MouseInterfaceID = -1; IsSelected = false; mIndicator.NeedsDestroy = true; AttachToGridY(); UndoSystem.RegisterUndo(new UndoSystem.NoteDataChangeUndoAction(mData, dataBefore, new UndoSystem.NoteDataBefore(mData))); } } if (MouseInterfaceID == -1 && Input.GetMouseButtonDown(1) && JudgeContain()) { MouseInterfaceID = Mathf.Abs(GetHashCode()); yield return(new WaitForEndOfFrame()); Destroy(gameObject); if (mData.NoteType != "HOLD" && mData.NoteType != "SUB") { UndoSystem.RegisterUndo(new UndoSystem.CreateNoteUndoAction(mData, name.Split('(') [0], false)); } else if (mData.Sub != null) { UndoSystem.RegisterUndo(new UndoSystem.HoldCreateUndoAction(mData, mData.Sub, false)); } } if (IsSelected) { if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl)) { mData.Width += Input.GetAxis("Mouse Y") * 0.8f; if (mData.Width < 0.05f) { mData.Width = 0.05f; } else { mData.Position -= Input.GetAxis("Mouse Y") * 0.4f; } } else { float UNX; float UNY; if (mData.Direction == 0) { UNX = transform.position.x + Input.GetAxis("Mouse X"); UNY = transform.position.y + Input.GetAxis("Mouse Y"); } else if (mData.Direction == 1) { UNX = (transform.position.y + Input.GetAxis("Mouse Y")) / 9f * 16f / 0.8f; UNY = -(transform.position.x + Input.GetAxis("Mouse X")) + 4.255f - 2f; } else { UNX = (transform.position.y + Input.GetAxis("Mouse Y")) / 9f * 16f / 0.8f; UNY = (transform.position.x + Input.GetAxis("Mouse X")) + 4.25f - 2f; } mData.Position = ParamCalculator.UnityXToVanillaPosition(UNX) - mData.Width / 2; mData.Time = ParamCalculator.PositionYToTime(UNY); } } }