// 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(); } } } }