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);
 }
Beispiel #2
0
    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));
 }
Beispiel #4
0
 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);
     }
 }
Beispiel #5
0
    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));
    }
Beispiel #6
0
            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;
 }
Beispiel #8
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);
    }
Beispiel #10
0
 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)));
 }
Beispiel #11
0
    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();
            }
        }
    }