Skip to content

Commit c50600c

Browse files
committed
Added impacts functions
Added `c_impact` commented functions
1 parent 8ddc617 commit c50600c

File tree

2 files changed

+285
-1
lines changed

2 files changed

+285
-1
lines changed

game/source/physics/impacts.cpp

Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,259 @@
11
#include "physics/impacts.hpp"
22

3+
#include "memory/thread_local.hpp"
4+
#include "physics/havok_component.hpp"
5+
6+
//.text:00696950 ;
7+
//.text:00696970 ;
8+
//.text:00696990 ;
9+
//.text:006969B0 ;
10+
//.text:006969C0 ;
11+
//.text:006969D0 ;
12+
//.text:006969E0 ;
13+
14+
void __cdecl __tls_set_g_impact_array_data_allocator(void* new_address)
15+
{
16+
INVOKE(0x00696A00, __tls_set_g_impact_array_data_allocator, new_address);
17+
18+
//TLS_DATA_GET_VALUE_REFERENCE(g_impact_array_data);
19+
//data_set_new_base_address(&g_impact_array_data.m_data_array, (s_data_array*)new_address);
20+
}
21+
22+
void __cdecl __tls_set_g_impact_data_allocator(void* new_address)
23+
{
24+
INVOKE(0x00696A30, __tls_set_g_impact_data_allocator, new_address);
25+
26+
//TLS_DATA_GET_VALUE_REFERENCE(g_impact_data);
27+
//data_set_new_base_address(&g_impact_data.m_data_array, (s_data_array*)new_address);
28+
}
29+
30+
void __cdecl __tls_set_g_impact_globals_allocator(void* new_address)
31+
{
32+
INVOKE(0x00696A60, __tls_set_g_impact_globals_allocator, new_address);
33+
34+
//TLS_DATA_GET_VALUE_REFERENCE(g_impact_globals);
35+
//g_impact_globals = (impact_globals*)new_address;
36+
}
37+
38+
//.text:00696A80 ; public: void c_impact::add_reference(long)
39+
//.text:00696A90 ;
40+
//.text:00696AD0 ;
41+
//.text:00696B10 ;
42+
//.text:00696B50 ;
43+
//.text:00696B70 ;
44+
//.text:00696B90 ; public: void c_impact::calculate_effect_parameters(long, long, long, real_point3d*, real_vector3d*, real_vector3d*, real_vector3d*, real*, real*, bool)
45+
//.text:00697390 ; private: void c_impact::calculate_impact_matrix(long, real_matrix3x3*)
46+
//.text:00697620 ; private: void c_impact::calculate_rigid_body_indexes(long, long*, long*)
47+
//.text:006977C0 ; public: static real __cdecl c_impact::calculate_score(real_point3d const*, c_impact::e_states)
48+
//.text:00697870 ; public: static void __cdecl c_impact::calculate_water_surface_vector(real_point3d*, real_vector3d*)
49+
//.text:006978F0 ; public: static bool __cdecl c_impact::can_impulse_state_interupt_looping_state(long, real, long, real)
50+
//.text:00697920 ; private: bool c_impact::currently_playing_looping_sound(long, long)
51+
//.text:006979D0 ;
52+
//.text:00697A00 ;
53+
//.text:00697A30 ;
54+
//.text:00697A60 ; public: void c_impact::disconnect_from_physics()
55+
//.text:00697A80 ;
56+
//.text:00697AB0 ;
57+
//.text:00697AE0 ;
58+
//.text:00697B10 ;
59+
//.text:00697B20 ;
60+
//.text:00697B30 ;
61+
//.text:00697B50 ;
62+
//.text:00697B60 ; public: c_global_material_type c_impact::get_global_material_index_a() const
63+
//.text:00697B80 ; public: c_global_material_type c_impact::get_global_material_index_b() const
64+
//.text:00697BA0 ; real __cdecl get_impact_maximum_collision_magnitude(e_impact_sound_scale_type)
65+
//.text:00697BE0 ; real __cdecl get_impact_minimum_collision_magnitude(e_impact_sound_scale_type)
66+
//.text:00697C20 ; real __cdecl get_impact_minimum_collision_pre_simulation_angular_velocity_magnitude(e_impact_sound_scale_type)
67+
//.text:00697C90 ; real __cdecl get_impact_minimum_collision_pre_simulation_linear_velocity_magnitude(e_impact_sound_scale_type)
68+
//.text:00697CA0 ; e_impact_sound_scale_type __cdecl get_impact_sound_scale_type(long, long, long)
69+
//.text:00697DF0 ; private: static real __cdecl c_impact::get_impact_state_score_scale(c_impact::e_states)
70+
//.text:00697E20 ;
71+
//.text:00697E30 ; private: void c_impact::get_material_effects(real_point3d const*, c_global_material_type, c_global_material_type, c_impact::e_states, s_material_effects_result*)
72+
//.text:00697F10 ; private: static void __cdecl c_impact::get_material_effects(long, long, real_vector3d const*, e_sweetener_size, bool, real_point3d const*, c_global_material_type, c_global_material_type, c_impact::e_states, s_material_effects_result*)
73+
//.text:00698010 ; public: real_vector3d const* c_impact::get_normal() const
74+
//.text:00698020 ; public: long c_impact::get_object_index_a() const
75+
//.text:00698030 ; public: long c_impact::get_object_index_b() const
76+
//.text:00698040 ;
77+
//.text:00698070 ; public: long c_impact::get_reference_count() const
78+
//.text:00698080 ; public: real c_impact::get_score() const
79+
//.text:00698090 ; public: c_impact::e_states c_impact::get_state() const
80+
//.text:006980A0 ; public: c_impact::e_type c_impact::get_type() const
81+
//.text:006980B0 ; public: long c_impact::get_vehicle_friction_point_index() const
82+
//.text:006980C0 ; public: bool c_impact::get_vehicle_friction_point_sound_only() const
83+
//.text:006980D0 ; public: real_point3d const* c_impact::get_world_space_position() const
84+
//.text:006980E0 ; private: void c_impact::halt_managed_effects(bool, bool)
85+
86+
void __cdecl impact_array_add_impact(long impact_array_index, long impact_datum_index)
87+
{
88+
INVOKE(0x00698180, impact_array_add_impact, impact_array_index, impact_datum_index);
89+
}
90+
91+
void __cdecl impact_array_delete(long impact_array_index)
92+
{
93+
INVOKE(0x006981C0, impact_array_delete, impact_array_index);
94+
}
95+
96+
long __cdecl impact_array_impact_count(long impact_array_index)
97+
{
98+
return INVOKE(0x006981F0, impact_array_impact_count, impact_array_index);
99+
}
100+
101+
long __cdecl impact_array_impact_get(long impact_array_index, long impact_array_impact_index)
102+
{
103+
return INVOKE(0x00698220, impact_array_impact_get, impact_array_index, impact_array_impact_index);
104+
}
105+
106+
long __cdecl impact_array_new(long object_index)
107+
{
108+
return INVOKE(0x00698260, impact_array_new, object_index);
109+
}
110+
111+
void __cdecl impact_array_remove_impact(long impact_array_index, long impact_datum_index)
112+
{
113+
INVOKE(0x006982B0, impact_array_remove_impact, impact_array_index, impact_datum_index);
114+
}
115+
116+
void __cdecl impact_delete(long impact_datum_index)
117+
{
118+
INVOKE(0x00698310, impact_delete, impact_datum_index);
119+
}
120+
121+
long __cdecl impact_new(c_impact::s_contact_description const* contact_description, c_impact::e_states state)
122+
{
123+
return INVOKE(0x006984F0, impact_new, contact_description, state);
124+
}
125+
126+
void __cdecl impacts_create_constraint_impacts_for_havok_component(long object_index)
127+
{
128+
INVOKE(0x00698780, impacts_create_constraint_impacts_for_havok_component, object_index);
129+
}
130+
131+
void __cdecl impacts_create_orphaned_impact(long object_index, c_havok_contact_point* contact_point, bool create_new_impacts)
132+
{
133+
INVOKE(0x00698A10, impacts_create_orphaned_impact, object_index, contact_point, create_new_impacts);
134+
}
135+
136+
void __cdecl impacts_create_orphaned_impacts()
137+
{
138+
INVOKE(0x00698C90, impacts_create_orphaned_impacts);
139+
}
140+
141+
void __cdecl impacts_disconnect_from_physics()
142+
{
143+
INVOKE(0x00698DD0, impacts_disconnect_from_physics);
144+
}
145+
146+
bool __cdecl impacts_disconnected_from_physics()
147+
{
148+
return INVOKE(0x00698E90, impacts_disconnected_from_physics);
149+
}
150+
151+
void __cdecl impacts_dispose()
152+
{
153+
INVOKE(0x00698EB0, impacts_dispose);
154+
}
155+
156+
void __cdecl impacts_dispose_from_old_map()
157+
{
158+
INVOKE(0x00698EF0, impacts_dispose_from_old_map);
159+
}
160+
161+
void __cdecl impacts_dispose_global_allocations()
162+
{
163+
INVOKE(0x00698F20, impacts_dispose_global_allocations);
164+
}
165+
166+
void __cdecl impacts_flush()
167+
{
168+
INVOKE(0x00698F30, impacts_flush);
169+
}
170+
171+
long __cdecl impacts_get_highest_score_datum_index()
172+
{
173+
return INVOKE(0x00698F60, impacts_get_highest_score_datum_index);
174+
}
175+
176+
void __cdecl impacts_initialize()
177+
{
178+
INVOKE(0x00698FB0, impacts_initialize);
179+
}
180+
181+
void __cdecl impacts_initialize_for_new_map()
182+
{
183+
INVOKE(0x00699050, impacts_initialize_for_new_map);
184+
}
185+
186+
void __cdecl impacts_initialize_global_allocations()
187+
{
188+
INVOKE(0x006990B0, impacts_initialize_global_allocations);
189+
}
190+
191+
void __cdecl impacts_load_from_game_state()
192+
{
193+
INVOKE(0x006990C0, impacts_load_from_game_state);
194+
}
195+
196+
void __cdecl impacts_merge()
197+
{
198+
INVOKE(0x00699130, impacts_merge);
199+
}
200+
201+
void __cdecl impacts_notify_object_deleted(long object_index)
202+
{
203+
INVOKE(0x00699460, impacts_notify_object_deleted, object_index);
204+
}
205+
206+
void __cdecl impacts_pop_highest_score_datum_index()
207+
{
208+
INVOKE(0x00699500, impacts_pop_highest_score_datum_index);
209+
}
210+
211+
void __cdecl impacts_quicksort()
212+
{
213+
INVOKE(0x00699530, impacts_quicksort);
214+
}
215+
216+
void __cdecl impacts_reconnect_to_physics()
217+
{
218+
INVOKE(0x00699600, impacts_reconnect_to_physics);
219+
}
220+
221+
bool __cdecl impacts_score_compare(long impact_index_a, long impact_index_b, void const* ignored)
222+
{
223+
return INVOKE(0x006996C0, impacts_score_compare, impact_index_a, impact_index_b, ignored);
224+
}
225+
3226
void __cdecl impacts_update()
4227
{
5228
INVOKE(0x00699710, impacts_update);
6229
}
7230

