dawrehxyz icon

GameClock

dawrehxyz | PRO | 08/06/16 06:52:50 PM UTC | 0 ⭐ | 468 👁️ | Never ⏰ | []
Java |

2.27 KB

|

None

|

0 👍

/

0 👎

private GameClock gameClock;    
 
    gameClock.Initialize(); //Runs first but only once.
 
    @Override
    public void onDrawFrame(GL10 gl)
    {
        elapsedTime = gameClock.CalculateElapsedTime(); //This is the elapsedTime that is used in setPlayerTimeBasedVelocity() function
        GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
        GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT);
        drawSkyBox();
        drawPlayer();
        drawMaze();
        updateCamera();
        collisionDetectionAndResponse();
    }
 
    //This method is called from drawPlayer() function.
    private void setPlayerTimeBasedVelocity(float elapsedTime)
    {
        //timeBasedVelocity is the vector that I increase the players position with later on.
        timeBasedVelocity.x = initialVelocity.x * elapsedTime;
        timeBasedVelocity.y = initialVelocity.y * elapsedTime;
        timeBasedVelocity.z = initialVelocity.z * elapsedTime;
    }
 
    private long t0;
    private long t1;
    private long elapsedTime;
    private final long nanoSecond = 1000000000;
    private final long microSecond = 1000000;
 
    public void Initialize()
    {
        t0 = System.nanoTime();
    }    
 
    public float CalculateElapsedTime()
    {
        t1 = System.nanoTime();
        elapsedTime = t1 - t0;
        t0 = t1;
        return (float)((double)elapsedTime/(double)nanoSecond);
    }
 
 
    //This is how I update my camera based upon the players position which is player.getWorldMidPoint().
    //The eye and center variables are Vector3 variables with x, y and z and belongs to the camera which is used to create the
    //view matrix.
    public void updateCamera()
    {
        center = player.getWorldMidPoint();
        center.y += player.getPlayerRadius().y * 2;
        float angle = -player.getIncrementalRotationAngle();
        float c = (float)Math.cos(Math.toRadians(angle));
        float s = (float)Math.sin(Math.toRadians(angle));
        eye.x = center.x + (s*horizontalDistanceFromPlayer);
        eye.y = center.y + verticalDistanceFromPlayer;
        eye.z = center.z + (c*horizontalDistanceFromPlayer);
        if(player.getPlayerRunningStatus())
        {
            eye.addVector(player.getPlayerTimeBasedVelocity());
        }
    }

Comments