From d6471d59610a2ee4ef9d1c6e7191d9bde52c27ee Mon Sep 17 00:00:00 2001 From: Shivam Dutt <shiv75035@gmail.com> Date: Tue, 28 May 2019 12:38:13 -0500 Subject: [PATCH] Changed generate_hitbox_effects to take a color as an argument instead of calculating the color based off of other arguments - Refactored ATTACK_replace accordingly - This will make it easier to add grab box and detect box visualizations later Removed generate_hitbox_effect_color, effect color is now calculated in ATTACK_replace directly --- source/hitbox_visualizer.hpp | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/source/hitbox_visualizer.hpp b/source/hitbox_visualizer.hpp index ab02730..7d4f410 100644 --- a/source/hitbox_visualizer.hpp +++ b/source/hitbox_visualizer.hpp @@ -46,18 +46,12 @@ namespace app::lua_bind::AttackModule { } } -Vector3f generate_hitbox_effect_color(L2CAgent *l2c_agent, L2CValue *id, L2CValue *damage) { - float t = 0.375f + 0.625f * unlerpBounded(1.0f, 17.0f, damage->raw_float); - Vector3f color = ID_COLORS[id->raw % 8]; - return colorLerp({ 1.0f, 1.0f, 1.0f }, color, t, 0.875f); -} - -void generate_hitbox_effects(L2CAgent *l2c_agent, L2CValue *id, L2CValue *bone, L2CValue *damage, L2CValue *size, - L2CValue *x, L2CValue *y, L2CValue *z, L2CValue *x2, L2CValue *y2, L2CValue *z2) { - Vector3f color = generate_hitbox_effect_color(l2c_agent, id, damage); - L2CValue red(color.x); - L2CValue green(color.y); - L2CValue blue(color.z); +void generate_hitbox_effects(L2CAgent *l2c_agent, L2CValue *bone, L2CValue *size, + L2CValue *x, L2CValue *y, L2CValue *z, L2CValue *x2, L2CValue *y2, L2CValue *z2, + Vector3f *color) { + L2CValue red(color->x); + L2CValue green(color->y); + L2CValue blue(color->z); float sizeMult = 19.0f / 200.0f; Hash40 shieldEffectHash = { .hash = 0xAFAE75F05LL }; @@ -112,14 +106,14 @@ namespace app::sv_animcmd { l2c_agent.L2CAgent_constr(a1); // get all necessary hitbox params - L2CValue id, bone, damage, angle, kbg, wkb, bkb, size, x, y, z, x2, y2, z2; + L2CValue id, bone, damage, /* angle, kbg, wkb, bkb, */ size, x, y, z, x2, y2, z2; l2c_agent.get_lua_stack(1, &id); l2c_agent.get_lua_stack(3, &bone); l2c_agent.get_lua_stack(4, &damage); - l2c_agent.get_lua_stack(5, &angle); - l2c_agent.get_lua_stack(6, &kbg); - l2c_agent.get_lua_stack(7, &wkb); - l2c_agent.get_lua_stack(8, &bkb); + // l2c_agent.get_lua_stack(5, &angle); + // l2c_agent.get_lua_stack(6, &kbg); + // l2c_agent.get_lua_stack(7, &wkb); + // l2c_agent.get_lua_stack(8, &bkb); l2c_agent.get_lua_stack(9, &size); l2c_agent.get_lua_stack(10, &x); l2c_agent.get_lua_stack(11, &y); @@ -131,8 +125,10 @@ namespace app::sv_animcmd { // original code: parse lua stack and call AttackModule::set_attack() AttackModule_set_attack_lua_state(LOAD64(LOAD64(a1 - 8) + 416LL), a1); - if (HITBOX_VIS && is_training_mode()) { - generate_hitbox_effects(&l2c_agent, &id, &bone, &damage, &size, &x, &y, &z, &x2, &y2, &z2); // generate hitbox effect(s) + if (HITBOX_VIS && is_training_mode()) { // generate hitbox effect(s) + float colorT = 0.375f + 0.625f * unlerpBounded(1.0f, 17.0f, damage.raw_float); + Vector3f color = colorLerp({ 1.0f, 1.0f, 1.0f }, ID_COLORS[id.raw % 8], colorT, 0.875f); // color saturation scales with hitbox damage + generate_hitbox_effects(&l2c_agent, &bone, &size, &x, &y, &z, &x2, &y2, &z2, &color); } u64 v1, v2, i;