231+
//.text:00699A30 ; public: static bool __cdecl c_impact::included_in_impact_material(long, c_global_material_type, c_global_material_type, c_global_material_type, c_global_material_type)
232+
//.text:00699A60 ; public: static bool __cdecl c_impact::included_in_impact_space(real_point3d const*, real_vector3d const*, real_point3d const*, real_vector3d const*, real*)
233+
//.text:00699B10 ; public: static bool __cdecl c_impact::included_in_impact_type(long, long, long, long, c_global_material_type, c_global_material_type, c_global_material_type, c_global_material_type, long, long, bool, bool, long, long)
234+
//.text:00699BB0 ; public: bool c_impact::includes_point(c_impact::s_contact_description const*, bool)
235+
//.text:00699C70 ; public: static void __cdecl c_impact::initialize_contact_description(c_impact::s_contact_description*, c_impact::e_type, bool, long, long, c_global_material_type, long, long, c_global_material_type, real_point3d const*, real_vector3d const*, long, s_physics_model_constraint_reference const*)
236+
//.text:00699D00 ; private: static bool __cdecl c_impact::is_b_dominant_body(long, long)
237+
//.text:00699D90 ; public: bool c_impact::is_between_pair_of_dynamic_rigid_bodies() const
238+
//.text:00699DA0 ; public: bool c_impact::is_managing_effect() const
239+
//.text:00699DD0 ;
240+
//.text:00699DF0 ; public: static bool __cdecl c_impact::passes_the_character_test(long, long, real_point3d const*, real_vector3d const*)
241+
//.text:00699F10 ; public: void c_impact::queue_collision(real)
242+
//.text:00699F90 ; public: bool c_impact::recently_played_impulse_effect() const
243+
//.text:00699FD0 ; public: void c_havok_component::remove_impact(long)
244+
//.text:0069A080 ; public: void c_impact::remove_reference(long, bool)
245+
//.text:0069A100 ;
246+
//.text:0069A140 ;
247+
//.text:0069A180 ;
248+
//.text:0069A1C0 ;
249+
//.text:0069A1D0 ;
250+
//.text:0069A1F0 ; public: void c_impact::update(long)
251+
//.text:0069A990 ; public: void c_impact::update_effects(long, long, long)
252+
//.text:0069B470 ; public: void c_impact::update_looping_sound(s_sound_location*, real*) const
253+
//.text:0069B730 ; private: void c_impact::update_rigid_body_space_positions(real_point3d const*, long, long)
254+
//.text:0069B830 ; public: void c_impact::update_score()
255+
//.text:0069B890 ; public: void c_impact::update_state(long, long, long)
256+
//.text:0069BF10 ; public: void c_impact::update_vehicle_impact(long, c_impact::s_contact_description const*, real_vector3d const*, real, bool)
257+
//.text:0069BF70 ; public: void c_impact::update_vehicle_impact_sound_only(long)
258+
//.text:0069C0C0 ; public: void c_impact::update_water_impact(long, real, bool)
259+

