pub trait PluginContext: Sized {
// Required methods
fn subscribe_to_event<E: IxaEvent + Copy + 'static>(
&mut self,
handler: impl Fn(&mut Context, E) + 'static,
);
fn emit_event<E: IxaEvent + Copy + 'static>(&mut self, event: E);
fn add_plan(
&mut self,
time: f64,
callback: impl FnOnce(&mut Context) + 'static,
) -> PlanId;
fn add_plan_with_phase(
&mut self,
time: f64,
callback: impl FnOnce(&mut Context) + 'static,
phase: ExecutionPhase,
) -> PlanId;
fn add_periodic_plan_with_phase(
&mut self,
period: f64,
callback: impl Fn(&mut Context) + 'static,
phase: ExecutionPhase,
);
fn cancel_plan(&mut self, plan_id: &PlanId);
fn queue_callback(&mut self, callback: impl FnOnce(&mut Context) + 'static);
fn get_data_container_mut<T: DataPlugin>(
&mut self,
plugin: T,
) -> &mut T::DataContainer;
fn get_data_container<T: DataPlugin>(
&self,
plugin: T,
) -> Option<&T::DataContainer>;
fn get_current_time(&self) -> f64;
}
Expand description
A supertrait that exposes useful methods from Context
for plugins implementing Context extensions.
Usage:
use ixa::prelude_for_plugins::*;
define_data_plugin!(MyData, bool, false);
pub trait MyPlugin: PluginContext {
fn set_my_data(&mut self) {
let my_data = self.get_data_container_mut(MyData);
*my_data = true;
}
}
Required Methods§
fn subscribe_to_event<E: IxaEvent + Copy + 'static>( &mut self, handler: impl Fn(&mut Context, E) + 'static, )
fn emit_event<E: IxaEvent + Copy + 'static>(&mut self, event: E)
fn add_plan( &mut self, time: f64, callback: impl FnOnce(&mut Context) + 'static, ) -> PlanId
fn add_plan_with_phase( &mut self, time: f64, callback: impl FnOnce(&mut Context) + 'static, phase: ExecutionPhase, ) -> PlanId
fn add_periodic_plan_with_phase( &mut self, period: f64, callback: impl Fn(&mut Context) + 'static, phase: ExecutionPhase, )
fn cancel_plan(&mut self, plan_id: &PlanId)
fn queue_callback(&mut self, callback: impl FnOnce(&mut Context) + 'static)
fn get_data_container_mut<T: DataPlugin>( &mut self, plugin: T, ) -> &mut T::DataContainer
fn get_data_container<T: DataPlugin>( &self, plugin: T, ) -> Option<&T::DataContainer>
fn get_current_time(&self) -> f64
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.