ubershaders and path stripping in metascene
[ld37_one_room] / src / datamap.cc
index e466082..e448923 100644 (file)
 
 static char *clean_line(char *s);
 
+DataMap::DataMap()
+{
+       strip_paths = false;
+}
+
 void DataMap::clear()
 {
        dmap.clear();
@@ -22,6 +27,11 @@ void DataMap::set_path(const char *path)
        root = std::string(path);
 }
 
+void DataMap::set_strip(bool s)
+{
+       strip_paths = s;
+}
+
 bool DataMap::load_map(const char *fname)
 {
        std::string path = root.empty() ? fname : root + std::string("/") + fname;
@@ -91,6 +101,13 @@ int DataMap::lookup(const char *in, char *buf, int bsz) const
 {
        std::string res;
 
+       if(strip_paths) {
+               const char *ptr = strrchr(in, '/');
+               if(ptr) {
+                       in = ptr + 1;
+               }
+       }
+
        char *inbuf = (char*)alloca(strlen(in) + 1);
        strcpy(inbuf, in);
        in = clean_line(inbuf);