]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Models: cache .model_str() result, reduces fexists calls
authorTimePath <andrew.hardaker1995@gmail.com>
Sun, 8 Apr 2018 11:59:35 +0000 (21:59 +1000)
committerTimePath <andrew.hardaker1995@gmail.com>
Sun, 8 Apr 2018 11:59:35 +0000 (21:59 +1000)
qcsrc/common/models/model.qh

index 7a1e7d73c2a471c802a1cf496d9a68e15c0d49e9..38aa4e33ada8d62930db4634610e5f2cb8610221 100644 (file)
@@ -1,10 +1,9 @@
 #pragma once
 
-#define setmodel(e, m) _setmodel((e), (m).model_str())
-
 CLASS(Model, Object)
     ATTRIB(Model, m_id, int, 0);
     ATTRIB(Model, model_str, string());
+    ATTRIB(Model, model_str_, string);
     CONSTRUCTOR(Model, string() path)
     {
         CONSTRUCT(Model);
@@ -20,5 +19,12 @@ CLASS(Model, Object)
         }
         profile(sprintf("precache_model(\"%s\")", s));
         precache_model(s);
+        strcpy(this.model_str_, s);
     }
 ENDCLASS(Model)
+
+#define setmodel(this, m) MACRO_BEGIN \
+    Model _setmodel_model = (m); \
+    string _setmodel_cached = _setmodel_model.model_str_; \
+    _setmodel((this), _setmodel_cached ? _setmodel_cached : _setmodel_model.model_str()); \
+MACRO_END