re-use bezier buffers for all sliders
This commit is contained in:
@@ -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,
|
||||
)
|
||||
});
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user