File size: 1,956 Bytes
f92c150 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
import collider
import models.cube # default model
class Block_type:
# new optional model argument (cube model by default)
def __init__(self, texture_manager, name = "unknown", block_face_textures = {"all": "cobblestone"}, model = models.cube):
self.name = name
self.block_face_textures = block_face_textures
self.model = model
# create members based on model attributes
self.transparent = model.transparent
self.is_cube = model.is_cube
self.glass = model.glass
# create colliders
self.colliders = []
for _collider in model.colliders:
self.colliders.append(collider.Collider(*_collider))
# replace data contained in numbers.py with model specific data
self.vertex_positions = model.vertex_positions
self.tex_coords = model.tex_coords.copy()
self.shading_values = model.shading_values
def set_block_face(face, texture):
# make sure we don't add inexistent faces
if face > len(self.tex_coords) - 1:
return
self.tex_coords[face] = self.tex_coords[face].copy()
for vertex in range(4):
self.tex_coords[face][vertex * 3 + 2] = texture
for face in block_face_textures:
texture = block_face_textures[face]
texture_manager.add_texture(texture)
texture_index = texture_manager.textures.index(texture)
if face == "all":
for i in range(len(self.tex_coords)):
set_block_face(i, texture_index)
elif face == "sides":
set_block_face(0, texture_index)
set_block_face(1, texture_index)
set_block_face(4, texture_index)
set_block_face(5, texture_index)
elif face == "x":
set_block_face(0, texture_index)
set_block_face(1, texture_index)
elif face == "y":
set_block_face(2, texture_index)
set_block_face(3, texture_index)
elif face == "z":
set_block_face(4, texture_index)
set_block_face(5, texture_index)
else:
set_block_face(["right", "left", "top", "bottom", "front", "back"].index(face), texture_index) |