From: Rudolf Polzer Date: Thu, 1 Nov 2012 15:25:53 +0000 (+0100) Subject: add an "animbench" server command to benchmark model animation X-Git-Tag: xonotic-v0.7.0~201 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=e8c6250414d8cdf259e4d68e6cd2b97726ab5969;p=xonotic%2Fxonotic-data.pk3dir.git add an "animbench" server command to benchmark model animation --- diff --git a/qcsrc/server/command/sv_cmd.qc b/qcsrc/server/command/sv_cmd.qc index b2bf9d9b9..25c7940cb 100644 --- a/qcsrc/server/command/sv_cmd.qc +++ b/qcsrc/server/command/sv_cmd.qc @@ -823,6 +823,64 @@ void GameCommand_gettaginfo(float request, float argc) } } +void GameCommand_animbench(float request, float argc) +{ + switch(request) + { + case CMD_REQUEST_COMMAND: + { + entity tmp_entity; + float i; + vector v; + + if(argc >= 4) + { + tmp_entity = spawn(); + if(argv(1) == "w") + setmodel(tmp_entity, (nextent(world)).weaponentity.model); + else + { + precache_model(argv(1)); + setmodel(tmp_entity, argv(1)); + } + float f1 = stof(argv(2)); + float f2 = stof(argv(3)); + float t0; + float t1 = 0; + float t2 = 0; + float n = 0; + + while(t1 + t2 < 1) + { + tmp_entity.frame = f1; + t0 = gettime(GETTIME_HIRES); + getsurfacepoint(tmp_entity, 0, 0); + t1 += gettime(GETTIME_HIRES) - t0; + tmp_entity.frame = f2; + t0 = gettime(GETTIME_HIRES); + getsurfacepoint(tmp_entity, 0, 0); + t2 += gettime(GETTIME_HIRES) - t0; + n += 1; + } + print("model ", tmp_entity.model, " frame ", ftos(f1), " animtime ", ftos(n / t1), "/s\n"); + print("model ", tmp_entity.model, " frame ", ftos(f2), " animtime ", ftos(n / t2), "/s\n"); + + remove(tmp_entity); + return; + } + } + + default: + print("Incorrect parameters for ^2gettaginfo^7\n"); + case CMD_REQUEST_USAGE: + { + print("\nUsage:^3 sv_cmd gettaginfo model frame index [command one] [command two]\n"); + print("See also: ^2bbox, trace^7\n"); + return; + } + } +} + void GameCommand_gotomap(float request, float argc) { switch(request) @@ -1673,6 +1731,7 @@ void GameCommand_(float request) SERVER_COMMAND("allready", GameCommand_allready(request), "Restart the server and reset the players") \ SERVER_COMMAND("allspec", GameCommand_allspec(request, arguments), "Force all players to spectate") \ SERVER_COMMAND("anticheat", GameCommand_anticheat(request, arguments), "Create an anticheat report for a client") \ + SERVER_COMMAND("animbench", GameCommand_animbench(request, arguments), "Benchmark model animation (LAGS)") \ SERVER_COMMAND("bbox", GameCommand_bbox(request), "Print detailed information about world size") \ SERVER_COMMAND("bot_cmd", GameCommand_bot_cmd(request, arguments, command), "Control and send commands to bots") \ SERVER_COMMAND("cointoss", GameCommand_cointoss(request, arguments), "Flip a virtual coin and give random result") \