// Handle the game states
    // 1. Game state
    // 2. Victory/reset state
    void Update()
    {
        // Update gravity
        Physics.gravity = new Vector3(Input.acceleration.x, Input.acceleration.z, Input.acceleration.y) * 98.1f;

        // Update light
        if (LightObject)
        {
            Vector3 lPos = Vector3.zero;

            for (int i = 0; i < pBalls.Length; i++)
            {
                lPos += pBalls[i].transform.position * (1f / pBalls.Length);
            }

            lPos.y = LightObject.transform.position.y;
            LightObject.transform.position = lPos;
        }

        if (pWaitingForReset)
        {
            // Check if reset conditions are met, if so, create new play field
            if ((ResetObject) && (ResetObject.GetCountLast() == pHoles))
            {
                RandomPlayfield();
            }
        }
        else
        {
            // Check if victory conditions are met
            int lCount = 0;

            for (int i = 0; i < pHoleTriggers.Length; i++)
            {
                lCount += Mathf.Min(1, pHoleTriggers[i].GetCountFirst());
            }

            // Mission accomplished
            if (lCount == pHoles)
            {
                pWaitingForReset = true;

                if (ResetObject)
                {
                    ResetObject.gameObject.SetActive(true);
                }

                if (Indicator)
                {
                    Indicator.SetSuccess();
                }
            }
        }
    }