1- use std:: { f32:: consts:: PI , ops:: Range } ;
1+ use std:: { f32:: consts:: PI , ops:: RangeInclusive } ;
22
33use bevy_app:: { Plugin , PreUpdate , PropagateOver } ;
44use bevy_color:: Color ;
@@ -342,30 +342,30 @@ impl Default for NumberInputValue {
342342#[ derive( Debug , PartialEq , Clone , Reflect ) ]
343343pub enum NumberInputRange {
344344 /// An 'f32' range.
345- F32 ( Range < f32 > ) ,
345+ F32 ( RangeInclusive < f32 > ) ,
346346 /// An 'f64' range.
347- F64 ( Range < f64 > ) ,
347+ F64 ( RangeInclusive < f64 > ) ,
348348 /// An 'i32' range.
349- I32 ( Range < i32 > ) ,
349+ I32 ( RangeInclusive < i32 > ) ,
350350 /// An 'i64' range.
351- I64 ( Range < i64 > ) ,
351+ I64 ( RangeInclusive < i64 > ) ,
352352}
353353
354354impl NumberInputRange {
355355 /// Clamp a numeric value of varying type to be within this range.
356356 pub fn clamp ( & self , n : NumberInputValue ) -> NumberInputValue {
357357 match ( self , n) {
358358 ( Self :: F32 ( r) , NumberInputValue :: F32 ( v) ) => {
359- NumberInputValue :: F32 ( v. clamp ( r. start , r. end ) )
359+ NumberInputValue :: F32 ( v. clamp ( * r. start ( ) , * r. end ( ) ) )
360360 }
361361 ( Self :: F64 ( r) , NumberInputValue :: F64 ( v) ) => {
362- NumberInputValue :: F64 ( v. clamp ( r. start , r. end ) )
362+ NumberInputValue :: F64 ( v. clamp ( * r. start ( ) , * r. end ( ) ) )
363363 }
364364 ( Self :: I32 ( r) , NumberInputValue :: I32 ( v) ) => {
365- NumberInputValue :: I32 ( v. clamp ( r. start , r. end ) )
365+ NumberInputValue :: I32 ( v. clamp ( * r. start ( ) , * r. end ( ) ) )
366366 }
367367 ( Self :: I64 ( r) , NumberInputValue :: I64 ( v) ) => {
368- NumberInputValue :: I64 ( v. clamp ( r. start , r. end ) )
368+ NumberInputValue :: I64 ( v. clamp ( * r. start ( ) , * r. end ( ) ) )
369369 }
370370 ( range, value) => {
371371 warn_once ! ( "Number input range type mismatch: {range:?} {value:?}" ) ;
@@ -378,20 +378,20 @@ impl NumberInputRange {
378378 pub fn wrap ( & self , n : NumberInputValue ) -> NumberInputValue {
379379 match ( self , n) {
380380 ( Self :: F32 ( r) , NumberInputValue :: F32 ( v) ) => {
381- let range = r. end - r. start ;
382- NumberInputValue :: F32 ( r. start + ( v - r. start ) . rem_euclid ( range) )
381+ let range = r. end ( ) - r. start ( ) ;
382+ NumberInputValue :: F32 ( r. start ( ) + ( v - r. start ( ) ) . rem_euclid ( range) )
383383 }
384384 ( Self :: F64 ( r) , NumberInputValue :: F64 ( v) ) => {
385- let range = r. end - r. start ;
386- NumberInputValue :: F64 ( r. start + ( v - r. start ) . rem_euclid ( range) )
385+ let range = r. end ( ) - r. start ( ) ;
386+ NumberInputValue :: F64 ( r. start ( ) + ( v - r. start ( ) ) . rem_euclid ( range) )
387387 }
388388 ( Self :: I32 ( r) , NumberInputValue :: I32 ( v) ) => {
389- let range = r. end - r. start ;
390- NumberInputValue :: I32 ( r. start + ( v - r. start ) . rem_euclid ( range) )
389+ let range = r. end ( ) - r. start ( ) ;
390+ NumberInputValue :: I32 ( r. start ( ) + ( v - r. start ( ) ) . rem_euclid ( range) )
391391 }
392392 ( Self :: I64 ( r) , NumberInputValue :: I64 ( v) ) => {
393- let range = r. end - r. start ;
394- NumberInputValue :: I64 ( r. start + ( v - r. start ) . rem_euclid ( range) )
393+ let range = r. end ( ) - r. start ( ) ;
394+ NumberInputValue :: I64 ( r. start ( ) + ( v - r. start ( ) ) . rem_euclid ( range) )
395395 }
396396 ( range, value) => {
397397 warn_once ! ( "Number input range type mismatch: {range:?} {value:?}" ) ;
@@ -405,32 +405,32 @@ impl NumberInputRange {
405405 pub fn thumb_position ( & self , value : NumberInputValue ) -> f32 {
406406 match ( self , value) {
407407 ( Self :: F32 ( range) , NumberInputValue :: F32 ( n) ) => {
408- if range. end > range. start {
409- ( n - range. start ) / ( range. end - range. start )
408+ if range. end ( ) > range. start ( ) {
409+ ( n - range. start ( ) ) / ( range. end ( ) - range. start ( ) )
410410 } else {
411411 0.5
412412 }
413413 }
414414
415415 ( Self :: F64 ( range) , NumberInputValue :: F64 ( n) ) => {
416- if range. end > range. start {
417- ( ( n - range. start ) / ( range. end - range. start ) ) as f32
416+ if range. end ( ) > range. start ( ) {
417+ ( ( n - range. start ( ) ) / ( range. end ( ) - range. start ( ) ) ) as f32
418418 } else {
419419 0.5
420420 }
421421 }
422422
423423 ( Self :: I32 ( range) , NumberInputValue :: I32 ( n) ) => {
424- if range. end > range. start {
425- ( n - range. start ) as f32 / ( range. end - range. start ) as f32
424+ if range. end ( ) > range. start ( ) {
425+ ( n - range. start ( ) ) as f32 / ( range. end ( ) - range. start ( ) ) as f32
426426 } else {
427427 0.5
428428 }
429429 }
430430
431431 ( Self :: I64 ( range) , NumberInputValue :: I64 ( n) ) => {
432- if range. end > range. start {
433- ( n - range. start ) as f32 / ( range. end - range. start ) as f32
432+ if range. end ( ) > range. start ( ) {
433+ ( n - range. start ( ) ) as f32 / ( range. end ( ) - range. start ( ) ) as f32
434434 } else {
435435 0.5
436436 }
@@ -446,7 +446,7 @@ impl NumberInputRange {
446446
447447impl Default for NumberInputRange {
448448 fn default ( ) -> Self {
449- Self :: F32 ( 0.0 ..0.0 )
449+ Self :: F32 ( 0.0 ..= 0.0 )
450450 }
451451}
452452
@@ -457,22 +457,22 @@ pub struct SoftLimit(pub NumberInputRange);
457457
458458impl SoftLimit {
459459 /// Create a [`SoftLimit`] for `f32` values.
460- pub fn f32 ( range : Range < f32 > ) -> Self {
460+ pub fn f32 ( range : RangeInclusive < f32 > ) -> Self {
461461 Self ( NumberInputRange :: F32 ( range) )
462462 }
463463
464464 /// Create a [`SoftLimit`] for `f64` values.
465- pub fn f64 ( range : Range < f64 > ) -> Self {
465+ pub fn f64 ( range : RangeInclusive < f64 > ) -> Self {
466466 Self ( NumberInputRange :: F64 ( range) )
467467 }
468468
469469 /// Create a [`SoftLimit`] for `i32` values.
470- pub fn i32 ( range : Range < i32 > ) -> Self {
470+ pub fn i32 ( range : RangeInclusive < i32 > ) -> Self {
471471 Self ( NumberInputRange :: I32 ( range) )
472472 }
473473
474474 /// Create a [`SoftLimit`] for `i64` values.
475- pub fn i64 ( range : Range < i64 > ) -> Self {
475+ pub fn i64 ( range : RangeInclusive < i64 > ) -> Self {
476476 Self ( NumberInputRange :: I64 ( range) )
477477 }
478478}
@@ -485,22 +485,22 @@ pub struct HardLimit(pub NumberInputRange);
485485
486486impl HardLimit {
487487 /// Create a [`HardLimit`] for `f32` values.
488- pub fn f32 ( range : Range < f32 > ) -> Self {
488+ pub fn f32 ( range : RangeInclusive < f32 > ) -> Self {
489489 Self ( NumberInputRange :: F32 ( range) )
490490 }
491491
492492 /// Create a [`HardLimit`] for `f64` values.
493- pub fn f64 ( range : Range < f64 > ) -> Self {
493+ pub fn f64 ( range : RangeInclusive < f64 > ) -> Self {
494494 Self ( NumberInputRange :: F64 ( range) )
495495 }
496496
497497 /// Create a [`HardLimit`] for `i32` values.
498- pub fn i32 ( range : Range < i32 > ) -> Self {
498+ pub fn i32 ( range : RangeInclusive < i32 > ) -> Self {
499499 Self ( NumberInputRange :: I32 ( range) )
500500 }
501501
502502 /// Create a [`HardLimit`] for `i64` values.
503- pub fn i64 ( range : Range < i64 > ) -> Self {
503+ pub fn i64 ( range : RangeInclusive < i64 > ) -> Self {
504504 Self ( NumberInputRange :: I64 ( range) )
505505 }
506506}
@@ -1003,10 +1003,10 @@ fn scrubber_on_drag_start(
10031003 // Use various heuristics to determine drag speed based on which components are present.
10041004 drag. drag_speed = if let Some ( SoftLimit ( nrange) ) = soft_limit {
10051005 match nrange {
1006- NumberInputRange :: F32 ( range) => ( range. end - range. start ) as f64 / slider_size,
1007- NumberInputRange :: F64 ( range) => ( range. end - range. start ) / slider_size,
1008- NumberInputRange :: I32 ( range) => ( range. end - range. start ) as f64 / slider_size,
1009- NumberInputRange :: I64 ( range) => ( range. end - range. start ) as f64 / slider_size,
1006+ NumberInputRange :: F32 ( range) => ( range. end ( ) - range. start ( ) ) as f64 / slider_size,
1007+ NumberInputRange :: F64 ( range) => ( range. end ( ) - range. start ( ) ) / slider_size,
1008+ NumberInputRange :: I32 ( range) => ( range. end ( ) - range. start ( ) ) as f64 / slider_size,
1009+ NumberInputRange :: I64 ( range) => ( range. end ( ) - range. start ( ) ) as f64 / slider_size,
10101010 }
10111011 } else if let Some ( NumberInputStep ( step) ) = step {
10121012 * step * BASE_DRAG_SPEED
0 commit comments