Class: Meshes::Cube

Inherits:
Mesh
  • Object
show all
Defined in:
lib/belts_opengl/assets/meshes/cube.rb

Instance Method Summary collapse

Constructor Details

#initializeCube

Returns a new instance of Cube.



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
# File 'lib/belts_opengl/assets/meshes/cube.rb', line 3

def initialize
  common_vertices = [
    # Back face
    [-HU, HU, -HU],
    [-HU, -HU, -HU],
    [HU, -HU, -HU],
    [HU, HU, -HU],

    # Front face
    [HU, HU, HU],
    [HU, -HU, HU],
    [-HU, -HU, HU],
    [-HU, HU, HU]
  ]

  vertices = [
    # Back face
    *common_vertices[0], *Vec3.back,
    *common_vertices[1], *Vec3.back,
    *common_vertices[2], *Vec3.back,
    *common_vertices[3], *Vec3.back,

    # Right face
    *common_vertices[3], *Vec3.right,
    *common_vertices[2], *Vec3.right,
    *common_vertices[5], *Vec3.right,
    *common_vertices[4], *Vec3.right,

    # Front face
    *common_vertices[4], *Vec3.forward,
    *common_vertices[5], *Vec3.forward,
    *common_vertices[6], *Vec3.forward,
    *common_vertices[7], *Vec3.forward,

    # Left face
    *common_vertices[7], *Vec3.left,
    *common_vertices[6], *Vec3.left,
    *common_vertices[1], *Vec3.left,
    *common_vertices[0], *Vec3.left,

    # Top face
    *common_vertices[7], *Vec3.up,
    *common_vertices[0], *Vec3.up,
    *common_vertices[3], *Vec3.up,
    *common_vertices[4], *Vec3.up,

    # Bottom face
    *common_vertices[1], *Vec3.down,
    *common_vertices[6], *Vec3.down,
    *common_vertices[5], *Vec3.down,
    *common_vertices[2], *Vec3.down
  ]

  indexes = (0..5).map do |i|
    stride = i * 4

    [
      stride, stride + 1, stride + 2,
      stride + 2, stride + 3, stride
    ]
  end.flatten

  super(vertices, indexes)
end