void Start() { if (Instance) { Destroy(Instance); } Instance = this; MenuCanvas = GetComponent <Canvas>(); Mouse = GetComponent <LeapMouse>(); Picker.Folder = PlayerPrefs.GetString("Folder", "\\"); Picker.OnFileLoaded += StartSong; ModeSwitchers.Add(GameModeType.FreeForAll, FFATicker); string[] ScoresIn; try { ScoresIn = File.ReadAllLines(HighScoresFile); } catch { return; } foreach (string Score in ScoresIn) { int SeparatorPos = Score.IndexOf('\\'), Parsed; if (SeparatorPos != -1 && int.TryParse(Score.Substring(SeparatorPos + 1), out Parsed)) { HighScores[Score.Substring(0, SeparatorPos)] = Parsed; } } }
/// <summary> /// Attachment placement and replacement. /// </summary> void Update() { RaycastHit Hit; // Selection and removal handling if (Attached) { bool ResetScaling = transform.localScale.x > 1.1f; if (!PickedUp && // No attachment is selected !PlayerEntity.Instance && // Not ingame Physics.Raycast(LeapMouse.ScreenPointToRay(), out Hit) && // Mouse is hovered part 1 (Hit.collider == BaseCollider || Hit.collider == CounterpartCollider)) // Mouse is hovered part 2 { float Upscale = 1f + Time.deltaTime * .25f; transform.localScale *= Upscale; Counterpart.transform.localScale *= Upscale; if (LeapMouse.Instance.ActionDown()) { Detach(); ResetScaling = true; } } else { ResetScaling = true; } if (ResetScaling) { transform.localScale = new Vector3(1, 1, 1); Counterpart.transform.localScale = new Vector3(1, -1, 1); } return; } // Snap to the body and placement if (Physics.Raycast(LeapMouse.ScreenPointToRay(), out Hit)) { Transform BodyT = Body.transform, CollisionParent = Hit.collider.transform.parent.parent; if (Hit.collider.gameObject == Body || (CollisionParent && CollisionParent == Body.transform)) { Vector3 Diff = BodyT.InverseTransformPoint(Hit.point) * BodyT.localScale.x; transform.position = Hit.point; transform.rotation = Quaternion.LookRotation(BodyT.forward, Hit.normal); transform.localScale = new Vector3(BodyT.localScale.x + Convert.ToSingle(Diff.x < 0) * -2 * BodyT.localScale.x, BodyT.localScale.y, BodyT.localScale.z); PlaceCounterpart(); if (LeapMouse.Instance.ActionDown()) { Attach(); } } else { transform.position = Counterpart.transform.position = Hit.point; transform.rotation = Counterpart.transform.rotation = Quaternion.identity; transform.localScale = Counterpart.transform.localScale = BodyT.localScale * .5f; } } }