diff options
Diffstat (limited to 'stockton-types')
-rw-r--r-- | stockton-types/Cargo.toml | 9 | ||||
-rw-r--r-- | stockton-types/src/components/mod.rs | 61 | ||||
-rw-r--r-- | stockton-types/src/lib.rs | 22 | ||||
-rw-r--r-- | stockton-types/src/session.rs | 33 |
4 files changed, 0 insertions, 125 deletions
diff --git a/stockton-types/Cargo.toml b/stockton-types/Cargo.toml deleted file mode 100644 index 13f1014..0000000 --- a/stockton-types/Cargo.toml +++ /dev/null @@ -1,9 +0,0 @@ -[package] -name = "stockton-types" -version = "0.1.0" -authors = ["Oscar <oscar.shrimpton.personal@gmail.com>"] -edition = "2018" - -[dependencies] -nalgebra-glm = "^0.6" -legion = { version = "^0.3" } diff --git a/stockton-types/src/components/mod.rs b/stockton-types/src/components/mod.rs deleted file mode 100644 index a90f5e8..0000000 --- a/stockton-types/src/components/mod.rs +++ /dev/null @@ -1,61 +0,0 @@ -use na::{Mat4, Vec4}; -use std::f32::consts::PI; - -use crate::Vector3; - -/// 90 degrees in radians -const R89: f32 = (PI / 180.0) * 89.0; - -/// 180 degrees in radians -const R180: f32 = PI; - -#[derive(Clone, Copy, Debug, PartialEq)] -pub struct Transform { - /// Position of the object - pub position: Vector3, - - /// Rotation of the object (euler angles in radians) - pub rotation: Vector3, -} - -impl Transform { - pub fn rotate(&mut self, vec: Vector3) { - self.rotation += vec; - - // Clamp -pi/2 < pitch < pi/2 - if self.rotation.x > R89 { - self.rotation.x = R89; - } else if self.rotation.x <= -R89 { - self.rotation.x = -R89; - } - - // -pi < yaw <= pi - if self.rotation.y <= -R180 { - self.rotation.y = R180 - self.rotation.y % -R180; - } else if self.rotation.y > 180.0 { - self.rotation.y = -R180 + self.rotation.y % R180; - } - } - - pub fn translate(&mut self, delta: Vector3) { - let rot_matrix = - Mat4::from_euler_angles(-self.rotation.x, self.rotation.y, self.rotation.z); - - let new = rot_matrix * Vec4::new(delta.x, delta.y, delta.z, 1.0); - self.position.x += new.x; - self.position.y += new.y; - self.position.z += new.z; - } -} - -#[derive(Clone, Copy, Debug, PartialEq)] -pub struct CameraSettings { - /// FOV (radians) - pub fov: f32, - - /// Near clipping plane (world units) - pub near: f32, - - /// Far clipping plane (world units) - pub far: f32, -} diff --git a/stockton-types/src/lib.rs b/stockton-types/src/lib.rs deleted file mode 100644 index 1b965a0..0000000 --- a/stockton-types/src/lib.rs +++ /dev/null @@ -1,22 +0,0 @@ -//! Common types for all stockton crates. - -extern crate nalgebra_glm as na; - -pub mod components; -pub mod session; - -pub use session::Session; - -/// Alias for convenience -pub type Vector2 = na::Vec2; -/// Alias for convenience -pub type Vector3 = na::Vec3; - -/// Alias for convenience -pub type Vector2i = na::IVec2; - -/// Alias for convenience -pub type Vector3i = na::IVec3; - -/// Alias for convenience -pub type Matrix4 = na::Mat4x4; diff --git a/stockton-types/src/session.rs b/stockton-types/src/session.rs deleted file mode 100644 index 5b91739..0000000 --- a/stockton-types/src/session.rs +++ /dev/null @@ -1,33 +0,0 @@ -//! The thing you play on and all the associated state. - -use legion::systems::Builder; -use legion::*; - -/// A loaded world. -pub struct Session { - pub world: World, - pub resources: Resources, - schedule: Schedule, -} - -impl Session { - /// The level can be any format, as long as it has the required features of a bsp. - pub fn new<S: FnOnce(&mut Builder)>(add_systems: S) -> Session { - let world = World::default(); - - let resources = Resources::default(); - let mut schedule = Schedule::builder(); - add_systems(&mut schedule); - let schedule = schedule.build(); - - Session { - world, - resources, - schedule, - } - } - - pub fn do_update(&mut self) { - self.schedule.execute(&mut self.world, &mut self.resources); - } -} |