Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bevyengine
GitHub Repository: bevyengine/bevy
Path: blob/main/crates/bevy_animation/macros/src/animation_event.rs
6849 views
1
use bevy_macro_utils::BevyManifest;
2
use proc_macro::TokenStream;
3
use quote::quote;
4
use syn::{parse_macro_input, DeriveInput};
5
6
pub fn derive_animation_event(input: TokenStream) -> TokenStream {
7
let ast = parse_macro_input!(input as DeriveInput);
8
let manifest = BevyManifest::shared();
9
let bevy_ecs = manifest.get_path("bevy_ecs");
10
let bevy_animation = manifest.get_path("bevy_animation");
11
12
let generics = ast.generics;
13
let (impl_generics, type_generics, where_clause) = generics.split_for_impl();
14
15
let struct_name = &ast.ident;
16
17
quote! {
18
impl #impl_generics #bevy_ecs::event::Event for #struct_name #type_generics #where_clause {
19
type Trigger<'a> = #bevy_animation::AnimationEventTrigger;
20
}
21
22
impl #impl_generics #bevy_animation::AnimationEvent for #struct_name #type_generics #where_clause {
23
}
24
}
25
.into()
26
}
27
28