multilinear 0.6.0

Interactive story simulation using constrained parallel aspects
Documentation
use event_simulation::Simulation;
use multilinear::{Change, MultilinearInfo, MultilinearSimulation};

fn main() {
    let mut story = MultilinearInfo::new();

    // Create aspects
    let place = story.add_aspect();
    let clothes = story.add_aspect();

    // Define event: Move from bedroom to living room
    let event_move = story
        .add_event()
        .with_change(&[Change::transition(place, 0, 1)])
        .unwrap()
        .event();

    // Define event: Change clothes in bedroom
    let event_clothes = story
        .add_event()
        .with_change(&[
            Change::condition(place, 0),
            Change::transition(clothes, 1, 0),
        ])
        .unwrap()
        .event();

    let mut simulation = MultilinearSimulation::new(story);
    simulation.try_call(event_clothes);
    simulation.try_call(event_move);
    simulation.try_revert(event_move);
}