X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fdebug.qh;h=e5012f8cc1b8771a0b7d8f53225c59ef6b9308ae;hp=7144bf3da5ed6bb4166c3cc5b3f8f4895d416a7f;hb=d841a3f6bd4c6af2da0506828c84063933d80ca1;hpb=ceea8405790b1bc1ac91b3c382884ebaeafcbcac diff --git a/qcsrc/common/debug.qh b/qcsrc/common/debug.qh index 7144bf3da..e5012f8cc 100644 --- a/qcsrc/common/debug.qh +++ b/qcsrc/common/debug.qh @@ -1,5 +1,9 @@ #pragma once +#ifdef CSQC +#include +#endif + // This includes some functions useful for debugging. // Some more bot-specific ones are in server/pathlib/debug.qc. @@ -65,7 +69,7 @@ REGISTER_NET_TEMP(net_debug) * 6: on (.solid != 0) */ bool autocvar_debugdraw; -#endif +#endif // GAMEQC #ifdef CSQC string autocvar_debugdraw_filter, autocvar_debugdraw_filterout; @@ -157,8 +161,7 @@ bool autocvar_debugdraw; }); }); } -#endif - +#endif // CSQC #ifdef SVQC COMMON_COMMAND(debugdraw_sv, "Dump all server entities") @@ -189,11 +192,11 @@ bool autocvar_debugdraw; } } } -#endif -#endif +#endif // SVQC +#endif // ENABLE_DEBUGDRAW -GENERIC_COMMAND(bufstr_get, "Examine a string buffer object") +GENERIC_COMMAND(bufstr_get, "Examine a string buffer object", false) { switch (request) { @@ -201,8 +204,7 @@ GENERIC_COMMAND(bufstr_get, "Examine a string buffer object") { int bufhandle = stof(argv(1)); int string_index = stof(argv(2)); - string s = bufstr_get(bufhandle, string_index); - LOG_INFOF("%s", s); + LOG_INFO(bufstr_get(bufhandle, string_index)); return; } @@ -216,13 +218,13 @@ GENERIC_COMMAND(bufstr_get, "Examine a string buffer object") } -GENERIC_COMMAND(version, "Print the current version") +GENERIC_COMMAND(version, "Print the current version", false) { switch (request) { case CMD_REQUEST_COMMAND: { - LOG_INFO(WATERMARK); + LOG_INFO(PROGNAME, " version: ", WATERMARK); return; } default: @@ -238,7 +240,8 @@ GENERIC_COMMAND(version, "Print the current version") #ifdef CSQC void(float bufhandle, string pattern, string antipattern) buf_cvarlist = #517; #endif -GENERIC_COMMAND(cvar_localchanges, "Print locally changed cvars") + +GENERIC_COMMAND(cvar_localchanges, "Print locally changed cvars", false) { switch (request) { @@ -272,6 +275,7 @@ GENERIC_COMMAND(cvar_localchanges, "Print locally changed cvars") #if ENABLE_DEBUGTRACE REGISTER_STAT(TRACE_ENT, int) + #ifdef SVQC bool autocvar_debugtrace; @@ -288,16 +292,16 @@ MUTATOR_HOOKFUNCTION(trace, SV_StartFrame) it.debug_trace_button = btn; if (!btn || skip) continue; FOREACH_ENTITY(true, { - it.solid_prev = it.solid; + it.solid_prev = it.solid; it.solid = SOLID_BBOX; }); vector forward = '0 0 0'; vector right = '0 0 0'; vector up = '0 0 0'; - MAKEVECTORS(makevectors, it.v_angle, forward, right, up); + MAKE_VECTORS(it.v_angle, forward, right, up); vector pos = it.origin + it.view_ofs; traceline(pos, pos + forward * max_shot_distance, MOVE_NORMAL, it); FOREACH_ENTITY(true, { - it.solid = it.solid_prev; - it.solid_prev = 0; + it.solid = it.solid_prev; + it.solid_prev = 0; }); entity e = trace_ent; int i = etof(e); @@ -307,7 +311,8 @@ MUTATOR_HOOKFUNCTION(trace, SV_StartFrame) stuffcmd(it, sprintf("prvm_edict server %d\n", i)); }); } -#endif +#endif // SVQC + #ifdef CSQC entity TRACE_ENT; void Trace_draw2d(entity this) @@ -325,11 +330,12 @@ STATIC_INIT(TRACE_ENT) e.draw2d = Trace_draw2d; IL_PUSH(g_drawables_2d, e); } -#endif +#endif // CSQC + #endif -GENERIC_COMMAND(find, "Search through entities for matching classname") +GENERIC_COMMAND(find, "Search through entities for matching classname", false) { switch (request) { @@ -360,7 +366,7 @@ GENERIC_COMMAND(find, "Search through entities for matching classname") } -GENERIC_COMMAND(findat, "Search through entities for matching origin") +GENERIC_COMMAND(findat, "Search through entities for matching origin", false) { switch (request) { @@ -396,14 +402,14 @@ CLASS(DebugText3d, Object) ATTRIB(DebugText3d, message, string); // the text (i wanted to use the .text field but then this whole macro-based-inheritance thing shat itself) ATTRIB(DebugText3d, health, float); // text alignment (recycled field) ATTRIB(DebugText3d, hit_time, float); // when it was created - ATTRIB(DebugText3d, fade_rate, float); // how fast is should disappear + ATTRIB(DebugText3d, fade_rate, float); // how fast it should disappear ATTRIB(DebugText3d, velocity, vector); CONSTRUCTOR(DebugText3d, vector pos, string msg, float align, float fade_rate_, vector vel) { CONSTRUCT(DebugText3d); this.origin = pos; this.message = strzone(msg); - this.health = align; + SetResource(this, RES_HEALTH, align); this.hit_time = time; this.fade_rate = fade_rate_; this.velocity = vel; @@ -411,7 +417,7 @@ CLASS(DebugText3d, Object) } DESTRUCTOR(DebugText3d) { - strunzone(this.message); + strfree(this.message); } void DebugText3d_draw2d(DebugText3d this) { @@ -423,16 +429,25 @@ CLASS(DebugText3d, Object) return; } - int size = 8; + int size = 11; vector screen_pos = project_3d_to_2d(this.origin) + since_created * this.velocity; - float align = this.health; - if (align > 0) - screen_pos.x -= stringwidth(this.message, true, size * '1 1 0') * min(1, align); if (screen_pos.z < 0) return; // behind camera + screen_pos.z = 0; + float align = GetResource(this, RES_HEALTH); + string msg; + vector msg_pos; - vector rgb = '1 1 0'; - drawcolorcodedstring2_builtin(screen_pos, this.message, size * '1 1 0', rgb, alpha_, DRAWFLAG_NORMAL); + int n = tokenizebyseparator(this.message, "\n"); + for(int k = 0; k < n; ++k) + { + msg = argv(k); + msg_pos = screen_pos + k * 1.25 * size * eY; + if (align > 0) + msg_pos.x -= stringwidth(msg, true, size * '1 1 0') * min(1, align); + + drawcolorcodedstring_builtin(msg_pos, msg, size * '1 1 0', alpha_, DRAWFLAG_NORMAL); + } } ATTRIB(DebugText3d, draw2d, void(DebugText3d), DebugText3d_draw2d); ENDCLASS(DebugText3d) @@ -459,13 +474,13 @@ NET_HANDLE(debug_text_3d, bool is_new) { #define debug_text_3d_5(pos, msg, align, dur, vel) debug_text_3d_fn(pos, msg, align, dur, vel) ERASEABLE -void debug_text_3d_fn(vector pos, string msg, float align, float duration, vector velocity) { +void debug_text_3d_fn(vector pos, string msg, float align, float duration, vector vel) { WriteHeader(MSG_BROADCAST, debug_text_3d); WriteVector(MSG_BROADCAST, pos); WriteString(MSG_BROADCAST, msg); WriteFloat(MSG_BROADCAST, align); WriteFloat(MSG_BROADCAST, duration); - WriteVector(MSG_BROADCAST, velocity); + WriteVector(MSG_BROADCAST, vel); } #endif // SVQC