Beispiel #1
0
    // Update is called once per frame
    void Update()
    {
        _hash1 = _input1.GetHashCode();
        _hash2 = _input2.GetHashCode();

        areSame      = _input1.Equals(_input2);
        sameHashCode = _hash1 == _hash2;
    }
Beispiel #2
0
    public IEnumerator CheckMultipleInputCorrection()
    {
        //Setup RollbackManager with the input manager
        if (RollbackManager.Instance.GetComponent <SampleRollbackInputManager>() == null)
        {
            RollbackManager.Instance.gameObject.AddComponent <SampleRollbackInputManager>();
            RollbackManager.Instance.ResetRbInputManagerEvents();
        }

        RollbackManager.Instance.bufferSize        = -1;
        RollbackManager.Instance.bufferRestriction = false;
        RollbackManager.Instance.registerFrames    = false;
        RollbackManager.Instance.ClearRollbackManager();

        Assert.True(RollbackManager.Instance.GetDisplayedFrameNum() == 0);
        Assert.True(RollbackManager.Instance.GetMaxFramesNum() == 0);

        int playerId = RollbackManager.rbInputManager.AddPlayer();

        yield return(new WaitForSeconds(0.1f));

        RollbackManager.Instance.Simulate(NumFramesToSimulate);
        Assert.True(RollbackManager.Instance.GetDisplayedFrameNum() == NumFramesToSimulate);
        yield return(new WaitForSeconds(0.1f));

        //Correct input of a certain frame number
        RollbackElementRollbackInputBaseActions playerInputHistory = RollbackManager.rbInputManager.GetPlayerInputHistory(playerId);

        RollbackInputBaseActions rbInput = new RollbackInputBaseActions(5);

        rbInput.SetHorizontalAxis(1.0f);
        rbInput.SetVerticalAxis(1.0f);
        rbInput.SetBit(3);

        for (int i = 1; i < RollbackManager.Instance.GetDisplayedFrameNum(); i++)
        {
            Assert.True(playerInputHistory.CorrectValue(rbInput, i));
        }

        //Resimulate frames
        yield return(new WaitForSeconds(0.1f));

        RollbackManager.Instance.ReSimulate(NumFramesToSimulate);
        yield return(new WaitForSeconds(0.1f));

        //Get corrected input
        for (int i = 1; i < RollbackManager.Instance.GetDisplayedFrameNum(); i++)
        {
            RollbackInputBaseActions rbCorrectedInput = RollbackManager.rbInputManager.GetPlayerInputHistory(playerId).GetValue(i);
            Assert.True(rbCorrectedInput.Equals(rbInput));
            Assert.True(Math.Abs(rbCorrectedInput.GetHorizontalAxis() - 1.0f) < 0.001f);
        }
    }