1
0
Fork 0
mirror of https://github.com/jugeeya/UltimateTrainingModpack.git synced 2025-02-17 14:40:31 +00:00

refactor, disable input delay outside training, disable recording

This commit is contained in:
jugeeya 2020-10-01 02:46:25 +00:00
parent c6d9c9c322
commit 9746349a69
3 changed files with 48 additions and 41 deletions

View file

@ -1,6 +1,5 @@
{ {
"rust-analyzer.checkOnSave.overrideCommand": [ "rust-analyzer.checkOnSave.overrideCommand": [
// "RUST_TARGET_PATH=`pwd`",
"xargo", "xargo",
"clippy", "clippy",
"--workspace", "--workspace",

View file

@ -53,31 +53,23 @@ pub unsafe fn generate_hitbox_effects(
module_accessor: &mut app::BattleObjectModuleAccessor, module_accessor: &mut app::BattleObjectModuleAccessor,
bone: u64, bone: u64,
size: f32, size: f32,
x: f32, center: Vector3f,
y: f32, capsule_center: Option<Vector3f>,
z: f32,
x2: Option<f32>,
y2: Option<f32>,
z2: Option<f32>,
color: Vector3f, color: Vector3f,
) { ) {
let size_mult = 19.0 / 200.0; let size_mult = 19.0 / 200.0;
let (x,y,z) = (center.x, center.y, center.z);
let x_dist: f32; let x_dist: f32;
let y_dist: f32; let y_dist: f32;
let z_dist: f32; let z_dist: f32;
let mut n_effects: i32; let mut n_effects: i32;
if x2 == None && y2 == None && z2 == None { if let Some(capsule_center) = capsule_center {
// && let lib::L2CValueType::Void = y2.val_type && let lib::L2CValueType::Void = z2.val_type { // extended hitbox let (x2,y2,z2) = (capsule_center.x, capsule_center.y, capsule_center.z);
x_dist = 0.0; x_dist = x2 - x;
y_dist = 0.0; y_dist = y2 - y;
z_dist = 0.0; z_dist = z2 - z;
n_effects = 1;
} else {
// non-extended hitbox
x_dist = x2.unwrap_or(0.0) - x;
y_dist = y2.unwrap_or(0.0) - y;
z_dist = z2.unwrap_or(0.0) - z;
let dist_sq: f32 = x_dist * x_dist + y_dist * y_dist + z_dist * z_dist; let dist_sq: f32 = x_dist * x_dist + y_dist * y_dist + z_dist * z_dist;
let dist = dist_sq.sqrt(); let dist = dist_sq.sqrt();
n_effects = ((dist / (size * 1.75)) + 1.0).ceil() as i32; // just enough effects to form a continuous line n_effects = ((dist / (size * 1.75)) + 1.0).ceil() as i32; // just enough effects to form a continuous line
@ -86,6 +78,11 @@ pub unsafe fn generate_hitbox_effects(
} else if n_effects > MAX_EFFECTS_PER_HITBOX { } else if n_effects > MAX_EFFECTS_PER_HITBOX {
n_effects = MAX_EFFECTS_PER_HITBOX; n_effects = MAX_EFFECTS_PER_HITBOX;
} }
} else {
x_dist = 0.0;
y_dist = 0.0;
z_dist = 0.0;
n_effects = 1;
} }
for i in 0..n_effects { for i in 0..n_effects {
@ -185,22 +182,19 @@ pub unsafe fn get_command_flag_cat(module_accessor: &mut app::BattleObjectModule
} }
let attack_data = *AttackModule::attack_data(module_accessor, i, false); let attack_data = *AttackModule::attack_data(module_accessor, i, false);
let center = Vector3f{x: attack_data.x, y: attack_data.y, z: attack_data.z};
let is_capsule = attack_data.x2 != 0.0 || attack_data.y2 != 0.0 || attack_data.z2 != 0.0; let is_capsule = attack_data.x2 != 0.0 || attack_data.y2 != 0.0 || attack_data.z2 != 0.0;
let (x2, y2, z2) = if is_capsule { let capsule_center = if is_capsule {
(Some(attack_data.x2), Some(attack_data.y2), Some(attack_data.z2)) Some(Vector3f{x: attack_data.x2, y: attack_data.y2, z: attack_data.z2})
} else { } else {
(None, None, None) None
}; };
generate_hitbox_effects( generate_hitbox_effects(
module_accessor, module_accessor,
attack_data.node, // joint attack_data.node, // joint
attack_data.size, attack_data.size,
attack_data.x, center,
attack_data.y, capsule_center,
attack_data.z,
x2,
y2,
z2,
ID_COLORS[(i % 8) as usize], ID_COLORS[(i % 8) as usize],
); );
} }
@ -237,16 +231,20 @@ unsafe fn mod_handle_attack(lua_state: u64) {
let y2 = l2c_agent.pop_lua_stack(14); // float or void let y2 = l2c_agent.pop_lua_stack(14); // float or void
let z2 = l2c_agent.pop_lua_stack(15); // float or void let z2 = l2c_agent.pop_lua_stack(15); // float or void
let center = Vector3f{x: x.get_num(), y: y.get_num(), z: z.get_num()};
let capsule_center =
if let (Some(x2), Some(y2), Some(z2)) = (x2.try_get_num(), y2.try_get_num(), z2.try_get_num()) {
Some(Vector3f{x: x2, y: y2, z: z2})
} else {
None
};
generate_hitbox_effects( generate_hitbox_effects(
sv_system::battle_object_module_accessor(lua_state), sv_system::battle_object_module_accessor(lua_state),
joint.get_int(), joint.get_int(),
size.get_num(), size.get_num(),
x.get_num(), center,
y.get_num(), capsule_center,
z.get_num(),
x2.try_get_num(),
y2.try_get_num(),
z2.try_get_num(),
ID_COLORS[(id.get_int() % 8) as usize], ID_COLORS[(id.get_int() % 8) as usize],
); );
} }
@ -278,16 +276,20 @@ unsafe fn mod_handle_catch(lua_state: u64) {
let y2 = l2c_agent.pop_lua_stack(8); // float or void let y2 = l2c_agent.pop_lua_stack(8); // float or void
let z2 = l2c_agent.pop_lua_stack(9); // float or void let z2 = l2c_agent.pop_lua_stack(9); // float or void
let center = Vector3f{x: x.get_num(), y: y.get_num(), z: z.get_num()};
let capsule_center =
if let (Some(x2), Some(y2), Some(z2)) = (x2.try_get_num(), y2.try_get_num(), z2.try_get_num()) {
Some(Vector3f{x: x2, y: y2, z: z2})
} else {
None
};
generate_hitbox_effects( generate_hitbox_effects(
sv_system::battle_object_module_accessor(lua_state), sv_system::battle_object_module_accessor(lua_state),
joint.get_int(), joint.get_int(),
size.get_num(), size.get_num(),
x.get_num(), center,
y.get_num(), capsule_center,
z.get_num(),
x2.try_get_num(),
y2.try_get_num(),
z2.try_get_num(),
ID_COLORS[(id.get_int() + 3 % 8) as usize], ID_COLORS[(id.get_int() + 3 % 8) as usize],
); );
} }

View file

@ -281,8 +281,14 @@ macro_rules! create_nn_hid_hooks {
controller_id: *const u32, controller_id: *const u32,
) { ) {
original!()(state, controller_id); original!()(state, controller_id);
input_delay::handle_get_npad_state(state, controller_id); if is_training_mode() {
input_record::handle_get_npad_state(state, controller_id); input_delay::handle_get_npad_state(state, controller_id);
/* TODO:
1) make number of frames configurable
2) make possible without a second controller plugged in
**/
// input_record::handle_get_npad_state(state, controller_id);
}
} }
)* )*
}; };