View difference between Paste ID: igHc1LK5 and KNJ1A1gV
SHOW: | | - or go back to the newest paste.
1
public void update(int delta)
2
	{
3
        float forward = 0f;
4
        float strafe = 0f;
5
        float vertical = 0f;
6
7
		if(Keyboard.isKeyDown(Keyboard.KEY_W))
8
		{
9
            forward += 1f;
10
		}
11
		else if(Keyboard.isKeyDown(Keyboard.KEY_S))
12
		{
13
            forward -= 1f;
14
		}
15
		else if(Keyboard.isKeyDown(Keyboard.KEY_A))
16
		{
17
            strafe -= 1f;
18
		}
19
		else if(Keyboard.isKeyDown(Keyboard.KEY_D))
20
		{
21
            strafe += 1f;
22
		}
23
        else if(Keyboard.isKeyDown(Keyboard.KEY_Q) && freeCam)
24
        {
25
            vertical -= 1f;
26
        }
27
        else if(Keyboard.isKeyDown(Keyboard.KEY_E) && freeCam)
28
        {
29
            vertical += 1f;
30
        }
31
32
        int dx = Mouse.getDX();
33
        int dy = Mouse.getDY();
34
35
        yrot += dx * 0.5f;
36
        xrot -= dy * 0.5f;
37
38
        if(xrot > 90)
39
            xrot = 90;
40
        else if(xrot < -90)
41
            xrot = -90;
42
43
        GL11.glRotatef(xrot, 1, 0, 0);
44
        GL11.glRotatef(yrot, 0, 1, 0);
45
46-
        forward *= delta;
46+
        //forward *= delta;
47-
        strafe *= delta;
47+
        //strafe *= delta;
48
49
        Vector3f movement = new Vector3f();
50
51
        if(strafe == 0f || forward != 0)
52
        {
53
            movement.x += SPEED * forward * Math.cos(Math.toRadians(yrot + 90));
54
55
            if(freeCam)
56
                movement.y += SPEED * vertical;
57
58
            movement.z += SPEED * forward * Math.sin(Math.toRadians(yrot + 90));
59
        }
60
        else
61
        {
62
            movement.x += SPEED * strafe * Math.cos(Math.toRadians(yrot + 180));
63
64
            movement.z += SPEED * strafe * Math.sin(Math.toRadians(yrot + 180));
65
        }
66
67
        movement.x *= delta;
68
        movement.z *= delta;
69
70
        position.x -= movement.x;
71
        position.z -= movement.z;
72
73
        bb.setVecMin(new Vector3f(position.x - BBSIZE, 0f, position.z - BBSIZE));
74
        bb.setVecMax(new Vector3f(position.x + BBSIZE, 1f, position.z + BBSIZE));
75
76
        BoundingBox c = null;
77
78
        for(BoundingBox b : Game.level.bbs)
79
        {
80
            if(BoundingBox.isCollided(bb, b))
81
            {
82
                c = b;
83
                break;
84
            }
85
        }
86
87
        if(c != null && !Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))
88
        {
89
            //position.set(lastGoodPos);
90
91
            Vector3f reaction = new Vector3f();
92
            reaction.x = c.normal.x * + (Vector3f.dot(c.normal, movement));
93-
            Vector3f finalV = new Vector3f();
93+
94
            reaction.z = c.normal.z * + (Vector3f.dot(c.normal, movement));
95
96
            Vector3f.add(movement, reaction, movement);
97-
            finalV.x = movement.x;
97+
98-
            finalV.y = movement.y;
98+
            Vector3f.add(movement, lastGoodPos, position);
99-
            finalV.z = movement.z;
99+
100
            //position.set(lastGoodPos);
101-
            Vector3f.add(finalV, lastGoodPos, position);
101+
102
        }
103
        else
104
            lastGoodPos.set(position);
105
106
        GL11.glTranslatef(-position.x, -0.5f, -position.z);
107
	}