/* 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 */