#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; // plane in local coordinates (original)
+ Plane wplane; // world coords plane (derived, identical to plane if node == 0)
+ float reflect;
+ std::vector<Object*> objects;
+ SceneNode *node;
+
+ FlatMirror *next;
+};
+
+
class MetaScene {
public:
DataMap datamap;
std::map<Scene*, void*> scndata;
+ FlatMirror *mirrors;
+ std::map<Object*, FlatMirror*> objmirror;
+
AudioStream *music;
MetaScene();
std::list<SceneNode*> match_nodes(const char *qstr) const;
Scene *extract_nodes(const char *qstr);
+
+ int calc_mirror_planes();
};
#endif // METASCENE_H_