1#![deny(trivial_casts, trivial_numeric_casts, unstable_features)]
5
6use quote::quote;
7
8mod channel;
9mod message;
10mod replicate;
11mod shared;
12
13use channel::channel_impl;
14use message::message_impl;
15use replicate::replicate_impl;
16
17#[proc_macro_derive(Replicate)]
21pub fn replicate_derive_shared(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
22 let shared_crate_name = quote! { naia_shared };
23 replicate_impl(input, shared_crate_name)
24}
25
26#[proc_macro_derive(ReplicateBevy)]
28pub fn replicate_derive_bevy(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
29 let shared_crate_name = quote! { naia_bevy_shared };
30 replicate_impl(input, shared_crate_name)
31}
32
33#[proc_macro_derive(ReplicateHecs)]
35pub fn replicate_derive_hecs(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
36 let shared_crate_name = quote! { naia_hecs_shared };
37 replicate_impl(input, shared_crate_name)
38}
39
40#[proc_macro_derive(Channel)]
44pub fn channel_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
45 channel_impl(input)
46}
47
48#[proc_macro_derive(MessageInternal)]
52pub fn message_derive_internal(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
53 let shared_crate_name = quote! { crate };
54 message_impl(input, shared_crate_name, false, false)
55}
56
57#[proc_macro_derive(MessageFragment)]
59pub fn message_derive_fragment(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
60 let shared_crate_name = quote! { crate };
61 message_impl(input, shared_crate_name, true, false)
62}
63
64#[proc_macro_derive(MessageRequest)]
66pub fn message_derive_request(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
67 let shared_crate_name = quote! { crate };
68 message_impl(input, shared_crate_name, false, true)
69}
70
71#[proc_macro_derive(Message)]
73pub fn message_derive_shared(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
74 let shared_crate_name = quote! { naia_shared };
75 message_impl(input, shared_crate_name, false, false)
76}
77
78#[proc_macro_derive(MessageBevy)]
80pub fn message_derive_bevy(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
81 let shared_crate_name = quote! { naia_bevy_shared };
82 message_impl(input, shared_crate_name, false, false)
83}
84
85#[proc_macro_derive(MessageHecs)]
87pub fn message_derive_hecs(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
88 let shared_crate_name = quote! { naia_hecs_shared };
89 message_impl(input, shared_crate_name, false, false)
90}