]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/models/model.qh
Fix FL_WEAPON flag overlapping FL_JUMPRELEASED. This unintentional change was introdu...
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / models / model.qh
index b4005b77775f421a5dec31469f2797dbfbf5c64f..c6a1c2199b62b1c5a6ec305cbf81a28bbe3803e0 100644 (file)
@@ -1,25 +1,30 @@
-#ifndef MODEL_H
-#define MODEL_H
-
-#define setmodel(e, m) _setmodel((e), (m).model_str())
+#pragma once
 
 CLASS(Model, Object)
-    ATTRIB(Model, m_id, int, 0)
-    ATTRIB(Model, model_str, string(), func_null)
+    ATTRIB(Model, m_id, int, 0);
+    ATTRIB(Model, model_str, string());
+    ATTRIB(Model, model_str_, string);
     CONSTRUCTOR(Model, string() path)
     {
         CONSTRUCT(Model);
         this.model_str = path;
     }
-    METHOD(Model, model_precache, void(entity this)) {
+    METHOD(Model, model_precache, void(Model this))
+    {
+        TC(Model, this);
         string s = this.model_str();
         if (s != "" && s != "null" && !fexists(s)) {
-            LOG_WARNINGF("Missing model: \"%s\"\n", s);
+            LOG_WARNF("Missing model: \"%s\"", s);
             return;
         }
-        LOG_TRACEF("precache_model(\"%s\")\n", s);
+        //profile(sprintf("precache_model(\"%s\")", s));
         precache_model(s);
+        strcpy(this.model_str_, s);
     }
 ENDCLASS(Model)
 
-#endif
+#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