141 lines
4.5 KiB
Python
141 lines
4.5 KiB
Python
from tools.dusk.defs import CHUNK_WIDTH, CHUNK_HEIGHT, CHUNK_DEPTH, TILE_WIDTH, TILE_HEIGHT, TILE_DEPTH
|
|
from tools.editor.map.vertexbuffer import VertexBuffer
|
|
from OpenGL.GL import *
|
|
from OpenGL.GLU import *
|
|
|
|
class Region:
|
|
def __init__(self, chunk):
|
|
self.minX = 0
|
|
self.minY = 0
|
|
self.minZ = 0
|
|
self.maxX = 0
|
|
self.maxY = 0
|
|
self.maxZ = 0
|
|
self.chunk = chunk
|
|
self.vertexBuffer = VertexBuffer()
|
|
self.color = (1.0, 0.0, 0.0)
|
|
self.updateVertexs()
|
|
pass
|
|
|
|
def updateVertexs(self):
|
|
# Draw a quad, semi transparent with solid outlines
|
|
vminX = (self.minX * CHUNK_WIDTH) * TILE_WIDTH
|
|
vminY = (self.minY * CHUNK_HEIGHT) * TILE_HEIGHT
|
|
vminZ = (self.minZ * CHUNK_DEPTH) * TILE_DEPTH
|
|
vmaxX = (self.maxX * CHUNK_WIDTH) * TILE_WIDTH
|
|
vmaxY = (self.maxY * CHUNK_HEIGHT) * TILE_HEIGHT
|
|
vmaxZ = (self.maxZ * CHUNK_DEPTH) * TILE_DEPTH
|
|
alpha = 0.25
|
|
|
|
# Move back half a tile width
|
|
vminX -= TILE_WIDTH / 2
|
|
vmaxX -= TILE_WIDTH / 2
|
|
vminY -= TILE_HEIGHT / 2
|
|
vmaxY -= TILE_HEIGHT / 2
|
|
vminZ -= TILE_DEPTH / 2
|
|
vmaxZ -= TILE_DEPTH / 2
|
|
|
|
# Cube (6 verts per face)
|
|
self.vertexBuffer.vertices = [
|
|
# Front face
|
|
vminX, vminY, vmaxZ,
|
|
vmaxX, vminY, vmaxZ,
|
|
vmaxX, vmaxY, vmaxZ,
|
|
vminX, vminY, vmaxZ,
|
|
vmaxX, vmaxY, vmaxZ,
|
|
vminX, vmaxY, vmaxZ,
|
|
|
|
# Back face
|
|
vmaxX, vminY, vminZ,
|
|
vminX, vminY, vminZ,
|
|
vminX, vmaxY, vminZ,
|
|
vmaxX, vminY, vminZ,
|
|
vminX, vmaxY, vminZ,
|
|
vmaxX, vmaxY, vminZ,
|
|
|
|
# Left face
|
|
vminX, vminY, vminZ,
|
|
vminX, vminY, vmaxZ,
|
|
vminX, vmaxY, vmaxZ,
|
|
vminX, vminY, vminZ,
|
|
vminX, vmaxY, vmaxZ,
|
|
vminX, vmaxY, vminZ,
|
|
|
|
# Right face
|
|
vmaxX, vminY, vmaxZ,
|
|
vmaxX, vminY, vminZ,
|
|
vmaxX, vmaxY, vminZ,
|
|
vmaxX, vminY, vmaxZ,
|
|
vmaxX, vmaxY, vminZ,
|
|
vmaxX, vmaxY, vmaxZ,
|
|
|
|
# Top face
|
|
vminX, vmaxY, vmaxZ,
|
|
vmaxX, vmaxY, vmaxZ,
|
|
vmaxX, vmaxY, vminZ,
|
|
vminX, vmaxY, vmaxZ,
|
|
vmaxX, vmaxY, vminZ,
|
|
vminX, vmaxY, vminZ,
|
|
|
|
# Bottom face
|
|
vminX, vminY, vminZ,
|
|
vmaxX, vminY, vminZ,
|
|
vmaxX, vminY, vmaxZ,
|
|
vminX, vminY, vminZ,
|
|
vmaxX, vminY, vmaxZ,
|
|
vminX, vminY, vmaxZ,
|
|
]
|
|
|
|
self.vertexBuffer.colors = [
|
|
# Front face
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
|
|
# Back face
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
|
|
# Left face
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
|
|
# Right face
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
|
|
# Top face
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
|
|
# Bottom face
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
self.color[0], self.color[1], self.color[2], alpha,
|
|
]
|
|
self.vertexBuffer.buildData()
|
|
|
|
def draw(self):
|
|
self.vertexBuffer.draw() |