Ejemplo n.º 1
0
 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;
         }
     }
 }
Ejemplo n.º 2
0
        /// <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;
                }
            }
        }