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_on_render(slf: i64, func0: i32, stack0: i64);
128 fn node_new() -> i64;
129}
130use crate::dora::IObject;
131pub struct Node { raw: i64 }
133crate::dora_object!(Node);
134impl INode for Node { }
135pub trait INode: IObject {
136 fn set_order(&mut self, val: i32) {
138 unsafe { node_set_order(self.raw(), val) };
139 }
140 fn get_order(&self) -> i32 {
142 return unsafe { node_get_order(self.raw()) };
143 }
144 fn set_angle(&mut self, val: f32) {
146 unsafe { node_set_angle(self.raw(), val) };
147 }
148 fn get_angle(&self) -> f32 {
150 return unsafe { node_get_angle(self.raw()) };
151 }
152 fn set_angle_x(&mut self, val: f32) {
154 unsafe { node_set_angle_x(self.raw(), val) };
155 }
156 fn get_angle_x(&self) -> f32 {
158 return unsafe { node_get_angle_x(self.raw()) };
159 }
160 fn set_angle_y(&mut self, val: f32) {
162 unsafe { node_set_angle_y(self.raw(), val) };
163 }
164 fn get_angle_y(&self) -> f32 {
166 return unsafe { node_get_angle_y(self.raw()) };
167 }
168 fn set_scale_x(&mut self, val: f32) {
170 unsafe { node_set_scale_x(self.raw(), val) };
171 }
172 fn get_scale_x(&self) -> f32 {
174 return unsafe { node_get_scale_x(self.raw()) };
175 }
176 fn set_scale_y(&mut self, val: f32) {
178 unsafe { node_set_scale_y(self.raw(), val) };
179 }
180 fn get_scale_y(&self) -> f32 {
182 return unsafe { node_get_scale_y(self.raw()) };
183 }
184 fn set_x(&mut self, val: f32) {
186 unsafe { node_set_x(self.raw(), val) };
187 }
188 fn get_x(&self) -> f32 {
190 return unsafe { node_get_x(self.raw()) };
191 }
192 fn set_y(&mut self, val: f32) {
194 unsafe { node_set_y(self.raw(), val) };
195 }
196 fn get_y(&self) -> f32 {
198 return unsafe { node_get_y(self.raw()) };
199 }
200 fn set_z(&mut self, val: f32) {
202 unsafe { node_set_z(self.raw(), val) };
203 }
204 fn get_z(&self) -> f32 {
206 return unsafe { node_get_z(self.raw()) };
207 }
208 fn set_position(&mut self, val: &crate::dora::Vec2) {
210 unsafe { node_set_position(self.raw(), val.into_i64()) };
211 }
212 fn get_position(&self) -> crate::dora::Vec2 {
214 return unsafe { crate::dora::Vec2::from(node_get_position(self.raw())) };
215 }
216 fn set_skew_x(&mut self, val: f32) {
218 unsafe { node_set_skew_x(self.raw(), val) };
219 }
220 fn get_skew_x(&self) -> f32 {
222 return unsafe { node_get_skew_x(self.raw()) };
223 }
224 fn set_skew_y(&mut self, val: f32) {
226 unsafe { node_set_skew_y(self.raw(), val) };
227 }
228 fn get_skew_y(&self) -> f32 {
230 return unsafe { node_get_skew_y(self.raw()) };
231 }
232 fn set_visible(&mut self, val: bool) {
234 unsafe { node_set_visible(self.raw(), if val { 1 } else { 0 }) };
235 }
236 fn is_visible(&self) -> bool {
238 return unsafe { node_is_visible(self.raw()) != 0 };
239 }
240 fn set_anchor(&mut self, val: &crate::dora::Vec2) {
242 unsafe { node_set_anchor(self.raw(), val.into_i64()) };
243 }
244 fn get_anchor(&self) -> crate::dora::Vec2 {
246 return unsafe { crate::dora::Vec2::from(node_get_anchor(self.raw())) };
247 }
248 fn set_width(&mut self, val: f32) {
250 unsafe { node_set_width(self.raw(), val) };
251 }
252 fn get_width(&self) -> f32 {
254 return unsafe { node_get_width(self.raw()) };
255 }
256 fn set_height(&mut self, val: f32) {
258 unsafe { node_set_height(self.raw(), val) };
259 }
260 fn get_height(&self) -> f32 {
262 return unsafe { node_get_height(self.raw()) };
263 }
264 fn set_size(&mut self, val: &crate::dora::Size) {
266 unsafe { node_set_size(self.raw(), val.into_i64()) };
267 }
268 fn get_size(&self) -> crate::dora::Size {
270 return unsafe { crate::dora::Size::from(node_get_size(self.raw())) };
271 }
272 fn set_tag(&mut self, val: &str) {
274 unsafe { node_set_tag(self.raw(), crate::dora::from_string(val)) };
275 }
276 fn get_tag(&self) -> String {
278 return unsafe { crate::dora::to_string(node_get_tag(self.raw())) };
279 }
280 fn set_opacity(&mut self, val: f32) {
282 unsafe { node_set_opacity(self.raw(), val) };
283 }
284 fn get_opacity(&self) -> f32 {
286 return unsafe { node_get_opacity(self.raw()) };
287 }
288 fn set_color(&mut self, val: &crate::dora::Color) {
290 unsafe { node_set_color(self.raw(), val.to_argb() as i32) };
291 }
292 fn get_color(&self) -> crate::dora::Color {
294 return unsafe { crate::dora::Color::from(node_get_color(self.raw())) };
295 }
296 fn set_color3(&mut self, val: &crate::dora::Color3) {
298 unsafe { node_set_color3(self.raw(), val.to_rgb() as i32) };
299 }
300 fn get_color3(&self) -> crate::dora::Color3 {
302 return unsafe { crate::dora::Color3::from(node_get_color3(self.raw())) };
303 }
304 fn set_pass_opacity(&mut self, val: bool) {
306 unsafe { node_set_pass_opacity(self.raw(), if val { 1 } else { 0 }) };
307 }
308 fn is_pass_opacity(&self) -> bool {
310 return unsafe { node_is_pass_opacity(self.raw()) != 0 };
311 }
312 fn set_pass_color3(&mut self, val: bool) {
314 unsafe { node_set_pass_color3(self.raw(), if val { 1 } else { 0 }) };
315 }
316 fn is_pass_color3(&self) -> bool {
318 return unsafe { node_is_pass_color3(self.raw()) != 0 };
319 }
320 fn set_transform_target(&mut self, val: &dyn crate::dora::INode) {
322 unsafe { node_set_transform_target(self.raw(), val.raw()) };
323 }
324 fn get_transform_target(&self) -> Option<crate::dora::Node> {
326 return unsafe { crate::dora::Node::from(node_get_transform_target(self.raw())) };
327 }
328 fn set_scheduler(&mut self, val: &crate::dora::Scheduler) {
330 unsafe { node_set_scheduler(self.raw(), val.raw()) };
331 }
332 fn get_scheduler(&self) -> crate::dora::Scheduler {
334 return unsafe { crate::dora::Scheduler::from(node_get_scheduler(self.raw())).unwrap() };
335 }
336 fn get_children(&self) -> Option<crate::dora::Array> {
338 return unsafe { crate::dora::Array::from(node_get_children(self.raw())) };
339 }
340 fn get_parent(&self) -> Option<crate::dora::Node> {
342 return unsafe { crate::dora::Node::from(node_get_parent(self.raw())) };
343 }
344 fn is_running(&self) -> bool {
346 return unsafe { node_is_running(self.raw()) != 0 };
347 }
348 fn is_scheduled(&self) -> bool {
350 return unsafe { node_is_scheduled(self.raw()) != 0 };
351 }
352 fn get_action_count(&self) -> i32 {
354 return unsafe { node_get_action_count(self.raw()) };
355 }
356 fn get_data(&self) -> crate::dora::Dictionary {
358 return unsafe { crate::dora::Dictionary::from(node_get_data(self.raw())).unwrap() };
359 }
360 fn set_touch_enabled(&mut self, val: bool) {
362 unsafe { node_set_touch_enabled(self.raw(), if val { 1 } else { 0 }) };
363 }
364 fn is_touch_enabled(&self) -> bool {
366 return unsafe { node_is_touch_enabled(self.raw()) != 0 };
367 }
368 fn set_swallow_touches(&mut self, val: bool) {
370 unsafe { node_set_swallow_touches(self.raw(), if val { 1 } else { 0 }) };
371 }
372 fn is_swallow_touches(&self) -> bool {
374 return unsafe { node_is_swallow_touches(self.raw()) != 0 };
375 }
376 fn set_swallow_mouse_wheel(&mut self, val: bool) {
378 unsafe { node_set_swallow_mouse_wheel(self.raw(), if val { 1 } else { 0 }) };
379 }
380 fn is_swallow_mouse_wheel(&self) -> bool {
382 return unsafe { node_is_swallow_mouse_wheel(self.raw()) != 0 };
383 }
384 fn set_keyboard_enabled(&mut self, val: bool) {
386 unsafe { node_set_keyboard_enabled(self.raw(), if val { 1 } else { 0 }) };
387 }
388 fn is_keyboard_enabled(&self) -> bool {
390 return unsafe { node_is_keyboard_enabled(self.raw()) != 0 };
391 }
392 fn set_controller_enabled(&mut self, val: bool) {
394 unsafe { node_set_controller_enabled(self.raw(), if val { 1 } else { 0 }) };
395 }
396 fn is_controller_enabled(&self) -> bool {
398 return unsafe { node_is_controller_enabled(self.raw()) != 0 };
399 }
400 fn set_render_group(&mut self, val: bool) {
402 unsafe { node_set_render_group(self.raw(), if val { 1 } else { 0 }) };
403 }
404 fn is_render_group(&self) -> bool {
406 return unsafe { node_is_render_group(self.raw()) != 0 };
407 }
408 fn set_show_debug(&mut self, val: bool) {
410 unsafe { node_set_show_debug(self.raw(), if val { 1 } else { 0 }) };
411 }
412 fn is_show_debug(&self) -> bool {
414 return unsafe { node_is_show_debug(self.raw()) != 0 };
415 }
416 fn set_render_order(&mut self, val: i32) {
418 unsafe { node_set_render_order(self.raw(), val) };
419 }
420 fn get_render_order(&self) -> i32 {
422 return unsafe { node_get_render_order(self.raw()) };
423 }
424 fn add_child_with_order_tag(&mut self, child: &dyn crate::dora::INode, order: i32, tag: &str) {
432 unsafe { node_add_child_with_order_tag(self.raw(), child.raw(), order, crate::dora::from_string(tag)); }
433 }
434 fn add_child_with_order(&mut self, child: &dyn crate::dora::INode, order: i32) {
441 unsafe { node_add_child_with_order(self.raw(), child.raw(), order); }
442 }
443 fn add_child(&mut self, child: &dyn crate::dora::INode) {
449 unsafe { node_add_child(self.raw(), child.raw()); }
450 }
451 fn add_to_with_order_tag(&mut self, parent: &dyn crate::dora::INode, order: i32, tag: &str) -> crate::dora::Node {
463 unsafe { return crate::dora::Node::from(node_add_to_with_order_tag(self.raw(), parent.raw(), order, crate::dora::from_string(tag))).unwrap(); }
464 }
465 fn add_to_with_order(&mut self, parent: &dyn crate::dora::INode, order: i32) -> crate::dora::Node {
476 unsafe { return crate::dora::Node::from(node_add_to_with_order(self.raw(), parent.raw(), order)).unwrap(); }
477 }
478 fn add_to(&mut self, parent: &dyn crate::dora::INode) -> crate::dora::Node {
488 unsafe { return crate::dora::Node::from(node_add_to(self.raw(), parent.raw())).unwrap(); }
489 }
490 fn remove_child(&mut self, child: &dyn crate::dora::INode, cleanup: bool) {
497 unsafe { node_remove_child(self.raw(), child.raw(), if cleanup { 1 } else { 0 }); }
498 }
499 fn remove_child_by_tag(&mut self, tag: &str, cleanup: bool) {
506 unsafe { node_remove_child_by_tag(self.raw(), crate::dora::from_string(tag), if cleanup { 1 } else { 0 }); }
507 }
508 fn remove_all_children(&mut self, cleanup: bool) {
514 unsafe { node_remove_all_children(self.raw(), if cleanup { 1 } else { 0 }); }
515 }
516 fn remove_from_parent(&mut self, cleanup: bool) {
522 unsafe { node_remove_from_parent(self.raw(), if cleanup { 1 } else { 0 }); }
523 }
524 fn move_to_parent(&mut self, parent: &dyn crate::dora::INode) {
530 unsafe { node_move_to_parent(self.raw(), parent.raw()); }
531 }
532 fn cleanup(&mut self) {
534 unsafe { node_cleanup(self.raw()); }
535 }
536 fn get_child_by_tag(&mut self, tag: &str) -> Option<crate::dora::Node> {
546 unsafe { return crate::dora::Node::from(node_get_child_by_tag(self.raw(), crate::dora::from_string(tag))); }
547 }
548 fn schedule(&mut self, mut update_func: Box<dyn FnMut(f64) -> bool>) {
554 let mut stack0 = crate::dora::CallStack::new();
555 let stack_raw0 = stack0.raw();
556 let func_id0 = crate::dora::push_function(Box::new(move || {
557 let result = update_func(stack0.pop_f64().unwrap());
558 stack0.push_bool(result);
559 }));
560 unsafe { node_schedule(self.raw(), func_id0, stack_raw0); }
561 }
562 fn unschedule(&mut self) {
564 unsafe { node_unschedule(self.raw()); }
565 }
566 fn convert_to_node_space(&mut self, world_point: &crate::dora::Vec2) -> crate::dora::Vec2 {
576 unsafe { return crate::dora::Vec2::from(node_convert_to_node_space(self.raw(), world_point.into_i64())); }
577 }
578 fn convert_to_world_space(&mut self, node_point: &crate::dora::Vec2) -> crate::dora::Vec2 {
588 unsafe { return crate::dora::Vec2::from(node_convert_to_world_space(self.raw(), node_point.into_i64())); }
589 }
590 fn convert_to_window_space(&mut self, node_point: &crate::dora::Vec2, mut callback: Box<dyn FnMut(&crate::dora::Vec2)>) {
601 let mut stack0 = crate::dora::CallStack::new();
602 let stack_raw0 = stack0.raw();
603 let func_id0 = crate::dora::push_function(Box::new(move || {
604 callback(&stack0.pop_vec2().unwrap())
605 }));
606 unsafe { node_convert_to_window_space(self.raw(), node_point.into_i64(), func_id0, stack_raw0); }
607 }
608 fn each_child(&mut self, mut visitor_func: Box<dyn FnMut(&dyn crate::dora::INode) -> bool>) -> bool {
618 let mut stack0 = crate::dora::CallStack::new();
619 let stack_raw0 = stack0.raw();
620 let func_id0 = crate::dora::push_function(Box::new(move || {
621 let result = visitor_func(&stack0.pop_cast::<crate::dora::Node>().unwrap());
622 stack0.push_bool(result);
623 }));
624 unsafe { return node_each_child(self.raw(), func_id0, stack_raw0) != 0; }
625 }
626 fn traverse(&mut self, mut visitor_func: Box<dyn FnMut(&dyn crate::dora::INode) -> bool>) -> bool {
636 let mut stack0 = crate::dora::CallStack::new();
637 let stack_raw0 = stack0.raw();
638 let func_id0 = crate::dora::push_function(Box::new(move || {
639 let result = visitor_func(&stack0.pop_cast::<crate::dora::Node>().unwrap());
640 stack0.push_bool(result);
641 }));
642 unsafe { return node_traverse(self.raw(), func_id0, stack_raw0) != 0; }
643 }
644 fn traverse_all(&mut self, mut visitor_func: Box<dyn FnMut(&dyn crate::dora::INode) -> bool>) -> bool {
654 let mut stack0 = crate::dora::CallStack::new();
655 let stack_raw0 = stack0.raw();
656 let func_id0 = crate::dora::push_function(Box::new(move || {
657 let result = visitor_func(&stack0.pop_cast::<crate::dora::Node>().unwrap());
658 stack0.push_bool(result);
659 }));
660 unsafe { return node_traverse_all(self.raw(), func_id0, stack_raw0) != 0; }
661 }
662 fn run_action_def(&mut self, def: crate::dora::ActionDef, looped: bool) -> f32 {
673 unsafe { return node_run_action_def(self.raw(), def.raw(), if looped { 1 } else { 0 }); }
674 }
675 fn run_action(&mut self, action: &crate::dora::Action, looped: bool) -> f32 {
686 unsafe { return node_run_action(self.raw(), action.raw(), if looped { 1 } else { 0 }); }
687 }
688 fn stop_all_actions(&mut self) {
690 unsafe { node_stop_all_actions(self.raw()); }
691 }
692 fn perform_def(&mut self, action_def: crate::dora::ActionDef, looped: bool) -> f32 {
703 unsafe { return node_perform_def(self.raw(), action_def.raw(), if looped { 1 } else { 0 }); }
704 }
705 fn perform(&mut self, action: &crate::dora::Action, looped: bool) -> f32 {
716 unsafe { return node_perform(self.raw(), action.raw(), if looped { 1 } else { 0 }); }
717 }
718 fn stop_action(&mut self, action: &crate::dora::Action) {
724 unsafe { node_stop_action(self.raw(), action.raw()); }
725 }
726 fn align_items_vertically(&mut self, padding: f32) -> crate::dora::Size {
736 unsafe { return crate::dora::Size::from(node_align_items_vertically(self.raw(), padding)); }
737 }
738 fn align_items_vertically_with_size(&mut self, size: &crate::dora::Size, padding: f32) -> crate::dora::Size {
749 unsafe { return crate::dora::Size::from(node_align_items_vertically_with_size(self.raw(), size.into_i64(), padding)); }
750 }
751 fn align_items_horizontally(&mut self, padding: f32) -> crate::dora::Size {
761 unsafe { return crate::dora::Size::from(node_align_items_horizontally(self.raw(), padding)); }
762 }
763 fn align_items_horizontally_with_size(&mut self, size: &crate::dora::Size, padding: f32) -> crate::dora::Size {
774 unsafe { return crate::dora::Size::from(node_align_items_horizontally_with_size(self.raw(), size.into_i64(), padding)); }
775 }
776 fn align_items(&mut self, padding: f32) -> crate::dora::Size {
786 unsafe { return crate::dora::Size::from(node_align_items(self.raw(), padding)); }
787 }
788 fn align_items_with_size(&mut self, size: &crate::dora::Size, padding: f32) -> crate::dora::Size {
799 unsafe { return crate::dora::Size::from(node_align_items_with_size(self.raw(), size.into_i64(), padding)); }
800 }
801 fn move_and_cull_items(&mut self, delta: &crate::dora::Vec2) {
807 unsafe { node_move_and_cull_items(self.raw(), delta.into_i64()); }
808 }
809 fn attach_ime(&mut self) {
812 unsafe { node_attach_ime(self.raw()); }
813 }
814 fn detach_ime(&mut self) {
816 unsafe { node_detach_ime(self.raw()); }
817 }
818 fn grab(&mut self) -> crate::dora::Grabber {
824 unsafe { return crate::dora::Grabber::from(node_grab(self.raw())).unwrap(); }
825 }
826 fn grab_with_size(&mut self, grid_x: i32, grid_y: i32) -> crate::dora::Grabber {
837 unsafe { return crate::dora::Grabber::from(node_grab_with_size(self.raw(), grid_x, grid_y)).unwrap(); }
838 }
839 fn stop_grab(&mut self) {
841 unsafe { node_stop_grab(self.raw()); }
842 }
843 fn set_transform_target_null(&mut self) {
845 unsafe { node_set_transform_target_null(self.raw()); }
846 }
847 fn slot(&mut self, event_name: &str, mut handler: Box<dyn FnMut(&mut crate::dora::CallStack)>) {
854 let mut stack0 = crate::dora::CallStack::new();
855 let stack_raw0 = stack0.raw();
856 let func_id0 = crate::dora::push_function(Box::new(move || {
857 handler(&mut stack0)
858 }));
859 unsafe { node_slot(self.raw(), crate::dora::from_string(event_name), func_id0, stack_raw0); }
860 }
861 fn gslot(&mut self, event_name: &str, mut handler: Box<dyn FnMut(&mut crate::dora::CallStack)>) {
868 let mut stack0 = crate::dora::CallStack::new();
869 let stack_raw0 = stack0.raw();
870 let func_id0 = crate::dora::push_function(Box::new(move || {
871 handler(&mut stack0)
872 }));
873 unsafe { node_gslot(self.raw(), crate::dora::from_string(event_name), func_id0, stack_raw0); }
874 }
875 fn emit(&mut self, name: &str, stack: &crate::dora::CallStack) {
882 unsafe { node_emit(self.raw(), crate::dora::from_string(name), stack.raw()); }
883 }
884 fn on_update(&mut self, mut update_func: Box<dyn FnMut(f64) -> bool>) {
890 let mut stack0 = crate::dora::CallStack::new();
891 let stack_raw0 = stack0.raw();
892 let func_id0 = crate::dora::push_function(Box::new(move || {
893 let result = update_func(stack0.pop_f64().unwrap());
894 stack0.push_bool(result);
895 }));
896 unsafe { node_on_update(self.raw(), func_id0, stack_raw0); }
897 }
898 fn on_render(&mut self, mut render_func: Box<dyn FnMut(f64) -> bool>) {
908 let mut stack0 = crate::dora::CallStack::new();
909 let stack_raw0 = stack0.raw();
910 let func_id0 = crate::dora::push_function(Box::new(move || {
911 let result = render_func(stack0.pop_f64().unwrap());
912 stack0.push_bool(result);
913 }));
914 unsafe { node_on_render(self.raw(), func_id0, stack_raw0); }
915 }
916}
917impl Node {
918 pub(crate) fn type_info() -> (i32, fn(i64) -> Option<Box<dyn IObject>>) {
919 (unsafe { node_type() }, |raw: i64| -> Option<Box<dyn IObject>> {
920 match raw {
921 0 => None,
922 _ => Some(Box::new(Node { raw: raw }))
923 }
924 })
925 }
926 pub fn new() -> Node {
928 unsafe { return Node { raw: node_new() }; }
929 }
930}