game/source/physics/impacts.hpp

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,38 @@ struct c_impact :
134134
};
135135
static_assert(sizeof(c_impact) == 0xB4);
136136

137-
137+
struct c_havok_contact_point;
138+
139+
extern void __cdecl __tls_set_g_impact_array_data_allocator(void* new_address);
140+
extern void __cdecl __tls_set_g_impact_data_allocator(void* new_address);
141+
extern void __cdecl __tls_set_g_impact_globals_allocator(void* new_address);
142+
extern void __cdecl impact_array_add_impact(long impact_array_index, long impact_datum_index);
143+
extern void __cdecl impact_array_delete(long impact_array_index);
144+
extern long __cdecl impact_array_impact_count(long impact_array_index);
145+
extern long __cdecl impact_array_impact_get(long impact_array_index, long impact_array_impact_index);
146+
extern long __cdecl impact_array_new(long object_index);
147+
extern void __cdecl impact_array_remove_impact(long impact_array_index, long impact_datum_index);
148+
extern void __cdecl impact_delete(long impact_datum_index);
149+
extern long __cdecl impact_new(c_impact::s_contact_description const* contact_description, c_impact::e_states state);
150+
extern void __cdecl impacts_create_constraint_impacts_for_havok_component(long object_index);
151+
extern void __cdecl impacts_create_orphaned_impact(long object_index, c_havok_contact_point* contact_point, bool create_new_impacts);
152+
extern void __cdecl impacts_create_orphaned_impacts();
153+
extern void __cdecl impacts_disconnect_from_physics();
154+
extern bool __cdecl impacts_disconnected_from_physics();
155+
extern void __cdecl impacts_dispose();
156+
extern void __cdecl impacts_dispose_from_old_map();
157+
extern void __cdecl impacts_dispose_global_allocations();
158+
extern void __cdecl impacts_flush();
159+
extern long __cdecl impacts_get_highest_score_datum_index();
160+
extern void __cdecl impacts_initialize();
161+
extern void __cdecl impacts_initialize_for_new_map();
162+
extern void __cdecl impacts_initialize_global_allocations();
163+
extern void __cdecl impacts_load_from_game_state();
164+
extern void __cdecl impacts_merge();
165+
extern void __cdecl impacts_notify_object_deleted(long object_index);
166+
extern void __cdecl impacts_pop_highest_score_datum_index();
167+
extern void __cdecl impacts_quicksort();
168+
extern void __cdecl impacts_reconnect_to_physics();
169+
extern bool __cdecl impacts_score_compare(long impact_index_a, long impact_index_b, void const* ignored);
138170
extern void __cdecl impacts_update();
139171

0 commit comments

Comments
 (0)