@@ -2,10 +2,19 @@ use std::path::PathBuf;
2
2
3
3
use super :: { WindowDescriptor , WindowId } ;
4
4
use bevy_math:: { IVec2 , Vec2 } ;
5
+ use bevy_reflect:: { FromReflect , Reflect } ;
6
+
7
+ #[ cfg( feature = "serialize" ) ]
8
+ use bevy_reflect:: { ReflectDeserialize , ReflectSerialize } ;
5
9
6
10
/// A window event that is sent whenever a window's logical size has changed.
7
- #[ derive( Debug , Clone , PartialEq ) ]
8
- #[ cfg_attr( feature = "serialize" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
11
+ #[ derive( Debug , Clone , PartialEq , Reflect , FromReflect ) ]
12
+ #[ reflect( Debug , PartialEq ) ]
13
+ #[ cfg_attr(
14
+ feature = "serialize" ,
15
+ derive( serde:: Serialize , serde:: Deserialize ) ,
16
+ reflect( Serialize , Deserialize )
17
+ ) ]
9
18
pub struct WindowResized {
10
19
pub id : WindowId ,
11
20
/// The new logical width of the window.
@@ -15,25 +24,40 @@ pub struct WindowResized {
15
24
}
16
25
17
26
/// An event that indicates that a new window should be created.
18
- #[ derive( Debug , Clone , PartialEq ) ]
19
- #[ cfg_attr( feature = "serialize" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
27
+ #[ derive( Debug , Clone , PartialEq , Reflect , FromReflect ) ]
28
+ #[ reflect( Debug , PartialEq ) ]
29
+ #[ cfg_attr(
30
+ feature = "serialize" ,
31
+ derive( serde:: Serialize , serde:: Deserialize ) ,
32
+ reflect( Serialize , Deserialize )
33
+ ) ]
20
34
pub struct CreateWindow {
21
35
pub id : WindowId ,
22
36
pub descriptor : WindowDescriptor ,
23
37
}
24
38
25
39
/// An event that indicates the window should redraw, even if its control flow is set to `Wait` and
26
40
/// there have been no window events.
27
- #[ derive( Debug , Clone , PartialEq , Eq ) ]
28
- #[ cfg_attr( feature = "serialize" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
41
+ #[ derive( Debug , Clone , PartialEq , Eq , Reflect , FromReflect ) ]
42
+ #[ reflect( Debug , PartialEq ) ]
43
+ #[ cfg_attr(
44
+ feature = "serialize" ,
45
+ derive( serde:: Serialize , serde:: Deserialize ) ,
46
+ reflect( Serialize , Deserialize )
47
+ ) ]
29
48
pub struct RequestRedraw ;
30
49
31
50
/// An event that is sent whenever a new window is created.
32
51
///
33
52
/// To create a new window, send a [`CreateWindow`] event - this
34
53
/// event will be sent in the handler for that event.
35
- #[ derive( Debug , Clone , PartialEq , Eq ) ]
36
- #[ cfg_attr( feature = "serialize" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
54
+ #[ derive( Debug , Clone , PartialEq , Eq , Reflect , FromReflect ) ]
55
+ #[ reflect( Debug , PartialEq ) ]
56
+ #[ cfg_attr(
57
+ feature = "serialize" ,
58
+ derive( serde:: Serialize , serde:: Deserialize ) ,
59
+ reflect( Serialize , Deserialize )
60
+ ) ]
37
61
pub struct WindowCreated {
38
62
pub id : WindowId ,
39
63
}
@@ -49,8 +73,13 @@ pub struct WindowCreated {
49
73
/// [`WindowPlugin`]: crate::WindowPlugin
50
74
/// [`Window`]: crate::Window
51
75
/// [closing]: crate::Window::close
52
- #[ derive( Debug , Clone , PartialEq , Eq ) ]
53
- #[ cfg_attr( feature = "serialize" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
76
+ #[ derive( Debug , Clone , PartialEq , Eq , Reflect , FromReflect ) ]
77
+ #[ reflect( Debug , PartialEq ) ]
78
+ #[ cfg_attr(
79
+ feature = "serialize" ,
80
+ derive( serde:: Serialize , serde:: Deserialize ) ,
81
+ reflect( Serialize , Deserialize )
82
+ ) ]
54
83
pub struct WindowCloseRequested {
55
84
pub id : WindowId ,
56
85
}
@@ -59,11 +88,17 @@ pub struct WindowCloseRequested {
59
88
/// handler for [`Window::close`].
60
89
///
61
90
/// [`Window::close`]: crate::Window::close
62
- #[ derive( Debug , Clone , PartialEq , Eq ) ]
63
- #[ cfg_attr( feature = "serialize" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
91
+ #[ derive( Debug , Clone , PartialEq , Eq , Reflect , FromReflect ) ]
92
+ #[ reflect( Debug , PartialEq ) ]
93
+ #[ cfg_attr(
94
+ feature = "serialize" ,
95
+ derive( serde:: Serialize , serde:: Deserialize ) ,
96
+ reflect( Serialize , Deserialize )
97
+ ) ]
64
98
pub struct WindowClosed {
65
99
pub id : WindowId ,
66
100
}
101
+
67
102
/// An event reporting that the mouse cursor has moved on a window.
68
103
///
69
104
/// The event is sent only if the cursor is over one of the application's windows.
@@ -73,62 +108,105 @@ pub struct WindowClosed {
73
108
///
74
109
/// [`WindowEvent::CursorMoved`]: https://docs.rs/winit/latest/winit/event/enum.WindowEvent.html#variant.CursorMoved
75
110
/// [`MouseMotion`]: bevy_input::mouse::MouseMotion
76
- #[ derive( Debug , Clone , PartialEq ) ]
77
- #[ cfg_attr( feature = "serialize" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
111
+ #[ derive( Debug , Clone , PartialEq , Reflect , FromReflect ) ]
112
+ #[ reflect( Debug , PartialEq ) ]
113
+ #[ cfg_attr(
114
+ feature = "serialize" ,
115
+ derive( serde:: Serialize , serde:: Deserialize ) ,
116
+ reflect( Serialize , Deserialize )
117
+ ) ]
78
118
pub struct CursorMoved {
79
119
/// The identifier of the window the cursor has moved on.
80
120
pub id : WindowId ,
81
121
82
122
/// The position of the cursor, in window coordinates.
83
123
pub position : Vec2 ,
84
124
}
125
+
85
126
/// An event that is sent whenever the user's cursor enters a window.
86
- #[ derive( Debug , Clone , PartialEq , Eq ) ]
87
- #[ cfg_attr( feature = "serialize" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
127
+ #[ derive( Debug , Clone , PartialEq , Eq , Reflect , FromReflect ) ]
128
+ #[ reflect( Debug , PartialEq ) ]
129
+ #[ cfg_attr(
130
+ feature = "serialize" ,
131
+ derive( serde:: Serialize , serde:: Deserialize ) ,
132
+ reflect( Serialize , Deserialize )
133
+ ) ]
88
134
pub struct CursorEntered {
89
135
pub id : WindowId ,
90
136
}
137
+
91
138
/// An event that is sent whenever the user's cursor leaves a window.
92
- #[ derive( Debug , Clone , PartialEq , Eq ) ]
93
- #[ cfg_attr( feature = "serialize" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
139
+ #[ derive( Debug , Clone , PartialEq , Eq , Reflect , FromReflect ) ]
140
+ #[ reflect( Debug , PartialEq ) ]
141
+ #[ cfg_attr(
142
+ feature = "serialize" ,
143
+ derive( serde:: Serialize , serde:: Deserialize ) ,
144
+ reflect( Serialize , Deserialize )
145
+ ) ]
94
146
pub struct CursorLeft {
95
147
pub id : WindowId ,
96
148
}
97
149
98
150
/// An event that is sent whenever a window receives a character from the OS or underlying system.
99
- #[ derive( Debug , Clone , PartialEq , Eq ) ]
100
- #[ cfg_attr( feature = "serialize" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
151
+ #[ derive( Debug , Clone , PartialEq , Eq , Reflect , FromReflect ) ]
152
+ #[ reflect( Debug , PartialEq ) ]
153
+ #[ cfg_attr(
154
+ feature = "serialize" ,
155
+ derive( serde:: Serialize , serde:: Deserialize ) ,
156
+ reflect( Serialize , Deserialize )
157
+ ) ]
101
158
pub struct ReceivedCharacter {
102
159
pub id : WindowId ,
103
160
pub char : char ,
104
161
}
105
162
106
163
/// An event that indicates a window has received or lost focus.
107
- #[ derive( Debug , Clone , PartialEq , Eq ) ]
108
- #[ cfg_attr( feature = "serialize" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
164
+ #[ derive( Debug , Clone , PartialEq , Eq , Reflect , FromReflect ) ]
165
+ #[ reflect( Debug , PartialEq ) ]
166
+ #[ cfg_attr(
167
+ feature = "serialize" ,
168
+ derive( serde:: Serialize , serde:: Deserialize ) ,
169
+ reflect( Serialize , Deserialize )
170
+ ) ]
109
171
pub struct WindowFocused {
110
172
pub id : WindowId ,
111
173
pub focused : bool ,
112
174
}
113
175
114
176
/// An event that indicates a window's scale factor has changed.
115
- #[ derive( Debug , Clone , PartialEq ) ]
116
- #[ cfg_attr( feature = "serialize" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
177
+ #[ derive( Debug , Clone , PartialEq , Reflect , FromReflect ) ]
178
+ #[ reflect( Debug , PartialEq ) ]
179
+ #[ cfg_attr(
180
+ feature = "serialize" ,
181
+ derive( serde:: Serialize , serde:: Deserialize ) ,
182
+ reflect( Serialize , Deserialize )
183
+ ) ]
117
184
pub struct WindowScaleFactorChanged {
118
185
pub id : WindowId ,
119
186
pub scale_factor : f64 ,
120
187
}
188
+
121
189
/// An event that indicates a window's OS-reported scale factor has changed.
122
- #[ derive( Debug , Clone , PartialEq ) ]
123
- #[ cfg_attr( feature = "serialize" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
190
+ #[ derive( Debug , Clone , PartialEq , Reflect , FromReflect ) ]
191
+ #[ reflect( Debug , PartialEq ) ]
192
+ #[ cfg_attr(
193
+ feature = "serialize" ,
194
+ derive( serde:: Serialize , serde:: Deserialize ) ,
195
+ reflect( Serialize , Deserialize )
196
+ ) ]
124
197
pub struct WindowBackendScaleFactorChanged {
125
198
pub id : WindowId ,
126
199
pub scale_factor : f64 ,
127
200
}
128
201
129
202
/// Events related to files being dragged and dropped on a window.
130
- #[ derive( Debug , Clone , PartialEq , Eq ) ]
131
- #[ cfg_attr( feature = "serialize" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
203
+ #[ derive( Debug , Clone , PartialEq , Eq , Reflect , FromReflect ) ]
204
+ #[ reflect( Debug , PartialEq ) ]
205
+ #[ cfg_attr(
206
+ feature = "serialize" ,
207
+ derive( serde:: Serialize , serde:: Deserialize ) ,
208
+ reflect( Serialize , Deserialize )
209
+ ) ]
132
210
pub enum FileDragAndDrop {
133
211
DroppedFile { id : WindowId , path_buf : PathBuf } ,
134
212
@@ -138,8 +216,13 @@ pub enum FileDragAndDrop {
138
216
}
139
217
140
218
/// An event that is sent when a window is repositioned in physical pixels.
141
- #[ derive( Debug , Clone , PartialEq , Eq ) ]
142
- #[ cfg_attr( feature = "serialize" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
219
+ #[ derive( Debug , Clone , PartialEq , Eq , Reflect , FromReflect ) ]
220
+ #[ reflect( Debug , PartialEq ) ]
221
+ #[ cfg_attr(
222
+ feature = "serialize" ,
223
+ derive( serde:: Serialize , serde:: Deserialize ) ,
224
+ reflect( Serialize , Deserialize )
225
+ ) ]
143
226
pub struct WindowMoved {
144
227
pub id : WindowId ,
145
228
pub position : IVec2 ,
0 commit comments