- Added tracking of time spent specifically in running action functions. I feel kind of stupid

about this now. I spent three days trying to figure out why the VC++ debug version was so slow.
  It turns out I had a conditional breakpoint set in a high-traffic area. D'oh!

The rest of this stuff should get merged into trunk:

- Fixed: Writing to debugfile uses the standard fprintf, which does not understand %td on VC++.
- Fixed: Instead of crashing when a sprite has been scaled to 0, just don't draw it.

SVN r3896 (scripting)
This commit is contained in:
Randy Heit 2012-10-21 03:46:17 +00:00
parent 2c92941f6b
commit 47eec0b275
4 changed files with 16 additions and 4 deletions

View file

@ -43,6 +43,7 @@
static cycle_t ThinkCycles; static cycle_t ThinkCycles;
extern cycle_t BotSupportCycles; extern cycle_t BotSupportCycles;
extern cycle_t ActionCycles;
extern int BotWTG; extern int BotWTG;
IMPLEMENT_CLASS (DThinker) IMPLEMENT_CLASS (DThinker)
@ -409,6 +410,7 @@ void DThinker::RunThinkers ()
ThinkCycles.Reset(); ThinkCycles.Reset();
BotSupportCycles.Reset(); BotSupportCycles.Reset();
ActionCycles.Reset();
BotWTG = 0; BotWTG = 0;
ThinkCycles.Clock(); ThinkCycles.Clock();
@ -575,6 +577,6 @@ DThinker *FThinkerIterator::Next ()
ADD_STAT (think) ADD_STAT (think)
{ {
FString out; FString out;
out.Format ("Think time = %04.1f ms", ThinkCycles.TimeMS()); out.Format ("Think time = %04.1f ms, Action = %04.1f ms", ThinkCycles.TimeMS(), ActionCycles.TimeMS());
return out; return out;
} }

View file

@ -50,6 +50,7 @@
#include "templates.h" #include "templates.h"
#include "cmdlib.h" #include "cmdlib.h"
#include "g_level.h" #include "g_level.h"
#include "stats.h"
extern void LoadActors (); extern void LoadActors ();
extern void InitBotStuff(); extern void InitBotStuff();
@ -58,13 +59,17 @@ extern void ClearStrifeTypes();
TArray<PClassActor *> PClassActor::AllActorClasses; TArray<PClassActor *> PClassActor::AllActorClasses;
FRandom FState::pr_statetics; FRandom FState::pr_statetics;
cycle_t ActionCycles;
bool FState::CallAction(AActor *self, AActor *stateowner) bool FState::CallAction(AActor *self, AActor *stateowner)
{ {
if (ActionFunc != NULL) if (ActionFunc != NULL)
{ {
VMFrameStack stack; ActionCycles.Clock();
static VMFrameStack stack;
VMValue params[3] = { self, stateowner, VMValue(this, ATAG_STATE) }; VMValue params[3] = { self, stateowner, VMValue(this, ATAG_STATE) };
stack.Call(ActionFunc, params, countof(params), NULL, 0, NULL); stack.Call(ActionFunc, params, countof(params), NULL, 0, NULL);
ActionCycles.Unclock();
return true; return true;
} }
else else

View file

@ -2192,8 +2192,8 @@ void P_PlayerThink (player_t *player)
if (debugfile && !(player->cheats & CF_PREDICTING)) if (debugfile && !(player->cheats & CF_PREDICTING))
{ {
fprintf (debugfile, "tic %d for pl %td: (%d, %d, %d, %u) b:%02x p:%d y:%d f:%d s:%d u:%d\n", fprintf (debugfile, "tic %d for pl %d: (%d, %d, %d, %u) b:%02x p:%d y:%d f:%d s:%d u:%d\n",
gametic, player-players, player->mo->x, player->mo->y, player->mo->z, gametic, (int)(player-players), player->mo->x, player->mo->y, player->mo->z,
player->mo->angle>>ANGLETOFINESHIFT, player->cmd.ucmd.buttons, player->mo->angle>>ANGLETOFINESHIFT, player->cmd.ucmd.buttons,
player->cmd.ucmd.pitch, player->cmd.ucmd.yaw, player->cmd.ucmd.forwardmove, player->cmd.ucmd.pitch, player->cmd.ucmd.yaw, player->cmd.ucmd.forwardmove,
player->cmd.ucmd.sidemove, player->cmd.ucmd.upmove); player->cmd.ucmd.sidemove, player->cmd.ucmd.upmove);

View file

@ -326,6 +326,11 @@ void R_DrawVisSprite (vissprite_t *vis)
fixed_t xiscale; fixed_t xiscale;
ESPSResult mode; ESPSResult mode;
if (vis->xscale == 0 || vis->yscale == 0)
{ // scaled to 0; can't see
return;
}
dc_colormap = vis->Style.colormap; dc_colormap = vis->Style.colormap;
mode = R_SetPatchStyle (vis->Style.RenderStyle, vis->Style.alpha, vis->Translation, vis->FillColor); mode = R_SetPatchStyle (vis->Style.RenderStyle, vis->Style.alpha, vis->Translation, vis->FillColor);