mirror planes detection needs work
[laserbrain_demo] / src / metascene.h
index 8d0f5c2..6987f00 100644 (file)
@@ -1,11 +1,25 @@
 #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;
+       SceneNode *node;
+
+       FlatMirror *next;
+};
+
+
 class MetaScene {
 public:
        DataMap datamap;
@@ -18,6 +32,10 @@ public:
 
        std::map<Scene*, void*> scndata;
 
+       FlatMirror *mirrors;
+       std::map<Object*, FlatMirror*> objmirror;
+
+       AudioStream *music;
 
        MetaScene();
        ~MetaScene();
@@ -27,6 +45,17 @@ public:
 
        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_