]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - prvm_edict.c
fix a display issue with warpzone decals I caused in my last change
[xonotic/darkplaces.git] / prvm_edict.c
index 80803a23f66e05a0cb66397bde6996fdb77a2129..d93e979616b823c3f5b9f9ca84f199c5535fbff2 100644 (file)
@@ -36,6 +36,7 @@ cvar_t prvm_language = {0, "prvm_language", "", "when set, loads progs.dat.LANGU
 cvar_t prvm_traceqc = {0, "prvm_traceqc", "0", "prints every QuakeC statement as it is executed (only for really thorough debugging!)"};
 // LordHavoc: counts usage of each QuakeC statement
 cvar_t prvm_statementprofiling = {0, "prvm_statementprofiling", "0", "counts how many times each QuakeC statement has been executed, these counts are displayed in prvm_printfunction output (if enabled)"};
+cvar_t prvm_timeprofiling = {0, "prvm_timeprofiling", "0", "counts how long each function has been executed, these counts are displayed in prvm_profile output (if enabled)"};
 cvar_t prvm_backtraceforwarnings = {0, "prvm_backtraceforwarnings", "0", "print a backtrace for warnings too"};
 cvar_t prvm_leaktest = {0, "prvm_leaktest", "0", "try to detect memory leaks in strings or entities"};
 cvar_t prvm_leaktest_ignore_classnames = {0, "prvm_leaktest_ignore_classnames", "", "classnames of entities to NOT leak check because they are found by find(world, classname, ...) but are actually spawned by QC code (NOT map entities)"};
@@ -1181,7 +1182,7 @@ void PRVM_ED_EdictGet_f(void)
        }
 
        v = (prvm_eval_t *)(ed->fields.vp + key->ofs);
-       s = PRVM_UglyValueString((etype_t)key->type, v);
+       s = PRVM_UglyValueString(key->type, v);
        if(Cmd_Argc() == 5)
        {
                cvar_t *cvar = Cvar_FindVar(Cmd_Argv(4));
@@ -1226,7 +1227,7 @@ void PRVM_ED_GlobalGet_f(void)
        }
 
        v = (prvm_eval_t *) &prog->globals.generic[key->ofs];
-       s = PRVM_UglyValueString((etype_t)key->type, v);
+       s = PRVM_UglyValueString(key->type, v);
        if(Cmd_Argc() == 4)
        {
                cvar_t *cvar = Cvar_FindVar(Cmd_Argv(3));
@@ -1729,6 +1730,8 @@ void PRVM_FindOffsets(void)
        prog->globaloffsets.v_right                       = PRVM_ED_FindGlobalOffset("v_right");
        prog->globaloffsets.v_up                          = PRVM_ED_FindGlobalOffset("v_up");
        prog->globaloffsets.view_angles                   = PRVM_ED_FindGlobalOffset("view_angles");
+       prog->globaloffsets.view_punchangle               = PRVM_ED_FindGlobalOffset("view_punchangle");
+       prog->globaloffsets.view_punchvector              = PRVM_ED_FindGlobalOffset("view_punchvector");
        prog->globaloffsets.worldstatus                   = PRVM_ED_FindGlobalOffset("worldstatus");
        prog->globaloffsets.particles_alphamin            = PRVM_ED_FindGlobalOffset("particles_alphamin");
        prog->globaloffsets.particles_alphamax            = PRVM_ED_FindGlobalOffset("particles_alphamax");
@@ -1893,7 +1896,7 @@ po_t *PRVM_PO_Load(const char *filename, mempool_t *pool)
        if(!buf)
                return NULL;
 
-       po = (po_t *)Mem_Alloc(pool, sizeof(*po));
+       po = Mem_Alloc(pool, sizeof(*po));
        memset(po, 0, sizeof(*po));
 
        p = buf;
@@ -1957,16 +1960,16 @@ po_t *PRVM_PO_Load(const char *filename, mempool_t *pool)
                {
                        if(thisstr.key)
                                Mem_Free(thisstr.key);
-                       thisstr.key = (char *)Mem_Alloc(pool, decodedpos + 1);
+                       thisstr.key = Mem_Alloc(pool, decodedpos + 1);
                        memcpy(thisstr.key, decodedbuf, decodedpos + 1);
                }
                else if(decodedpos > 0 && thisstr.key) // skip empty translation results
                {
-                       thisstr.value = (char *)Mem_Alloc(pool, decodedpos + 1);
+                       thisstr.value = Mem_Alloc(pool, decodedpos + 1);
                        memcpy(thisstr.value, decodedbuf, decodedpos + 1);
                        hashindex = CRC_Block((const unsigned char *) thisstr.key, strlen(thisstr.key)) % PO_HASHSIZE;
                        thisstr.nextonhashchain = po->hashtable[hashindex];
-                       po->hashtable[hashindex] = (po_string_t *)Mem_Alloc(pool, sizeof(thisstr));
+                       po->hashtable[hashindex] = Mem_Alloc(pool, sizeof(thisstr));
                        memcpy(po->hashtable[hashindex], &thisstr, sizeof(thisstr));
                        memset(&thisstr, 0, sizeof(thisstr));
                }
@@ -2740,6 +2743,7 @@ void PRVM_Init (void)
        Cvar_RegisterVariable (&prvm_language);
        Cvar_RegisterVariable (&prvm_traceqc);
        Cvar_RegisterVariable (&prvm_statementprofiling);
+       Cvar_RegisterVariable (&prvm_timeprofiling);
        Cvar_RegisterVariable (&prvm_backtraceforwarnings);
        Cvar_RegisterVariable (&prvm_leaktest);
        Cvar_RegisterVariable (&prvm_leaktest_ignore_classnames);
@@ -3229,7 +3233,7 @@ void PRVM_LeakTest(void)
                if(prog->knownstrings[i])
                if(prog->knownstrings_freeable[i])
                if(prog->knownstrings_origin[i])
-               if(!PRVM_IsStringReferenced(-1 - i))
+               if(!PRVM_IsStringReferenced(PRVM_KNOWNSTRINGBASE + i))
                {
                        Con_Printf("Unreferenced string found!\n  Value: %s\n  Origin: %s\n", prog->knownstrings[i], prog->knownstrings_origin[i]);
                        leaked = true;