static const float AXIS_RADIUS = 5.0f;
-static void renderScene(const Scene*);
+static void renderScene(const Scene*, const Transform baseTransform);
static void setupCamera();
static void moveCameraTo(const Scene* scene);
static void drawAxes();
setupCamera();
moveCameraTo(cameraAnchor);
- renderScene(currentScene);
+ renderScene(currentScene, identity());
glFlush();
glutSwapBuffers();
glutPostRedisplay();
}
-void renderScene(const Scene* scene) {
+static void renderScene(const Scene* scene, const Transform baseTransform) {
if (!scene) {
return;
}
+ Transform transform = multiply(scene->transform, baseTransform);
+
glMatrixMode(GL_MODELVIEW);
- glLoadTransposeMatrixf((const GLfloat*) &scene->transform);
+ glLoadTransposeMatrixf((const GLfloat*) &transform);
glDisable(GL_LIGHTING);
drawAxes();
}
for (size_t i = 0; i < scene->numChildren; ++i) {
- renderScene(scene->children[i]);
+ renderScene(scene->children[i], transform);
}
}