X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fmodels%2Fmodel.qh;h=c6a1c2199b62b1c5a6ec305cbf81a28bbe3803e0;hp=b4005b77775f421a5dec31469f2797dbfbf5c64f;hb=cab88c9722dd8c504eb5d797d80c3e524ebfa08b;hpb=18e2cd311a581f77ba8eb9c5421dd219ff5d760d diff --git a/qcsrc/common/models/model.qh b/qcsrc/common/models/model.qh index b4005b777..c6a1c2199 100644 --- a/qcsrc/common/models/model.qh +++ b/qcsrc/common/models/model.qh @@ -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