forked from fire-archive/go-ogre3d
/
scenenode.go
50 lines (39 loc) · 1.11 KB
/
scenenode.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
49
50
package ogre
/*
#cgo LDFLAGS: -lllcoi
#include "llcoi/ogre_interface.h"
*/
import "C"
type SceneNode struct {
cptr C.SceneNodeHandle
}
func (n *SceneNode) Attach(e Entity) {
C.scenenode_attach_entity(n.cptr, e.cptr)
}
func (n *SceneNode) Detach(e Entity) {
C.scenenode_detach_entity(n.cptr, e.cptr)
}
func (n *SceneNode) SetPosition(x, y, z float32) {
C.scenenode_set_position(n.cptr, C.float(x), C.float(y), C.float(z))
}
type TransformSpace int
const (
TS_LOCAL TransformSpace = iota
TS_PARENT
TS_WORLD
)
func (n *SceneNode) YawDeg(angle float32, t TransformSpace) {
C.scenenode_yaw_degree(n.cptr, C.coiReal(angle), C.transform_space(t))
}
func (n *SceneNode) Yaw(radians float32, t TransformSpace) {
C.scenenode_yaw(n.cptr, C.coiReal(radians), C.transform_space(t))
}
func (n *SceneNode) Pitch(radians float32, t TransformSpace) {
C.scenenode_pitch(n.cptr, C.coiReal(radians), C.transform_space(t))
}
func (n *SceneNode) Roll(radians float32, t TransformSpace) {
C.scenenode_roll(n.cptr, C.coiReal(radians), C.transform_space(t))
}
func (n *SceneNode) ResetOrientation() {
C.scenenode_reset_orientation(n.cptr)
}