View difference between Paste ID: 63pmRqNX and 2RmH0dsV
SHOW: | | - or go back to the newest paste.
1
	float posX = 9, posY = 12.5;
2
	float dirX = -1, dirY = 0;
3
	float planeX = 0, planeY = 0.9;
4
	float time = 0, oldTime = 0;
5
	
6
	float cameraX, rayPosX, rayPosY, rayDirX, rayDirY, sideDistX, sideDistY, deltaDistX, deltaDistY, perpWallDist, frameTime, moveSpeed, rotSpeed, oldDirX, oldPlaneX;
7
	int x, y, mapX, mapY, stepX, stepY, hit, side, lineHeight, drawStart, drawEnd;
8
9-
			cameraX = fdiv(FIX(2 * x), FIX(screenWidth)) - FIX(1);
9+
				cameraX = 2 * x / (float)(screenWidth) -1;
10
			rayPosX = posX;
11
			rayPosY = posY;
12-
			rayDirX = dirX + fmul(planeX, cameraX);
12+
			rayDirX = dirX + planeX * cameraX;
13-
			rayDirY = dirY + fmul(planeY, cameraX);
13+
			rayDirY = dirY + planeY * cameraX;
14
			
15-
			mapX = UNFIX(rayPosX);
15+
			mapX = (int)(rayPosX);
16-
			mapY = UNFIX(rayPosY);
16+
			mapY = (int)(rayPosY);
17-
			deltaDistX = ftofix(SquareRootFloat(fixtof(FIX(1) + fdiv(fmul(rayDirY, rayDirY), fmul(rayDirX, rayDirX)))));
17+
			deltaDistX = SquareRootFloat(1 + (rayDirY * rayDirY) / (rayDirX * rayDirX));
18-
			deltaDistY = ftofix(SquareRootFloat(fixtof(FIX(1) + fdiv(fmul(rayDirX, rayDirX), fmul(rayDirY, rayDirY)))));
18+
			deltaDistY = SquareRootFloat(1 + (rayDirX * rayDirX) / (rayDirY * rayDirY));
19
			hit = 0;
20
			
21-
			if (rayDirX < FIX(0))
21+
			if (rayDirX < 0)
22
			{
23
				stepX = -1;
24-
				sideDistX = fmul(rayPosX - FIX(mapX), deltaDistX);
24+
				sideDistX = (rayPosX - mapX) * deltaDistX;
25
			}
26
			else
27
			{
28
				stepX = 1;
29-
				sideDistX = fmul(FIX(mapX + 1) - rayPosX, deltaDistX);
29+
				sideDistX = (mapX + 1.0 - rayPosX) * deltaDistX;
30
			}
31-
			if (rayDirY < FIX(0))
31+
			if (rayDirY < 0)
32
			{
33
				stepY = -1;
34-
				sideDistY = fmul(rayPosY - FIX(mapY), deltaDistY);
34+
				sideDistY = (rayPosY - mapY) * deltaDistY;
35
			}
36
			else
37
			{
38
				stepY = 1;
39-
				sideDistY = fmul(FIX(mapY + 1) - rayPosY, deltaDistY);
39+
				sideDistY = (mapY + 1.0 - rayPosY) * deltaDistY;
40
			}
41
			
42
			while (hit == 0)
43
			{
44
				if (sideDistX < sideDistY)
45
				{
46
					sideDistX += deltaDistX;
47
					mapX += stepX;
48
					side = 0;
49
				}
50
				else
51
				{
52
					sideDistY += deltaDistY;
53
					mapY += stepY;
54
					side = 1;
55
				}
56
				
57
				if (worldMap[mapX][mapY] > 0) hit = 1;
58
			}