Code: Select all
Poke ScreenPtr+((Core.XYZtoY(X+texX,Y+texY,Z+texX/6)*640)+Core.XYZtoX(X+texX,Y+texY,Z))*4, Point (texX, texY, ImageBuffer)
Code: Select all
Poke ScreenPtr+(Y*640)+X)*4, PixelX
Code: Select all
ScreenRes 640, 480, 32, 1
Type VoxelCamera
Dim X as Integer
Dim Y as Integer
Dim Z as Integer
Dim W as Integer
Dim H as Integer
End Type
Type VoxelEngine
Dim Camera as VoxelCamera
End Type
Dim Shared Voxel as VoxelEngine
Voxel.Camera.W = 640
Voxel.Camera.H = 480
Namespace Core
Function XYZtoY (tdPosX as Integer, tdPosY as Integer, tdPosZ as Integer) as Integer
''Converts an XYZ coordinate (array) to Y coordinates (screen)
Dim xdxX as Integer = -tdPosX/4
Dim xdxY as Integer = tdPosY/4
Dim xdxZ as Integer = tdPosZ/2
Return -((xdxX+xdxY)/2+xdxZ)-Voxel.Camera.Y+Voxel.Camera.H/2
End Function
Function XYZtoX (tdPosX as Integer, tdPosY as Integer, tdPosZ as Integer) as Integer
''Converts an XYZ coordinate (array) to X coordinates (screen)
Dim xdxX as Integer = tdPosX/2
Dim xdxY as Integer = tdPosY/2
Return (xdxX+xdxY)/2-Voxel.Camera.X+Voxel.Camera.W/2
End Function
End Namespace
Namespace Isometric
Sub DrawLine(X1 as Integer, Y1 as Integer, Z1 as Integer, X2 as Integer, Y2 as Integer, Z2 as Integer, C as Integer)
Line (Core.XYZtoX(X1,Y1,Z1), Core.XYZtoY(X1,Y1,Z1))-(Core.XYZtoX(X2,Y2,Z2), Core.XYZtoY(X2,Y2,Z2)), C
End Sub
Sub DrawImage_XYplane (X as Integer, Y as Integer, Z as integer, W as Integer, L as Integer, ImageBuffer as Any Ptr)
Dim texX as Integer
Dim texY as Integer
For texX = 0 to W-1
For texY = 0 to L-1
''PSet (Core.XYZtoX(X+texX,Y+texY,Z),Core.XYZtoY(X+texX,Y+texY,Z+texX/6)),Point (texX,texY, ImageBuffer)
Poke ScreenPtr+((Core.XYZtoY(X+texX,Y+texY,Z+texX/6)*640)+Core.XYZtoX(X+texX,Y+texY,Z))*4, Point (texX, texY, ImageBuffer)
Next
Next
End Sub
End Namespace
Dim Shared MX as Integer
Dim Shared MY as Integer
Dim Shared TextureDirt As Any Ptr
TextureDirt = ImageCreate(600,600)
BLoad "dirttexture.bmp", TextureDirt
''(480-MY-240)*2 = mouse y to coords
ScreenLock
Isometric.DrawImage_XYplane (0,0,0, 600,600, TextureDirt)
Isometric.DrawLine(-1000,0,0, 1000,0,0, RGB(255,255,255))
Isometric.DrawLine(0,-1000,0, 0,1000,0, RGB(255,255,255))
Isometric.DrawLine(0,0,-1000, 0,0,1000, RGB(255,255,255))
ScreenUnlock
Sleep