1extern "C" {
10 fn node_type() -> i32;
11 fn node_set_order(slf: i64, val: i32);
12 fn node_get_order(slf: i64) -> i32;
13 fn node_set_angle(slf: i64, val: f32);
14 fn node_get_angle(slf: i64) -> f32;
15 fn node_set_angle_x(slf: i64, val: f32);
16 fn node_get_angle_x(slf: i64) -> f32;
17 fn node_set_angle_y(slf: i64, val: f32);
18 fn node_get_angle_y(slf: i64) -> f32;
19 fn node_set_scale_x(slf: i64, val: f32);
20 fn node_get_scale_x(slf: i64) -> f32;
21 fn node_set_scale_y(slf: i64, val: f32);
22 fn node_get_scale_y(slf: i64) -> f32;
23 fn node_set_x(slf: i64, val: f32);
24 fn node_get_x(slf: i64) -> f32;
25 fn node_set_y(slf: i64, val: f32);
26 fn node_get_y(slf: i64) -> f32;
27 fn node_set_z(slf: i64, val: f32);
28 fn node_get_z(slf: i64) -> f32;
29 fn node_set_position(slf: i64, val: i64);
30 fn node_get_position(slf: i64) -> i64;
31 fn node_set_skew_x(slf: i64, val: f32);
32 fn node_get_skew_x(slf: i64) -> f32;
33 fn node_set_skew_y(slf: i64, val: f32);
34 fn node_get_skew_y(slf: i64) -> f32;
35 fn node_set_visible(slf: i64, val: i32);
36 fn node_is_visible(slf: i64) -> i32;
37 fn node_set_anchor(slf: i64, val: i64);
38 fn node_get_anchor(slf: i64) -> i64;
39 fn node_set_width(slf: i64, val: f32);
40 fn node_get_width(slf: i64) -> f32;
41 fn node_set_height(slf: i64, val: f32);
42 fn node_get_height(slf: i64) -> f32;
43 fn node_set_size(slf: i64, val: i64);
44 fn node_get_size(slf: i64) -> i64;
45 fn node_set_tag(slf: i64, val: i64);
46 fn node_get_tag(slf: i64) -> i64;
47 fn node_set_opacity(slf: i64, val: f32);
48 fn node_get_opacity(slf: i64) -> f32;
49 fn node_set_color(slf: i64, val: i32);
50 fn node_get_color(slf: i64) -> i32;
51 fn node_set_color3(slf: i64, val: i32);
52 fn node_get_color3(slf: i64) -> i32;
53 fn node_set_pass_opacity(slf: i64, val: i32);
54 fn node_is_pass_opacity(slf: i64) -> i32;
55 fn node_set_pass_color3(slf: i64, val: i32);
56 fn node_is_pass_color3(slf: i64) -> i32;
57 fn node_set_transform_target(slf: i64, val: i64);
58 fn node_get_transform_target(slf: i64) -> i64;
59 fn node_set_scheduler(slf: i64, val: i64);
60 fn node_get_scheduler(slf: i64) -> i64;
61 fn node_get_children(slf: i64) -> i64;
62 fn node_get_parent(slf: i64) -> i64;
63 fn node_is_running(slf: i64) -> i32;
64 fn node_is_scheduled(slf: i64) -> i32;
65 fn node_get_action_count(slf: i64) -> i32;
66 fn node_get_data(slf: i64) -> i64;
67 fn node_set_touch_enabled(slf: i64, val: i32);
68 fn node_is_touch_enabled(slf: i64) -> i32;
69 fn node_set_swallow_touches(slf: i64, val: i32);
70 fn node_is_swallow_touches(slf: i64) -> i32;
71 fn node_set_swallow_mouse_wheel(slf: i64, val: i32);
72 fn node_is_swallow_mouse_wheel(slf: i64) -> i32;
73 fn node_set_keyboard_enabled(slf: i64, val: i32);
74 fn node_is_keyboard_enabled(slf: i64) -> i32;
75 fn node_set_controller_enabled(slf: i64, val: i32);
76 fn node_is_controller_enabled(slf: i64) -> i32;
77 fn node_set_render_group(slf: i64, val: i32);
78 fn node_is_render_group(slf: i64) -> i32;
79 fn node_set_show_debug(slf: i64, val: i32);
80 fn node_is_show_debug(slf: i64) -> i32;
81 fn node_set_render_order(slf: i64, val: i32);
82 fn node_get_render_order(slf: i64) -> i32;
83 fn node_add_child_with_order_tag(slf: i64, child: i64, order: i32, tag: i64);
84 fn node_add_child_with_order(slf: i64, child: i64, order: i32);
85 fn node_add_child(slf: i64, child: i64);
86 fn node_add_to_with_order_tag(slf: i64, parent: i64, order: i32, tag: i64) -> i64;
87 fn node_add_to_with_order(slf: i64, parent: i64, order: i32) -> i64;
88 fn node_add_to(slf: i64, parent: i64) -> i64;
89 fn node_remove_child(slf: i64, child: i64, cleanup: i32);
90 fn node_remove_child_by_tag(slf: i64, tag: i64, cleanup: i32);
91 fn node_remove_all_children(slf: i64, cleanup: i32);
92 fn node_remove_from_parent(slf: i64, cleanup: i32);
93 fn node_move_to_parent(slf: i64, parent: i64);
94 fn node_cleanup(slf: i64);
95 fn node_get_child_by_tag(slf: i64, tag: i64) -> i64;
96 fn node_schedule(slf: i64, func0: i32, stack0: i64);
97 fn node_unschedule(slf: i64);
98 fn node_convert_to_node_space(slf: i64, world_point: i64) -> i64;
99 fn node_convert_to_world_space(slf: i64, node_point: i64) -> i64;
100 fn node_convert_to_window_space(slf: i64, node_point: i64, func0: i32, stack0: i64);
101 fn node_each_child(slf: i64, func0: i32, stack0: i64) -> i32;
102 fn node_traverse(slf: i64, func0: i32, stack0: i64) -> i32;
103 fn node_traverse_all(slf: i64, func0: i32, stack0: i64) -> i32;
104 fn node_run_action_def(slf: i64, def: i64, looped: i32) -> f32;
105 fn node_run_action(slf: i64, action: i64, looped: i32) -> f32;
106 fn node_stop_all_actions(slf: i64);
107 fn node_perform_def(slf: i64, action_def: i64, looped: i32) -> f32;
108 fn node_perform(slf: i64, action: i64, looped: i32) -> f32;
109 fn node_stop_action(slf: i64, action: i64);
110 fn node_align_items_vertically(slf: i64, padding: f32) -> i64;
111 fn node_align_items_vertically_with_size(slf: i64, size: i64, padding: f32) -> i64;
112 fn node_align_items_horizontally(slf: i64, padding: f32) -> i64;
113 fn node_align_items_horizontally_with_size(slf: i64, size: i64, padding: f32) -> i64;
114 fn node_align_items(slf: i64, padding: f32) -> i64;
115 fn node_align_items_with_size(slf: i64, size: i64, padding: f32) -> i64;
116 fn node_move_and_cull_items(slf: i64, delta: i64);
117 fn node_attach_ime(slf: i64);
118 fn node_detach_ime(slf: i64);
119 fn node_grab(slf: i64) -> i64;
120 fn node_grab_with_size(slf: i64, grid_x: i32, grid_y: i32) -> i64;
121 fn node_stop_grab(slf: i64);
122 fn node_set_transform_target_null(slf: i64);
123 fn node_slot(slf: i64, event_name: i64, func0: i32, stack0: i64);
124 fn node_gslot(slf: i64, event_name: i64, func0: i32, stack0: i64);
125 fn node_emit(slf: i64, name: i64, stack: i64);
126 fn node_on_update(slf: i64, func0: i32, stack0: i64);
127 fn node_new() -> i64;
128}
129use crate::dora::IObject;
130pub struct Node { raw: i64 }
132crate::dora_object!(Node);
133impl INode for Node { }
134pub trait INode: IObject {
135 fn set_order(&mut self, val: i32) {
137 unsafe { node_set_order(self.raw(), val) };
138 }
139 fn get_order(&self) -> i32 {
141 return unsafe { node_get_order(self.raw()) };
142 }
143 fn set_angle(&mut self, val: f32) {
145 unsafe { node_set_angle(self.raw(), val) };
146 }
147 fn get_angle(&self) -> f32 {
149 return unsafe { node_get_angle(self.raw()) };
150 }
151 fn set_angle_x(&mut self, val: f32) {
153 unsafe { node_set_angle_x(self.raw(), val) };
154 }
155 fn get_angle_x(&self) -> f32 {
157 return unsafe { node_get_angle_x(self.raw()) };
158 }
159 fn set_angle_y(&mut self, val: f32) {
161 unsafe { node_set_angle_y(self.raw(), val) };
162 }
163 fn get_angle_y(&self) -> f32 {
165 return unsafe { node_get_angle_y(self.raw()) };
166 }
167 fn set_scale_x(&mut self, val: f32) {
169 unsafe { node_set_scale_x(self.raw(), val) };
170 }
171 fn get_scale_x(&self) -> f32 {
173 return unsafe { node_get_scale_x(self.raw()) };
174 }
175 fn set_scale_y(&mut self, val: f32) {
177 unsafe { node_set_scale_y(self.raw(), val) };
178 }
179 fn get_scale_y(&self) -> f32 {
181 return unsafe { node_get_scale_y(self.raw()) };
182 }
183 fn set_x(&mut self, val: f32) {
185 unsafe { node_set_x(self.raw(), val) };
186 }
187 fn get_x(&self) -> f32 {
189 return unsafe { node_get_x(self.raw()) };
190 }
191 fn set_y(&mut self, val: f32) {
193 unsafe { node_set_y(self.raw(), val) };
194 }
195 fn get_y(&self) -> f32 {
197 return unsafe { node_get_y(self.raw()) };
198 }
199 fn set_z(&mut self, val: f32) {
201 unsafe { node_set_z(self.raw(), val) };
202 }
203 fn get_z(&self) -> f32 {
205 return unsafe { node_get_z(self.raw()) };
206 }
207 fn set_position(&mut self, val: &crate::dora::Vec2) {
209 unsafe { node_set_position(self.raw(), val.into_i64()) };
210 }
211 fn get_position(&self) -> crate::dora::Vec2 {
213 return unsafe { crate::dora::Vec2::from(node_get_position(self.raw())) };
214 }
215 fn set_skew_x(&mut self, val: f32) {
217 unsafe { node_set_skew_x(self.raw(), val) };
218 }
219 fn get_skew_x(&self) -> f32 {
221 return unsafe { node_get_skew_x(self.raw()) };
222 }
223 fn set_skew_y(&mut self, val: f32) {
225 unsafe { node_set_skew_y(self.raw(), val) };
226 }
227 fn get_skew_y(&self) -> f32 {
229 return unsafe { node_get_skew_y(self.raw()) };
230 }
231 fn set_visible(&mut self, val: bool) {
233 unsafe { node_set_visible(self.raw(), if val { 1 } else { 0 }) };
234 }
235 fn is_visible(&self) -> bool {
237 return unsafe { node_is_visible(self.raw()) != 0 };
238 }
239 fn set_anchor(&mut self, val: &crate::dora::Vec2) {
241 unsafe { node_set_anchor(self.raw(), val.into_i64()) };
242 }
243 fn get_anchor(&self) -> crate::dora::Vec2 {
245 return unsafe { crate::dora::Vec2::from(node_get_anchor(self.raw())) };
246 }
247 fn set_width(&mut self, val: f32) {
249 unsafe { node_set_width(self.raw(), val) };
250 }
251 fn get_width(&self) -> f32 {
253 return unsafe { node_get_width(self.raw()) };
254 }
255 fn set_height(&mut self, val: f32) {
257 unsafe { node_set_height(self.raw(), val) };
258 }
259 fn get_height(&self) -> f32 {
261 return unsafe { node_get_height(self.raw()) };
262 }
263 fn set_size(&mut self, val: &crate::dora::Size) {
265 unsafe { node_set_size(self.raw(), val.into_i64()) };
266 }
267 fn get_size(&self) -> crate::dora::Size {
269 return unsafe { crate::dora::Size::from(node_get_size(self.raw())) };
270 }
271 fn set_tag(&mut self, val: &str) {
273 unsafe { node_set_tag(self.raw(), crate::dora::from_string(val)) };
274 }
275 fn get_tag(&self) -> String {
277 return unsafe { crate::dora::to_string(node_get_tag(self.raw())) };
278 }
279 fn set_opacity(&mut self, val: f32) {
281 unsafe { node_set_opacity(self.raw(), val) };
282 }
283 fn get_opacity(&self) -> f32 {
285 return unsafe { node_get_opacity(self.raw()) };
286 }
287 fn set_color(&mut self, val: &crate::dora::Color) {
289 unsafe { node_set_color(self.raw(), val.to_argb() as i32) };
290 }
291 fn get_color(&self) -> crate::dora::Color {
293 return unsafe { crate::dora::Color::from(node_get_color(self.raw())) };
294 }
295 fn set_color3(&mut self, val: &crate::dora::Color3) {
297 unsafe { node_set_color3(self.raw(), val.to_rgb() as i32) };
298 }
299 fn get_color3(&self) -> crate::dora::Color3 {
301 return unsafe { crate::dora::Color3::from(node_get_color3(self.raw())) };
302 }
303 fn set_pass_opacity(&mut self, val: bool) {
305 unsafe { node_set_pass_opacity(self.raw(), if val { 1 } else { 0 }) };
306 }
307 fn is_pass_opacity(&self) -> bool {
309 return unsafe { node_is_pass_opacity(self.raw()) != 0 };
310 }
311 fn set_pass_color3(&mut self, val: bool) {
313 unsafe { node_set_pass_color3(self.raw(), if val { 1 } else { 0 }) };
314 }
315 fn is_pass_color3(&self) -> bool {
317 return unsafe { node_is_pass_color3(self.raw()) != 0 };
318 }
319 fn set_transform_target(&mut self, val: &dyn crate::dora::INode) {
321 unsafe { node_set_transform_target(self.raw(), val.raw()) };
322 }
323 fn get_transform_target(&self) -> Option<crate::dora::Node> {
325 return unsafe { crate::dora::Node::from(node_get_transform_target(self.raw())) };
326 }
327 fn set_scheduler(&mut self, val: &crate::dora::Scheduler) {
329 unsafe { node_set_scheduler(self.raw(), val.raw()) };
330 }
331 fn get_scheduler(&self) -> crate::dora::Scheduler {
333 return unsafe { crate::dora::Scheduler::from(node_get_scheduler(self.raw())).unwrap() };
334 }
335 fn get_children(&self) -> Option<crate::dora::Array> {
337 return unsafe { crate::dora::Array::from(node_get_children(self.raw())) };
338 }
339 fn get_parent(&self) -> Option<crate::dora::Node> {
341 return unsafe { crate::dora::Node::from(node_get_parent(self.raw())) };
342 }
343 fn is_running(&self) -> bool {
345 return unsafe { node_is_running(self.raw()) != 0 };
346 }
347 fn is_scheduled(&self) -> bool {
349 return unsafe { node_is_scheduled(self.raw()) != 0 };
350 }
351 fn get_action_count(&self) -> i32 {
353 return unsafe { node_get_action_count(self.raw()) };
354 }
355 fn get_data(&self) -> crate::dora::Dictionary {
357 return unsafe { crate::dora::Dictionary::from(node_get_data(self.raw())).unwrap() };
358 }
359 fn set_touch_enabled(&mut self, val: bool) {
361 unsafe { node_set_touch_enabled(self.raw(), if val { 1 } else { 0 }) };
362 }
363 fn is_touch_enabled(&self) -> bool {
365 return unsafe { node_is_touch_enabled(self.raw()) != 0 };
366 }
367 fn set_swallow_touches(&mut self, val: bool) {
369 unsafe { node_set_swallow_touches(self.raw(), if val { 1 } else { 0 }) };
370 }
371 fn is_swallow_touches(&self) -> bool {
373 return unsafe { node_is_swallow_touches(self.raw()) != 0 };
374 }
375 fn set_swallow_mouse_wheel(&mut self, val: bool) {
377 unsafe { node_set_swallow_mouse_wheel(self.raw(), if val { 1 } else { 0 }) };
378 }
379 fn is_swallow_mouse_wheel(&self) -> bool {
381 return unsafe { node_is_swallow_mouse_wheel(self.raw()) != 0 };
382 }
383 fn set_keyboard_enabled(&mut self, val: bool) {
385 unsafe { node_set_keyboard_enabled(self.raw(), if val { 1 } else { 0 }) };
386 }
387 fn is_keyboard_enabled(&self) -> bool {
389 return unsafe { node_is_keyboard_enabled(self.raw()) != 0 };
390 }
391 fn set_controller_enabled(&mut self, val: bool) {
393 unsafe { node_set_controller_enabled(self.raw(), if val { 1 } else { 0 }) };
394 }
395 fn is_controller_enabled(&self) -> bool {
397 return unsafe { node_is_controller_enabled(self.raw()) != 0 };
398 }
399 fn set_render_group(&mut self, val: bool) {
401 unsafe { node_set_render_group(self.raw(), if val { 1 } else { 0 }) };
402 }
403 fn is_render_group(&self) -> bool {
405 return unsafe { node_is_render_group(self.raw()) != 0 };
406 }
407 fn set_show_debug(&mut self, val: bool) {
409 unsafe { node_set_show_debug(self.raw(), if val { 1 } else { 0 }) };
410 }
411 fn is_show_debug(&self) -> bool {
413 return unsafe { node_is_show_debug(self.raw()) != 0 };
414 }
415 fn set_render_order(&mut self, val: i32) {
417 unsafe { node_set_render_order(self.raw(), val) };
418 }
419 fn get_render_order(&self) -> i32 {
421 return unsafe { node_get_render_order(self.raw()) };
422 }
423 fn add_child_with_order_tag(&mut self, child: &dyn crate::dora::INode, order: i32, tag: &str) {
431 unsafe { node_add_child_with_order_tag(self.raw(), child.raw(), order, crate::dora::from_string(tag)); }
432 }
433 fn add_child_with_order(&mut self, child: &dyn crate::dora::INode, order: i32) {
440 unsafe { node_add_child_with_order(self.raw(), child.raw(), order); }
441 }
442 fn add_child(&mut self, child: &dyn crate::dora::INode) {
448 unsafe { node_add_child(self.raw(), child.raw()); }
449 }
450 fn add_to_with_order_tag(&mut self, parent: &dyn crate::dora::INode, order: i32, tag: &str) -> crate::dora::Node {
462 unsafe { return crate::dora::Node::from(node_add_to_with_order_tag(self.raw(), parent.raw(), order, crate::dora::from_string(tag))).unwrap(); }
463 }
464 fn add_to_with_order(&mut self, parent: &dyn crate::dora::INode, order: i32) -> crate::dora::Node {
475 unsafe { return crate::dora::Node::from(node_add_to_with_order(self.raw(), parent.raw(), order)).unwrap(); }
476 }
477 fn add_to(&mut self, parent: &dyn crate::dora::INode) -> crate::dora::Node {
487 unsafe { return crate::dora::Node::from(node_add_to(self.raw(), parent.raw())).unwrap(); }
488 }
489 fn remove_child(&mut self, child: &dyn crate::dora::INode, cleanup: bool) {
496 unsafe { node_remove_child(self.raw(), child.raw(), if cleanup { 1 } else { 0 }); }
497 }
498 fn remove_child_by_tag(&mut self, tag: &str, cleanup: bool) {
505 unsafe { node_remove_child_by_tag(self.raw(), crate::dora::from_string(tag), if cleanup { 1 } else { 0 }); }
506 }
507 fn remove_all_children(&mut self, cleanup: bool) {
513 unsafe { node_remove_all_children(self.raw(), if cleanup { 1 } else { 0 }); }
514 }
515 fn remove_from_parent(&mut self, cleanup: bool) {
521 unsafe { node_remove_from_parent(self.raw(), if cleanup { 1 } else { 0 }); }
522 }
523 fn move_to_parent(&mut self, parent: &dyn crate::dora::INode) {
529 unsafe { node_move_to_parent(self.raw(), parent.raw()); }
530 }
531 fn cleanup(&mut self) {
533 unsafe { node_cleanup(self.raw()); }
534 }
535 fn get_child_by_tag(&mut self, tag: &str) -> Option<crate::dora::Node> {
545 unsafe { return crate::dora::Node::from(node_get_child_by_tag(self.raw(), crate::dora::from_string(tag))); }
546 }
547 fn schedule(&mut self, mut update_func: Box<dyn FnMut(f64) -> bool>) {
553 let mut stack0 = crate::dora::CallStack::new();
554 let stack_raw0 = stack0.raw();
555 let func_id0 = crate::dora::push_function(Box::new(move || {
556 let result = update_func(stack0.pop_f64().unwrap());
557 stack0.push_bool(result);
558 }));
559 unsafe { node_schedule(self.raw(), func_id0, stack_raw0); }
560 }
561 fn unschedule(&mut self) {
563 unsafe { node_unschedule(self.raw()); }
564 }
565 fn convert_to_node_space(&mut self, world_point: &crate::dora::Vec2) -> crate::dora::Vec2 {
575 unsafe { return crate::dora::Vec2::from(node_convert_to_node_space(self.raw(), world_point.into_i64())); }
576 }
577 fn convert_to_world_space(&mut self, node_point: &crate::dora::Vec2) -> crate::dora::Vec2 {
587 unsafe { return crate::dora::Vec2::from(node_convert_to_world_space(self.raw(), node_point.into_i64())); }
588 }
589 fn convert_to_window_space(&mut self, node_point: &crate::dora::Vec2, mut callback: Box<dyn FnMut(&crate::dora::Vec2)>) {
600 let mut stack0 = crate::dora::CallStack::new();
601 let stack_raw0 = stack0.raw();
602 let func_id0 = crate::dora::push_function(Box::new(move || {
603 callback(&stack0.pop_vec2().unwrap())
604 }));
605 unsafe { node_convert_to_window_space(self.raw(), node_point.into_i64(), func_id0, stack_raw0); }
606 }
607 fn each_child(&mut self, mut visitor_func: Box<dyn FnMut(&dyn crate::dora::INode) -> bool>) -> bool {
617 let mut stack0 = crate::dora::CallStack::new();
618 let stack_raw0 = stack0.raw();
619 let func_id0 = crate::dora::push_function(Box::new(move || {
620 let result = visitor_func(&stack0.pop_cast::<crate::dora::Node>().unwrap());
621 stack0.push_bool(result);
622 }));
623 unsafe { return node_each_child(self.raw(), func_id0, stack_raw0) != 0; }
624 }
625 fn traverse(&mut self, mut visitor_func: Box<dyn FnMut(&dyn crate::dora::INode) -> bool>) -> bool {
635 let mut stack0 = crate::dora::CallStack::new();
636 let stack_raw0 = stack0.raw();
637 let func_id0 = crate::dora::push_function(Box::new(move || {
638 let result = visitor_func(&stack0.pop_cast::<crate::dora::Node>().unwrap());
639 stack0.push_bool(result);
640 }));
641 unsafe { return node_traverse(self.raw(), func_id0, stack_raw0) != 0; }
642 }
643 fn traverse_all(&mut self, mut visitor_func: Box<dyn FnMut(&dyn crate::dora::INode) -> bool>) -> bool {
653 let mut stack0 = crate::dora::CallStack::new();
654 let stack_raw0 = stack0.raw();
655 let func_id0 = crate::dora::push_function(Box::new(move || {
656 let result = visitor_func(&stack0.pop_cast::<crate::dora::Node>().unwrap());
657 stack0.push_bool(result);
658 }));
659 unsafe { return node_traverse_all(self.raw(), func_id0, stack_raw0) != 0; }
660 }
661 fn run_action_def(&mut self, def: crate::dora::ActionDef, looped: bool) -> f32 {
672 unsafe { return node_run_action_def(self.raw(), def.raw(), if looped { 1 } else { 0 }); }
673 }
674 fn run_action(&mut self, action: &crate::dora::Action, looped: bool) -> f32 {
685 unsafe { return node_run_action(self.raw(), action.raw(), if looped { 1 } else { 0 }); }
686 }
687 fn stop_all_actions(&mut self) {
689 unsafe { node_stop_all_actions(self.raw()); }
690 }
691 fn perform_def(&mut self, action_def: crate::dora::ActionDef, looped: bool) -> f32 {
702 unsafe { return node_perform_def(self.raw(), action_def.raw(), if looped { 1 } else { 0 }); }
703 }
704 fn perform(&mut self, action: &crate::dora::Action, looped: bool) -> f32 {
715 unsafe { return node_perform(self.raw(), action.raw(), if looped { 1 } else { 0 }); }
716 }
717 fn stop_action(&mut self, action: &crate::dora::Action) {
723 unsafe { node_stop_action(self.raw(), action.raw()); }
724 }
725 fn align_items_vertically(&mut self, padding: f32) -> crate::dora::Size {
735 unsafe { return crate::dora::Size::from(node_align_items_vertically(self.raw(), padding)); }
736 }
737 fn align_items_vertically_with_size(&mut self, size: &crate::dora::Size, padding: f32) -> crate::dora::Size {
748 unsafe { return crate::dora::Size::from(node_align_items_vertically_with_size(self.raw(), size.into_i64(), padding)); }
749 }
750 fn align_items_horizontally(&mut self, padding: f32) -> crate::dora::Size {
760 unsafe { return crate::dora::Size::from(node_align_items_horizontally(self.raw(), padding)); }
761 }
762 fn align_items_horizontally_with_size(&mut self, size: &crate::dora::Size, padding: f32) -> crate::dora::Size {
773 unsafe { return crate::dora::Size::from(node_align_items_horizontally_with_size(self.raw(), size.into_i64(), padding)); }
774 }
775 fn align_items(&mut self, padding: f32) -> crate::dora::Size {
785 unsafe { return crate::dora::Size::from(node_align_items(self.raw(), padding)); }
786 }
787 fn align_items_with_size(&mut self, size: &crate::dora::Size, padding: f32) -> crate::dora::Size {
798 unsafe { return crate::dora::Size::from(node_align_items_with_size(self.raw(), size.into_i64(), padding)); }
799 }
800 fn move_and_cull_items(&mut self, delta: &crate::dora::Vec2) {
806 unsafe { node_move_and_cull_items(self.raw(), delta.into_i64()); }
807 }
808 fn attach_ime(&mut self) {
811 unsafe { node_attach_ime(self.raw()); }
812 }
813 fn detach_ime(&mut self) {
815 unsafe { node_detach_ime(self.raw()); }
816 }
817 fn grab(&mut self) -> crate::dora::Grabber {
823 unsafe { return crate::dora::Grabber::from(node_grab(self.raw())).unwrap(); }
824 }
825 fn grab_with_size(&mut self, grid_x: i32, grid_y: i32) -> crate::dora::Grabber {
836 unsafe { return crate::dora::Grabber::from(node_grab_with_size(self.raw(), grid_x, grid_y)).unwrap(); }
837 }
838 fn stop_grab(&mut self) {
840 unsafe { node_stop_grab(self.raw()); }
841 }
842 fn set_transform_target_null(&mut self) {
844 unsafe { node_set_transform_target_null(self.raw()); }
845 }
846 fn slot(&mut self, event_name: &str, mut handler: Box<dyn FnMut(&mut crate::dora::CallStack)>) {
853 let mut stack0 = crate::dora::CallStack::new();
854 let stack_raw0 = stack0.raw();
855 let func_id0 = crate::dora::push_function(Box::new(move || {
856 handler(&mut stack0)
857 }));
858 unsafe { node_slot(self.raw(), crate::dora::from_string(event_name), func_id0, stack_raw0); }
859 }
860 fn gslot(&mut self, event_name: &str, mut handler: Box<dyn FnMut(&mut crate::dora::CallStack)>) {
867 let mut stack0 = crate::dora::CallStack::new();
868 let stack_raw0 = stack0.raw();
869 let func_id0 = crate::dora::push_function(Box::new(move || {
870 handler(&mut stack0)
871 }));
872 unsafe { node_gslot(self.raw(), crate::dora::from_string(event_name), func_id0, stack_raw0); }
873 }
874 fn emit(&mut self, name: &str, stack: &crate::dora::CallStack) {
881 unsafe { node_emit(self.raw(), crate::dora::from_string(name), stack.raw()); }
882 }
883 fn on_update(&mut self, mut update_func: Box<dyn FnMut(f64) -> bool>) {
889 let mut stack0 = crate::dora::CallStack::new();
890 let stack_raw0 = stack0.raw();
891 let func_id0 = crate::dora::push_function(Box::new(move || {
892 let result = update_func(stack0.pop_f64().unwrap());
893 stack0.push_bool(result);
894 }));
895 unsafe { node_on_update(self.raw(), func_id0, stack_raw0); }
896 }
897}
898impl Node {
899 pub(crate) fn type_info() -> (i32, fn(i64) -> Option<Box<dyn IObject>>) {
900 (unsafe { node_type() }, |raw: i64| -> Option<Box<dyn IObject>> {
901 match raw {
902 0 => None,
903 _ => Some(Box::new(Node { raw: raw }))
904 }
905 })
906 }
907 pub fn new() -> Node {
909 unsafe { return Node { raw: node_new() }; }
910 }
911}