Files
Cesarus85--mjolnir-vr/source/physics/collision_usage.c
T

276 lines
6.5 KiB
C

/*
COLLISION_USAGE.C
symbols in this file:
0013C830 0030:
_code_0013c830 (0000)
0013C860 0060:
_collision_log_initialize (0000)
0013C8C0 0010:
_collision_log_enable (0000)
0013C8D0 0080:
_code_0013c8d0 (0000)
0013C950 0020:
_collision_log_begin_period (0000)
0013C970 0020:
_collision_log_continue_period (0000)
0013C990 0070:
_collision_log_end_period (0000)
0013CA00 0060:
_code_0013ca00 (0000)
0013CA60 0630:
_collision_log_render (0000)
0013D090 0100:
_code_0013d090 (0000)
0013D190 0010:
_collision_log_start_time (0000)
0013D1A0 0080:
_collision_log_end_time (0000)
0013D220 0050:
_collision_log_usage (0000)
0013D270 0060:
_collision_log_display (0000)
0028B750 0006:
??_C@_05GFCDIDHO@debug?$AA@ (0000)
0028B758 0003:
??_C@_02OGLLFMLI@ui?$AA@ (0000)
0028B75C 0005:
??_C@_04EMABALKC@limp?$AA@ (0000)
0028B764 0004:
??_C@_03HDNHDHMH@veh?$AA@ (0000)
0028B768 0005:
??_C@_04NNKAIPAK@proj?$AA@ (0000)
0028B770 0008:
??_C@_07MNOKBFBP@pt?9phys?$AA@ (0000)
0028B778 0006:
??_C@_05DPHKKMC@obsrv?$AA@ (0000)
0028B780 0008:
??_C@_07NPPHEEOC@areadmg?$AA@ (0000)
0028B788 0009:
??_C@_08PBPOKHFB@ai?9melee?$AA@ (0000)
0028B794 0008:
??_C@_07DMCDIGNF@ai?9fire?$AA@ (0000)
0028B79C 0008:
??_C@_07OALDIDM@ai?9comm?$AA@ (0000)
0028B7A4 0007:
??_C@_06GPJBDMGE@ai?9los?$AA@ (0000)
0028B7AC 0008:
??_C@_07NJIFNMAF@ai?9look?$AA@ (0000)
0028B7B4 0005:
??_C@_04MFANEHND@?$DP?$DP?$DP?$DP?$AA@ (0000)
0028B7BC 0015:
??_C@_0BF@HGKOAJPN@structure?9bsp?9sphere?$AA@ (0000)
0028B7D4 0012:
??_C@_0BC@CFFMELFA@object?9bsp?9sphere?$AA@ (0000)
0028B7E8 0015:
??_C@_0BF@PJIFAACM@structure?9bsp?9vector?$AA@ (0000)
0028B800 0012:
??_C@_0BC@KKHHECIB@object?9bsp?9vector?$AA@ (0000)
0028B814 000d:
??_C@_0N@FPLJAJFK@model?9vector?$AA@ (0000)
0028B824 0013:
??_C@_0BD@PLJPFLJA@features?9in?9sphere?$AA@ (0000)
0028B838 000f:
??_C@_0P@EBIJMEDI@vector?9objects?$AA@ (0000)
0028B848 0011:
??_C@_0BB@MLMKGLBG@vector?9structure?$AA@ (0000)
0028B85C 0029:
??_C@_0CJ@GINJHFMK@c?3?2halo?2SOURCE?2physics?2collision@ (0000)
0028B888 0047:
??_C@_0EH@MHCPNMCF@?$CItime_period?5?$DO?$DN?50?$CJ?5?$CG?$CG?5?$CItime_peri@ (0000)
0028B8D0 0027:
??_C@_0CH@NAJCGNL@collision_usage_current_period?5?$DN@ (0000)
0028B8F8 006d:
??_C@_0GN@KBNMKOHA@?$CIcollision_usage_current_period?5@ (0000)
0028B968 0008:
??_C@_07PPMMBGBH@?$CFd?1?$CF?42f?$AA@ (0000)
0028B970 0043:
??_C@_0ED@GBKMDDBI@?$CIuser_index?5?$DO?$DN?50?$CJ?5?$CG?$CG?5?$CIuser_index@ (0000)
0028B9B4 0005:
??_C@_04CDPLFOEF@?$CFc?$CFs?$AA@ (0000)
0028B9C0 0057:
??_C@_0FH@FIPBMPPP@?$CIcollision_function?5?$DO?$DN?50?$CJ?5?$CG?$CG?5?$CIco@ (0000)
0028BA18 0037:
??_C@_0DH@BEMKFPGN@?$CIuser?5?$DO?$DN?50?$CJ?5?$CG?$CG?5?$CIuser?5?$DM?5NUMBER_OF@ (0000)
0028BA50 0028:
??_C@_0CI@PANLECBF@global_current_collision_user_de@ (0000)
0028BA78 003b:
??_C@_0DL@IIDCDOP@sphere?5?$CF?53df?5?$CF?53db?0?5str?9vec?5?$CF?53d@ (0000)
0030CD58 008a:
_global_collision_function_names (0000)
_global_collision_user_names (0028)
_global_collision_log_enable (0084)
_collision_usage_current_period (0088)
0045DFF0 000a:
_collision_log_render_enable (0000)
_collision_log_detailed (0001)
_collision_log_extended (0002)
_collision_log_totals_only (0003)
_collision_log_time (0004)
_global_current_collision_user_depth (0008)
*/
/* ---------- headers */
#include "cseries.h"
#include "collision_usage.h"
/* ---------- constants */
enum
{
NUMBER_OF_COLLISION_TIME_PERIODS = 3
};
/* ---------- macros */
/* ---------- structures */
struct collision_log
{
long calls;
__int64 elapsed_time;
};
struct collision_function
{
struct collision_log total_all_users;
struct collision_log usage_by_user[NUMBER_OF_COLLISION_USER_TYPES];
};
struct collision_period
{
boolean reset_upon_next_use;
boolean valid;
long period_count;
struct collision_function function[NUMBER_OF_COLLISION_FUNCTION_TYPES];
};
/* ---------- prototypes */
/* ---------- globals */
char const *global_collision_function_names[] =
{
"vector-structure",
"vector-objects",
"features-in-sphere",
"model-vector",
"object-bsp-vector",
"structure-bsp-vector",
"object-bsp-sphere",
"structure-bsp-sphere",
NULL
};
char const *global_collision_user_names[] =
{
"????",
"ai-look",
"ai-los",
"ai-comm",
"ai-fire",
"ai-melee",
"aim",
"biped",
"melee",
"decal",
"areadmg",
"item",
"obsrv",
"pt-phys",
"proj",
"light",
"sound",
"veh",
"limp",
"object",
"ui",
"debug",
NULL
};
boolean global_collision_log_enable = TRUE;
short collision_usage_current_period = NONE;
boolean collision_log_render_enable = FALSE;
boolean collision_log_detailed = FALSE;
boolean collision_log_extended = FALSE;
boolean collision_log_totals_only = FALSE;
boolean collision_log_time = FALSE;
short global_current_collision_user_depth = 0;
short global_current_collision_users[MAXIMUM_COLLISION_USER_STACK_DEPTH];
struct collision_period collision_usage_buffer[NUMBER_OF_COLLISION_TIME_PERIODS];
struct collision_period collision_usage_current;
/* ---------- public code */
void collision_log_initialize(
void)
{
memset(&collision_usage_buffer, 0, sizeof(collision_usage_buffer));
match_assert("c:\\halo\\SOURCE\\physics\\collision_usage.c", 150, global_current_collision_user_depth < MAXIMUM_COLLISION_USER_STACK_DEPTH);
global_current_collision_users[global_current_collision_user_depth] = 0;
global_current_collision_user_depth = global_current_collision_user_depth + 1;
return;
}
void collision_log_enable(
boolean enable)
{
global_collision_log_enable = enable;
return;
}
static void collision_log_store_period(
short time_period,
boolean unused)
{
match_assert("c:\\halo\\SOURCE\\physics\\collision_usage.c", 167, collision_usage_current_period == NONE);
match_assert("c:\\halo\\SOURCE\\physics\\collision_usage.c", 168, (time_period >= 0) && (time_period < NUMBER_OF_COLLISION_TIME_PERIODS));
memset(&collision_usage_current, 0, sizeof(collision_usage_current));
collision_usage_current_period = time_period;
return;
}
void collision_log_begin_period(
short time_period)
{
collision_log_store_period(time_period, TRUE);
return;
}
void collision_log_continue_period(
short time_period)
{
collision_log_store_period(time_period, FALSE);
return;
}
void collision_log_end_period(
void)
{
match_assert("c:\\halo\\SOURCE\\physics\\collision_usage.c", 198,
(collision_usage_current_period >= 0) && (collision_usage_current_period < NUMBER_OF_COLLISION_TIME_PERIODS));
collision_usage_current.reset_upon_next_use = TRUE;
collision_usage_buffer[collision_usage_current_period] = collision_usage_current;
collision_usage_current_period = NONE;
return;
}
/* ---------- private code */