-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathBillboard.cpp
92 lines (73 loc) · 2.44 KB
/
Billboard.cpp
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include "Billboard.h"
Billboard::Billboard() {
bb = smgr->addBillboardSceneNode();
bb->grab();
}
Billboard::Billboard(const Billboard& other) {
bb = smgr->addBillboardSceneNode();
bb->grab();
bb = other.bb;
myMaterial = other.myMaterial;
bb->getMaterial(0) = other.myMaterial;
}
Billboard::Billboard(const Material& material) {
bb = smgr->addBillboardSceneNode();
bb->grab();
loadMaterial(material);
}
Vector3D Billboard::getPosition() {
return Vector3D(bb->getPosition().X, bb->getPosition().Y, bb->getPosition().Z);
}
void Billboard::setPosition(const Vector3D& pos) {
bb->setPosition(irr::core::vector3df(pos.x, pos.y, pos.z));
}
Vector2D Billboard::getSize() {
return Vector2D(bb->getSize().Width, bb->getSize().Height);
}
void Billboard::setSize(const Vector2D& size) {
bb->setSize(irr::core::vector2df(size.x, size.y));
}
bool Billboard::loadMaterial(const Material& material) {
myMaterial = material.mat;
bb->getMaterial(0) = myMaterial;
return true;
}
Vector3D Billboard::getRotLock() {
return Vector3D(bb->getRotLock().X, bb->getRotLock().Y, bb->getRotLock().Z);
}
void Billboard::setRotLock(const Vector3D& rot) {
bb->setRotLock(irr::core::vector3d<bool>(rot.x, rot.y, rot.z));
}
irr::f32 Billboard::getYPivot() {
return bb->getPivotY();
}
void Billboard::setYPivot(float y) {
bb->setPivotY(y);
}
bool Billboard::getVisible() {
return bb ? bb->isVisible() : false;
}
void Billboard::setVisible(bool visible) {
if (bb) {
bb->setVisible(visible);
}
}
void Billboard::destroy() {
if (bb) {
bb->remove();
}
}
void bindBillboard() {
sol::usertype<Billboard> bindType = lua->new_usertype<Billboard>("Billboard",
sol::constructors<Billboard(), Billboard(const Billboard & other), Billboard(const Material & material)>(),
sol::base_classes, sol::bases<Compatible3D>(),
"position", sol::property(&Billboard::getPosition, &Billboard::setPosition),
"size", sol::property(&Billboard::getSize, &Billboard::setSize),
"yPivot", sol::property(&Billboard::getYPivot, &Billboard::setYPivot),
"lockAxis", sol::property(&Billboard::getRotLock, &Billboard::setRotLock),
"visible", sol::property(&Billboard::getVisible, &Billboard::setVisible)
);
bindType["loadMaterial"] = &Billboard::loadMaterial;
bindType["destroy"] = &Billboard::destroy;
bindType["setParent"] = &Billboard::setParent;
}