- fixed bug in mirror matching
authorJohn Tsiombikas <nuclear@mutantstargoat.com>
Mon, 19 Mar 2018 21:58:03 +0000 (23:58 +0200)
committerJohn Tsiombikas <nuclear@mutantstargoat.com>
Mon, 19 Mar 2018 21:58:03 +0000 (23:58 +0200)
- added option to disable mirror rendering

src/app.cc
src/metascene.cc
src/opt.cc
src/opt.h

index ee9b5e6..21e8acc 100644 (file)
@@ -183,6 +183,11 @@ bool app_init(int argc, char **argv)
        if(!rend->init()) {
                return false;
        }
        if(!rend->init()) {
                return false;
        }
+       if(opt.reflect) {
+               rend->ropt |= RENDER_MIRRORS;
+       } else {
+               rend->ropt &= ~RENDER_MIRRORS;
+       }
        rend->set_scene(mscn);
 
        glUseProgram(0);
        rend->set_scene(mscn);
 
        glUseProgram(0);
index ba5bdc2..465decf 100644 (file)
@@ -279,7 +279,7 @@ int MetaScene::calc_mirror_planes()
                                        FlatMirror *m = new FlatMirror;
                                        m->wplane = mir->wplane;
                                        m->next = planes;
                                        FlatMirror *m = new FlatMirror;
                                        m->wplane = mir->wplane;
                                        m->next = planes;
-                                       planes = node;
+                                       planes = m;
 
                                        mir->objects.push_back(obj);
                                        objmirror[obj] = mir;   // associate with object
 
                                        mir->objects.push_back(obj);
                                        objmirror[obj] = mir;   // associate with object
index f9bcf53..b5ab7ed 100644 (file)
@@ -11,7 +11,8 @@ Options def_opt = {
        false,  // vr
        false,  // fullscreen
        0,              // scene file
        false,  // vr
        false,  // fullscreen
        0,              // scene file
-       true    // music
+       true,   // music
+       true    // reflections
 };
 
 enum {
 };
 
 enum {
@@ -21,6 +22,7 @@ enum {
        OPT_WINDOWED,
        OPT_SCENEFILE,
        OPT_MUSIC,
        OPT_WINDOWED,
        OPT_SCENEFILE,
        OPT_MUSIC,
+       OPT_REFLECT,
        OPT_HELP
 };
 
        OPT_HELP
 };
 
@@ -32,6 +34,7 @@ static optcfg_option options[] = {
        {'w', "windowed", OPT_WINDOWED, "run in windowed mode"},
        {0, "scene", OPT_SCENEFILE, "scene file to open"},
        {'m', "music", OPT_MUSIC, "play background audio"},
        {'w', "windowed", OPT_WINDOWED, "run in windowed mode"},
        {0, "scene", OPT_SCENEFILE, "scene file to open"},
        {'m', "music", OPT_MUSIC, "play background audio"},
+       {'r', "reflect", OPT_REFLECT, "render reflections"},
        {'h', "help", OPT_HELP, "print usage and exit"},
        OPTCFG_OPTIONS_END
 };
        {'h', "help", OPT_HELP, "print usage and exit"},
        OPTCFG_OPTIONS_END
 };
@@ -102,6 +105,10 @@ static int opt_handler(optcfg *oc, int optid, void *cls)
                opt.music = is_enabled(oc);
                break;
 
                opt.music = is_enabled(oc);
                break;
 
+       case OPT_REFLECT:
+               opt.reflect = is_enabled(oc);
+               break;
+
        case OPT_HELP:
                printf("Usage: demo [options]\nOptions:\n");
                optcfg_print_options(oc);
        case OPT_HELP:
                printf("Usage: demo [options]\nOptions:\n");
                optcfg_print_options(oc);
index eb81ceb..df7ef30 100644 (file)
--- a/src/opt.h
+++ b/src/opt.h
@@ -7,6 +7,7 @@ struct Options {
        bool fullscreen;
        const char *scenefile;
        bool music;
        bool fullscreen;
        const char *scenefile;
        bool music;
+       bool reflect;
 };
 
 extern Options opt, def_opt;
 };
 
 extern Options opt, def_opt;