be_eloistree_hellocrate/
lib.rs

1
2
3//! # Eloi Crate
4//! Hello guys,
5//!  this is a simple crate that I created to test the creation of a crate in Rust.
6//! This is my first one.
7//! [![Hello Rust Bend Drone XR](https://raw.githubusercontent.com/EloiStree/HelloRustBending/main/Icon/RustDroneXR.png)](https://github.com/EloiStree/HelloRustBending)   
8//! [https://github.com/EloiStree/HelloRustBending](https://github.com/EloiStree/HelloRustBending)    
9//!  
10//! May the code be with you :)
11
12/// Test  in console debug the methode of gamepad to integer
13pub fn test_gamepad_to_integer(){
14    println!("Hello, world for Eloi Crate!");
15    for _ in 0..10{
16        let  input = gamepad_to_integer(
17            19,
18            get_random_float(),
19            get_random_float(),
20            get_random_float(),
21            get_random_float()
22        );
23        println!("Input: {}", input);
24    }
25
26    println!("T:{}", gamepad_to_integer(19,0.0,0.0,0.0,0.0));
27    println!("T:{}", gamepad_to_integer(19,1.0,0.0,0.0,0.0));
28    println!("T:{}", gamepad_to_integer(19,0.0,1.0,0.0,0.0));
29    println!("T:{}", gamepad_to_integer(19,0.0,0.0,1.0,0.0));
30    println!("T:{}", gamepad_to_integer(19,0.0,0.0,0.0,1.0));
31    println!("T:{}", gamepad_to_integer(19,1.0,1.0,1.0,1.0));
32    println!("T:{}", gamepad_to_integer(19,1.0,1.0,0.0,0.0));
33    println!("T:{}", gamepad_to_integer(19,0.0,0.0,1.0,1.0));
34    
35    println!("T:{}", gamepad_to_integer(-19,0.0,0.0,0.0,0.0));
36    println!("T:{}", gamepad_to_integer(-19,1.0,0.0,0.0,0.0));
37    println!("T:{}", gamepad_to_integer(-19,0.0,1.0,0.0,0.0));
38    println!("T:{}", gamepad_to_integer(-19,0.0,0.0,1.0,0.0));
39    println!("T:{}", gamepad_to_integer(-19,0.0,0.0,0.0,1.0));
40    println!("T:{}", gamepad_to_integer(-19,1.0,1.0,1.0,1.0));
41    println!("T:{}", gamepad_to_integer(-19,1.0,1.0,0.0,0.0));
42    println!("T:{}", gamepad_to_integer(-19,0.0,0.0,1.0,1.0));
43}
44
45
46/// Returns a random float between -1.0 and 1.0
47pub fn get_random_float() -> f32 {
48    return (rand::random::<f32>() - 0.5) * 2.0;
49}
50
51
52/// Returns a integer that represents the gamepad input with front it,
53/// left stick x, left stick y, right stick x, right stick y
54///  (Right Rotation), (Down Up), (Left, Right), (Back, Front)
55pub fn gamepad_to_integer(front_id:i8,lx:f32, ly:f32, rx:f32, ry:f32 )->i32
56{
57
58    let mut result:i32 =0;
59
60    result+= parse_percent11_to_integer99(lx)*1000000;
61    result+= parse_percent11_to_integer99(ly)*10000;
62    result+= parse_percent11_to_integer99(rx)*100;
63    result+= parse_percent11_to_integer99(ry)*1;
64
65    if front_id<0{
66        result += (-front_id as i32) * 100000000;
67        result = result *-1;
68    }
69    else {
70        result += (front_id as i32) * 100000000;
71    }
72    return result;
73}
74
75
76/// Converts a float between -1.0 and 1.0 to a integer between 0 and 99 digits
77/// Quick Example
78/// ```
79/// let percent11_negative:i32 = be_eloistree_hellocrate::parse_percent11_to_integer99(-1.0);
80/// assert_eq!(percent11_negative, 1);
81/// let percent11_positive :i32= be_eloistree_hellocrate::parse_percent11_to_integer99(1.0);
82/// assert_eq!(percent11_positive, 99);
83/// let percent11_zero :i32= be_eloistree_hellocrate::parse_percent11_to_integer99(0.0);
84/// assert_eq!(percent11_zero, 0);
85/// ```
86/// Source of this test: [https://youtu.be/4TI153PIEDQ?t=346](https://youtu.be/4TI153PIEDQ?t=346)
87/// cargo test
88/// cargo doc --open
89pub fn parse_percent11_to_integer99(percent11:f32) -> i32{
90    if percent11==0.00{
91        return 0;
92    }
93    return 1+ (( ( (percent11+1.0)*0.5  ) * 98.0 ) ) as i32;
94}
95
96
97// Doc commentary
98// https://youtu.be/4TI153PIEDQ?t=243
99
100
101
102// cargo doc --open
103// cargo test
104// cargo login ciobelF5EbtvD0...Ei
105
106
107
108pub use self::utils::random_println;
109
110pub mod utils{
111    use crate::gamepad_to_integer;
112    use crate::get_random_float;
113
114
115    pub fn random_println(){
116
117        println!("Hello, world for Eloi Crate!");
118        for _ in 0..10{
119            let  input = gamepad_to_integer(
120                19,
121                get_random_float(),
122                get_random_float(),
123                get_random_float(),
124                get_random_float()
125            );
126            println!("Input: {}", input);
127        }
128
129    }
130
131
132}