/
renderable.go
48 lines (38 loc) · 1 KB
/
renderable.go
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
package gogol
import (
"container/list"
"github.com/go-gl/gl/v2.1/gl"
)
type Renderable struct {
VboPosition VboPosition
Element *list.Element
Layer *Layer
Length int
}
func NewRenderable(verts []float32) *Renderable {
r := &Renderable{
VboPosition: G.Renderer.NewVboPosition(verts),
Length: len(verts),
}
gl.BindBuffer(gl.ARRAY_BUFFER, r.VboPosition.Vbo.Id)
gl.BufferSubData(gl.ARRAY_BUFFER, int(r.VboPosition.Index*4), len(verts)*4, gl.Ptr(verts))
return r
}
func (r *Renderable) MoveAfter(c Component) {
if c.GetRenderable().Layer != r.Layer {
return
}
r.Layer.MoveAfter(r.Element, c.GetRenderable().Element)
}
func (r *Renderable) MoveBefore(c Component) {
if c.GetRenderable().Layer != r.Layer {
return
}
r.Layer.MoveBefore(r.Element, c.GetRenderable().Element)
}
func (r *Renderable) MoveToFront() {
r.Layer.MoveToFront(r.Element)
}
func (r *Renderable) MoveToBack() {
r.Layer.MoveToBack(r.Element)
}