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
| abstract class SceneElement {
public:
alias node this;
@property node() {
return mNode;
}
@property node() const pure nothrow {
return mNode;
}
private:
SceneNode mNode;
}
class SceneNode {
public:
@property position() const {
return mPosition;
}
@property position(vec3 p) {
foreach(child; mChilds) {
child.move(vec3(1.0f), p - mPosition);
}
mPosition = p;
}
private:
vec3 mPosition = vec3(0.0f);
}
class Camera : SceneElement { }
// cam une Camera attachée à un SceneNode
cam.position = vec3(50.0f, 20.0f, 50.0f); |
Partager