optionally source assets from URL
[laserbrain_demo] / src / opt.cc
index 9226785..7f3d4bb 100644 (file)
@@ -9,15 +9,22 @@ Options opt;
 Options def_opt = {
        1280, 800,
        false,  // vr
-       false   // fullscreen
+       false,  // fullscreen
+       0,              // scene file
+       true,   // music
+       true,   // reflections
+       0               // data url
 };
 
 enum {
        OPT_SIZE,
        OPT_VR,
-       OPT_SRGB,
        OPT_FULLSCREEN,
        OPT_WINDOWED,
+       OPT_SCENEFILE,
+       OPT_MUSIC,
+       OPT_REFLECT,
+       OPT_DATAURL,
        OPT_HELP
 };
 
@@ -27,6 +34,10 @@ static optcfg_option options[] = {
        {0, "vr", OPT_VR, "enable VR mode"},
        {'f', "fullscreen", OPT_FULLSCREEN, "run in fullscreen mode"},
        {'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"},
+       {0, "url", OPT_DATAURL, "data URL"},
        {'h', "help", OPT_HELP, "print usage and exit"},
        OPTCFG_OPTIONS_END
 };
@@ -89,8 +100,24 @@ static int opt_handler(optcfg *oc, int optid, void *cls)
                opt.fullscreen = !is_enabled(oc);
                break;
 
+       case OPT_SCENEFILE:
+               opt.scenefile = strdup(optcfg_next_value(oc));
+               break;
+
+       case OPT_MUSIC:
+               opt.music = is_enabled(oc);
+               break;
+
+       case OPT_REFLECT:
+               opt.reflect = is_enabled(oc);
+               break;
+
+       case OPT_DATAURL:
+               opt.data_url = strdup(optcfg_next_value(oc));
+               break;
+
        case OPT_HELP:
-               printf("Usage: vrfileman [options]\nOptions:\n");
+               printf("Usage: demo [options]\nOptions:\n");
                optcfg_print_options(oc);
                exit(0);
        }
@@ -99,6 +126,10 @@ static int opt_handler(optcfg *oc, int optid, void *cls)
 
 static int arg_handler(optcfg *oc, const char *arg, void *cls)
 {
-       fprintf(stderr, "unexpected argument: %s\n", arg);
-       return -1;
+       if(opt.scenefile) {
+               fprintf(stderr, "unexpected argument: %s\n", arg);
+               return -1;
+       }
+       opt.scenefile = arg;
+       return 0;
 }