]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/models/all.qh
Merge branch 'master' into martin-t/globals
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / models / all.qh
index 38c533449847ec6105d3d6fc9277f12e7564c062..ce98629411fd0cd6c3ce798a813acf5dd0fd602f 100644 (file)
@@ -1,41 +1,23 @@
-#ifndef MODELS_ALL_H
-#define MODELS_ALL_H
+#pragma once
 
-#define setmodel(e, m) _setmodel((e), (m).model_str())
+#include "model.qh"
 
-REGISTRY(Models, BIT(9))
-REGISTER_REGISTRY(RegisterModels)
-
-CLASS(Model, Object)
-    ATTRIB(Model, m_id, int, 0)
-    ATTRIB(Model, model_str, string(), func_null)
-    CONSTRUCTOR(Model, string() path)
-    {
-        CONSTRUCT(Model);
-        this.model_str = path;
-    }
-    METHOD(Model, model_precache, void(entity this)) {
-        string s = this.model_str();
-        if (s != "" && s != "null" && !fexists(s)) {
-            LOG_WARNINGF("Missing model: \"%s\"\n", s);
-            return;
-        }
-        LOG_TRACEF("precache_model(\"%s\")\n", s);
-        precache_model(s);
-    }
-ENDCLASS(Model)
+REGISTRY(Models, BITS(9))
+#define Models_from(i) _Models_from(i, MDL_Null)
+REGISTER_REGISTRY(Models)
 
 #define MODEL(name, path) \
     string MDL_##name##_get() { return path; } \
-    REGISTER(RegisterModels, MDL, Models, name, m_id, NEW(Model, MDL_##name##_get))
+    REGISTER(Models, MDL, name, m_id, NEW(Model, MDL_##name##_get))
+
+STATIC_INIT(NULLMDL)
+{
+    precache_model("null");
+}
 
-STATIC_INIT(RegisterModels_precache) {
-    FOREACH(Models, true, LAMBDA({
-        it.model_precache(it);
-    }));
+PRECACHE(Models) {
+    FOREACH(Models, true, it.model_precache(it));
 }
 
 MODEL(Null, "null");
 #include "all.inc"
-
-#endif