#ifndef METASCENE_H_
#define METASCENE_H_
+#include <vector>
#include <map>
#include "scene.h"
#include "mesh.h"
+#include "geom.h"
+#include "audio/ovstream.h"
#include "datamap.h"
+
+struct FlatMirror {
+ Plane plane;
+ float reflect;
+ //std::vector<Object*> objects;
+
+ FlatMirror *next;
+};
+
+
class MetaScene {
public:
DataMap datamap;
std::map<Scene*, void*> scndata;
+ FlatMirror *mirrors;
+ int num_mirrors;
+ std::map<Object*, FlatMirror*> objmirror;
+
+ AudioStream *music;
MetaScene();
~MetaScene();
void update(float dt);
void draw() const;
+
+ /* helper functions which end up calling the corresponding Scene functions
+ * for every scene
+ */
+ SceneNode *find_node(const char *name) const;
+ SceneNode *match_node(const char *qstr) const;
+ std::list<SceneNode*> match_nodes(const char *qstr) const;
+
+ Scene *extract_nodes(const char *qstr);
+
+ int calc_mirror_planes();
};
#endif // METASCENE_H_