]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/oo/base.qh
Tidy up OO helpers
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / oo / base.qh
index 30423850e807a4bdd64909ecf2bc50ecb28bc7eb..a8337501be68c5d77b007bc6da7e2441aa87b377 100644 (file)
@@ -2,33 +2,27 @@
 #define BASE_H
 
 .string classname;
-entity Object_vtbl;
 .string vtblname;
 .entity vtblbase;
-// THIS LINE INTENTIONALLY LEFT BLANK
-entity spawnVtbl(entity e, entity b)
+entity spawnVtbl(entity this, entity base)
 {
-       entity v;
-       v = spawn();
-       copyentity(e, v);
-       v.vtblname = v.classname;
-       v.classname = "vtbl";
-       if(b)
-               v.vtblbase = b;
-       else
-               v.vtblbase = v;
-       return v;
+       entity vtbl = spawn();
+       copyentity(this, vtbl);
+       vtbl.vtblname = vtbl.classname;
+       vtbl.classname = "vtbl";
+       vtbl.vtblbase = base ? base : vtbl; // Top level objects use vtbl as base
+       return vtbl;
 }
-entity spawnObject()
+
+entity Object_vtbl;
+entity spawnObject(entity this, entity)
 {
-       entity e;
-       e = spawn();
-       e.classname = "Object";
-       if(!Object_vtbl)
-               Object_vtbl = spawnVtbl(e, null_entity);
-       return e;
+       this = spawn();
+       this.classname = "Object";
+       if (!Object_vtbl) Object_vtbl = spawnVtbl(this, null_entity);
+       return this;
 }
 
-#define NEW(cname) (spawn##cname())
+#define NEW(cname) (spawn##cname(null_entity, null_entity))
 
 #endif