aboutsummaryrefslogtreecommitdiff
path: root/stockton-types/src
diff options
context:
space:
mode:
authortcmal <me@aria.rip>2024-08-25 17:44:24 +0100
committertcmal <me@aria.rip>2024-08-25 17:44:24 +0100
commit6367a9ba5a549b62f01da61fb50323877b9f52ff (patch)
treeeb83ed6487f2ec35f9ea1e97124c9a173b8ceef0 /stockton-types/src
parentf84ec1a3e077fa0f2e9cd310b6e32e81f1bc1129 (diff)
refactor(all): move types to -skeleton
Diffstat (limited to 'stockton-types/src')
-rw-r--r--stockton-types/src/components/mod.rs61
-rw-r--r--stockton-types/src/lib.rs22
-rw-r--r--stockton-types/src/session.rs33
3 files changed, 0 insertions, 116 deletions
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);
- }
-}