void CacheStatusCalculations() { //Certain calculations can be done once and cached for all scripts to use later. status.isOnGround = raycaster.IsOnGround; status.moveInputSign = MathsUtil.SignAllowingZero(GameInput.MoveX); status.velocityXSign = MathsUtil.SignAllowingZero(status.currentVelocity.x); }
public void UpdateCameraPreview(ref Vector3 cameraPosition, ref float cameraOrtoSize) { if (this.m_done) { return; } if (GuiManager.GetPointer().down) { this.m_fastPreviewMultiplier = 6; } Vector2 a = cameraPosition; this.m_timer += Time.deltaTime * (float)this.m_fastPreviewMultiplier; float num = (a - new Vector2(this.m_controlPoints[this.m_currentControlPointIndex + 1].position.x, this.m_controlPoints[this.m_currentControlPointIndex + 1].position.y)).magnitude; float num2 = Mathf.Abs(cameraOrtoSize - this.m_controlPoints[this.m_currentControlPointIndex + 1].zoom); if (this.m_timer > this.m_animationTime / (float)(this.m_controlPoints.Count - 3)) { this.m_timer = this.m_animationTime / (float)(this.m_controlPoints.Count - 3); num = 0f; num2 = 0f; } if (num < 0.5f && num2 < 0.5f) { this.m_currentControlPointIndex++; this.m_timer = 0f; if (this.m_currentControlPointIndex == this.m_controlPoints.Count - 2) { this.m_done = true; return; } } float i; switch (this.m_easing) { case CameraPreview.EasingAnimation.EasingIn: i = MathsUtil.EasingInQuad(this.m_timer, 0f, 1f, this.m_animationTime / (float)(this.m_controlPoints.Count - 3)); break; case CameraPreview.EasingAnimation.EasingOut: i = MathsUtil.EasingOutQuad(this.m_timer, 0f, 1f, this.m_animationTime / (float)(this.m_controlPoints.Count - 3)); break; case CameraPreview.EasingAnimation.EasingInOut: i = MathsUtil.EaseInOutQuad(this.m_timer, 0f, 1f, this.m_animationTime / (float)(this.m_controlPoints.Count - 3)); break; default: i = this.m_timer / (this.m_animationTime / (float)(this.m_controlPoints.Count - 3)); break; } float x = MathsUtil.CatmullRomInterpolate(this.m_controlPoints[this.m_currentControlPointIndex - 1].position.x, this.m_controlPoints[this.m_currentControlPointIndex].position.x, this.m_controlPoints[this.m_currentControlPointIndex + 1].position.x, this.m_controlPoints[this.m_currentControlPointIndex + 2].position.x, i); float y = MathsUtil.CatmullRomInterpolate(this.m_controlPoints[this.m_currentControlPointIndex - 1].position.y, this.m_controlPoints[this.m_currentControlPointIndex].position.y, this.m_controlPoints[this.m_currentControlPointIndex + 1].position.y, this.m_controlPoints[this.m_currentControlPointIndex + 2].position.y, i); float num3 = MathsUtil.CatmullRomInterpolate(this.m_controlPoints[this.m_currentControlPointIndex - 1].zoom, this.m_controlPoints[this.m_currentControlPointIndex].zoom, this.m_controlPoints[this.m_currentControlPointIndex + 1].zoom, this.m_controlPoints[this.m_currentControlPointIndex + 2].zoom, i); cameraPosition = new Vector3(x, y, cameraPosition.z); cameraOrtoSize = num3; }
private static double QuantileFunction(double mu, double sigma, Probability p) { /* * see: * https://en.wikipedia.org/wiki/Normal_distribution#Quantile_function* */ return(mu + sigma * MathsUtil.ShoreStandardNormalQuantileFunction <double>(p)); }
private void InitialiseValues() { for (int i = 1; i < 20; i++) { randomPercentage.Add(5 * i); randomFraction.Add(MathsUtil.GetSmallestFraction(i, 20)); randomDecimal.Add(0.05f * i); } }
public static Vector3 PositionOnSpline(List <Vector3> controlPoints, float t) { int count = controlPoints.Count; int num = Mathf.FloorToInt(t * (float)(count - 1)); Vector3 a = controlPoints[Mathf.Clamp(num - 1, 0, count - 1)]; Vector3 b = controlPoints[Mathf.Clamp(num, 0, count - 1)]; Vector3 c = controlPoints[Mathf.Clamp(num + 1, 0, count - 1)]; Vector3 d = controlPoints[Mathf.Clamp(num + 2, 0, count - 1)]; float i = t * (float)(count - 1) - (float)num; return(MathsUtil.CatmullRomInterpolate(a, b, c, d, i)); }
public override void Update() { this.m_timer += Time.unscaledDeltaTime; if (this.m_timer >= this.m_time) { this.m_finished = true; } float num = MathsUtil.EaseInOutQuad(this.m_timer, 0f, 1f, this.m_time); num = 0.5f * num + 0.5f * (this.m_timer / this.m_time); this.m_pointer.SetPosition(Tutorial.PositionOnSpline(this.m_positions, num)); }
private void PopulateQuantileValues() { for (int k = 0; k < GetNumber() - 1; ++k) { _quantileValues[k] = (double)((Double)MathsUtil.BinomialCoefficient(k, GetNumber()) * Math.Pow(_p.GetValue(), k) * Math.Pow(_p.GetInverseEventProb().GetValue(), GetNumber() - k)); if (k > 0) { _quantileValues[k] += _quantileValues[k - 1]; } } _quantileValues[GetNumber() - 1] = 1.0; }
private IEnumerator ThrowBallToFriendlyCoroutine(bool success, Vector3 targetPos) { if (success) { targetPos += new Vector3(0, 0, -2f); } else { targetPos += new Vector3(0, 0, -4f); } float speed = 2f; float dist = Vector3.Distance(opponent.transform.position, friendly.transform.position); Vector3 opponentTargetPos = new Vector3(Mathf.Lerp(FRIENDLY_MOVE_MIN, FRIENDLY_MOVE_MAX, randomPercentage[selectedAnswer]), opponent.transform.position.y, opponent.transform.position.z); float counter = 0; while (true) { counter += 0.01f; if (!success) { opponent.transform.position = Vector3.MoveTowards(opponent.transform.position, opponentTargetPos, counter * dist * speed); } ball.transform.position = MathsUtil.GetBezierPosition(ball.transform.position, targetPos, counter * speed, 1f); if (counter >= 1f / speed) { break; } yield return(Yielders.Get(0.01f)); } RestartGame(); }
private IEnumerator KickBallToPointCoroutine(Vector3 pos, bool success) { yield return(Yielders.Get(0.5f)); float speed = 2f; float time = 1 / speed; Transform ballTransform = ball.transform; float counter = 0f; while (true) { counter += time / 100f; ballTransform.position = MathsUtil.GetBezierPosition(ballTransform.position, pos, counter, 2.5f); if (success) { friendly.transform.position = Vector3.Lerp(friendly.transform.position, pos, counter); } else { opponent.transform.position = Vector3.Lerp(opponent.transform.position, pos, counter); } if (counter >= 1f) { break; } yield return(Yielders.Get(0.01f)); } yield return(Yielders.Get(0.5f)); calloutText.gameObject.SetActive(false); ball.transform.position = ballStartPosition; MoveCamera(cameraStartPosition, false); }
public static Vector3 CatmullRomInterpolate(Vector3 a, Vector3 b, Vector3 c, Vector3 d, float i) { return(new Vector3(MathsUtil.CatmullRomInterpolate(a.x, b.x, c.x, d.x, i), MathsUtil.CatmullRomInterpolate(a.y, b.y, c.y, d.y, i), MathsUtil.CatmullRomInterpolate(a.z, b.z, c.z, d.z, i))); }
private void Update() { if (this.m_contraptionAssets.Count == 0) { return; } this.m_timer += Time.deltaTime; this.m_resourceUnloadTimer += Time.deltaTime; if (this.m_resourceUnloadTimer > 600f) { this.m_resourceUnloadTimer = 0f; Resources.UnloadUnusedAssets(); } float num = 0.666f; float num2 = 8f; if (this.m_state == MenuContraptionManager.State.Default) { if (this.m_cameraTarget) { this.SetState(MenuContraptionManager.State.Zooming); } else { this.CreateContraption(); } } else if (this.m_state == MenuContraptionManager.State.Zooming) { float num3 = 4f; float t = MathsUtil.EaseInOutQuad(this.m_timer, 0f, 1f, num3); Vector3 vector = this.CameraTargetPosition(); vector = num * vector + (1f - num) * this.m_defaultCameraPosition; this.m_camera.transform.position = Vector3.Slerp(this.m_zoomOutPosition, vector, t); this.m_camera.orthographicSize = Mathf.Lerp(15f, num2, t); if (this.m_timer > num3) { this.SetState(MenuContraptionManager.State.Following); } } else if (this.m_state == MenuContraptionManager.State.ReturnToZoom) { this.m_returnTimer += Time.deltaTime; float num4 = 5f; float t2 = MathsUtil.EaseInOutQuad(this.m_timer, 0f, 1f, num4); Vector3 vector2 = this.CameraTargetPosition(); vector2 = num * vector2 + (1f - num) * this.m_defaultCameraPosition; Vector3 vector3 = Vector3.Slerp(this.m_zoomOutPosition, vector2, t2); Vector3 a = vector3; float num5 = 1f; if (this.m_returnTimer < 4f) { float t3 = MathsUtil.EaseInOutQuad(this.m_returnTimer, 0f, 1f, 4f); a = Vector3.Slerp(this.m_cameraStartPosition, this.m_zoomOutPosition, t3); num5 = MathsUtil.EaseInOutQuad(Mathf.Clamp(this.m_timer, 0f, 1f), 0f, 1f, 1f); } this.m_camera.orthographicSize = Mathf.Lerp(15f, num2, t2); this.m_camera.transform.position = num5 * vector3 + (1f - num5) * a; if (this.m_timer > num4) { this.SetState(MenuContraptionManager.State.Following); } } else if (this.m_state == MenuContraptionManager.State.Following) { if (!this.m_cameraTarget) { this.SetState(MenuContraptionManager.State.Returning); return; } Vector3 vector4 = this.CameraTargetPosition(); vector4 = num * vector4 + (1f - num) * this.m_defaultCameraPosition; this.m_camera.transform.position = vector4; this.m_camera.orthographicSize = num2; Vector3 position = this.m_cameraTarget.transform.position; Vector3 position2 = this.m_camera.transform.position; Vector2 vector5 = new Vector2(this.m_camera.orthographicSize * (float)Screen.width / (float)Screen.height, this.m_camera.orthographicSize); float num6 = -5f + -15f * (float)Screen.width / (float)Screen.height; if (position.x > position2.x + vector5.x - 5f || position.x < num6 - 10f || position.y > position2.y + vector5.y - 5f || position.y < -15f) { this.m_contraptionController.StartRemoveTimer(4f); this.SetState(MenuContraptionManager.State.Returning); } if (this.m_timer > 30f) { this.m_contraptionController.StartRemoveTimer(4f); this.SetState(MenuContraptionManager.State.Returning); } if (this.m_contraption.IsMovementStopped()) { this.m_contraptionController.StartRemoveTimer(4f); this.SetState(MenuContraptionManager.State.Returning); } } else if (this.m_state == MenuContraptionManager.State.Returning) { float num7 = 4f; float t4 = MathsUtil.EaseInOutQuad(this.m_timer, 0f, 1f, num7); float num8 = MathsUtil.EaseInOutQuad(this.m_timer, 0f, 1f, num7 - 1f); Vector3 vector6 = Vector3.Slerp(this.m_cameraStartPosition, this.m_zoomOutPosition, t4); this.m_camera.orthographicSize = Mathf.Lerp(this.m_cameraStartSize, 15f, num8); Vector3 a2 = vector6; if (this.m_cameraTarget) { a2 = this.CameraTargetPosition(); a2 = num * a2 + (1f - num) * this.m_defaultCameraPosition; } this.m_camera.transform.position = num8 * vector6 + (1f - num8) * a2; if (this.m_timer > num7 - 1f) { this.m_returnTimer = this.m_timer; this.SetState(MenuContraptionManager.State.ReturnToZoom); this.CreateContraption(); } } }