re-use bezier buffers for all sliders

This commit is contained in:
MaxOhn
2021-11-06 16:33:18 +01:00
parent 6a8c1eb532
commit 4b58c7466a
4 changed files with 64 additions and 32 deletions
+5 -5
View File
@@ -21,7 +21,7 @@ use skill::Skill;
use skill_kind::SkillKind;
use slider_state::SliderState;
use crate::{Beatmap, Mods, Strains};
use crate::{curve::CurveBuffers, Beatmap, Mods, Strains};
const OBJECT_RADIUS: f32 = 64.0;
const SECTION_LEN: f32 = 400.0;
@@ -68,7 +68,7 @@ pub fn stars(
}
let mut slider_state = SliderState::new(map);
let mut curve_buf = Vec::new();
let mut curve_bufs = CurveBuffers::default();
let mut ticks_buf = Vec::new();
let mut hit_objects = map
@@ -84,7 +84,7 @@ pub fn stars(
&mut ticks_buf,
&mut diff_attributes,
&mut slider_state,
&mut curve_buf,
&mut curve_bufs,
)
})
.map(|mut h| {
@@ -241,7 +241,7 @@ pub fn strains(map: &Beatmap, mods: impl Mods) -> Strains {
let mut slider_state = SliderState::new(map);
let mut ticks_buf = Vec::new();
let mut curve_buf = Vec::new();
let mut curve_bufs = CurveBuffers::default();
let mut hit_objects = map.hit_objects.iter().filter_map(|h| {
OsuObject::new(
@@ -252,7 +252,7 @@ pub fn strains(map: &Beatmap, mods: impl Mods) -> Strains {
&mut ticks_buf,
&mut diff_attributes,
&mut slider_state,
&mut curve_buf,
&mut curve_bufs,
)
});
+3 -3
View File
@@ -2,7 +2,7 @@ use super::super::super::DifficultyAttributes;
use super::slider_state::SliderState;
use crate::{
curve::Curve,
curve::{Curve, CurveBuffers},
parse::{HitObject, HitObjectKind, Pos2},
Beatmap,
};
@@ -35,7 +35,7 @@ impl OsuObject {
ticks: &mut Vec<f32>,
attributes: &mut DifficultyAttributes,
slider_state: &mut SliderState,
slider_buf: &mut Vec<Pos2>,
curve_bufs: &mut CurveBuffers,
) -> Option<Self> {
attributes.max_combo += 1; // hitcircle, slider head, or spinner
@@ -68,7 +68,7 @@ impl OsuObject {
}
// Build the curve w.r.t. the curve points
let curve = Curve::new(control_points, *pixel_len, slider_buf);
let curve = Curve::new(control_points, *pixel_len, curve_bufs);
let velocity =
(BASE_SCORING_DISTANCE * map.slider_mult * slider_state.slider_velocity)