diff --git a/src/gameplay_modes.rs b/src/gameplay_modes.rs index a06fbb2..d22ffcf 100644 --- a/src/gameplay_modes.rs +++ b/src/gameplay_modes.rs @@ -1,6 +1,7 @@ use std::collections::{HashSet,HashMap}; use crate::model::ModelId; use crate::gameplay_style; +use crate::gameplay_attributes; pub struct StageElement{ stage:StageId,//which stage spawn to send to @@ -20,9 +21,24 @@ pub enum StageElementBehaviour{ Checkpoint,//this is a combined behaviour for Ordered & Unordered in case a model is used multiple times or for both. } +pub enum ClipVelocity{ + All,//Set velocity to spawn.velocity + Normal,//clip all out-of-plane velocity when spawning (always "top" face normal) + None,//no clipping +} + +pub struct SpawnBehaviour{ + set_camera_angles:bool,//set camera angles to spawn direction like source + //gain access to a ridiculous amount of velocity targetting options + set_velocity:Option, + //or just the basics + //set_velocity:ClipVelocity, +} + pub struct StageId(u32); pub struct Stage{ spawn:ModelId, + spawn_behaviour:SpawnBehaviour, //other behaviour models of this stage can have ordered_checkpoints:Vec, unordered_checkpoints:HashSet,