Trait PluginContext

Source
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§

Source

fn subscribe_to_event<E: IxaEvent + Copy + 'static>( &mut self, handler: impl Fn(&mut Context, E) + 'static, )

Source

fn emit_event<E: IxaEvent + Copy + 'static>(&mut self, event: E)

Source

fn add_plan( &mut self, time: f64, callback: impl FnOnce(&mut Context) + 'static, ) -> PlanId

Source

fn add_plan_with_phase( &mut self, time: f64, callback: impl FnOnce(&mut Context) + 'static, phase: ExecutionPhase, ) -> PlanId

Source

fn add_periodic_plan_with_phase( &mut self, period: f64, callback: impl Fn(&mut Context) + 'static, phase: ExecutionPhase, )

Source

fn cancel_plan(&mut self, plan_id: &PlanId)

Source

fn queue_callback(&mut self, callback: impl FnOnce(&mut Context) + 'static)

Source

fn get_data_container_mut<T: DataPlugin>( &mut self, plugin: T, ) -> &mut T::DataContainer

Source

fn get_data_container<T: DataPlugin>( &self, plugin: T, ) -> Option<&T::DataContainer>

Source

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.

Implementors§