You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.4 KiB
64 lines
1.4 KiB
4 years ago
|
use wgpu::{TextureView, Buffer, BindGroup};
|
||
|
use std::sync::Arc;
|
||
|
use rapier3d::dynamics::{RigidBody, RigidBodyHandle};
|
||
|
use rapier3d::geometry::ColliderHandle;
|
||
|
use rapier3d::geometry::Collider as r3dCollider;
|
||
|
|
||
|
// a component is any type that is 'static, sized, send and sync
|
||
|
#[derive(Clone, Copy, Debug, PartialEq)]
|
||
|
pub struct Position {
|
||
|
pub x: f32,
|
||
|
pub y: f32,
|
||
|
pub z: f32,
|
||
|
pub rot: cgmath::Quaternion<f32>,
|
||
|
}
|
||
|
|
||
|
#[derive(Clone, Copy, Debug, PartialEq)]
|
||
|
pub struct Color {
|
||
|
pub r: f32,
|
||
|
pub g: f32,
|
||
|
pub b: f32,
|
||
|
pub a: f32,
|
||
|
}
|
||
|
|
||
|
#[derive(Clone, Copy, Debug, PartialEq)]
|
||
|
pub struct Velocity {
|
||
|
pub dx: f32,
|
||
|
pub dy: f32,
|
||
|
pub rs: f32,
|
||
|
}
|
||
|
|
||
|
#[derive(Clone, Default, PartialEq, Eq, Hash, Copy, Debug)]
|
||
|
pub struct RangeCopy<Idx> {
|
||
|
pub start: Idx,
|
||
|
pub end: Idx,
|
||
|
}
|
||
|
|
||
|
#[derive(Clone, Debug)]
|
||
|
pub struct DirectionalLight {
|
||
|
pub color: wgpu::Color,
|
||
|
pub fov: f32,
|
||
|
pub depth: RangeCopy<f32>,
|
||
|
pub target_view: Arc<TextureView>,
|
||
|
}
|
||
|
|
||
|
#[derive(Clone, Debug)]
|
||
|
pub struct Mesh {
|
||
|
pub index_buffer: Arc<Buffer>,
|
||
|
pub index_count: usize,
|
||
|
pub vertex_buffer: Arc<Buffer>,
|
||
|
pub uniform_buffer: Arc<Buffer>,
|
||
|
pub bind_group: Arc<BindGroup>,
|
||
|
}
|
||
|
|
||
|
#[derive(Clone, Debug)]
|
||
|
pub struct Physics {
|
||
|
pub rigid_body: RigidBody,
|
||
|
pub rigid_body_handle: Option<RigidBodyHandle>,
|
||
|
}
|
||
|
|
||
|
#[derive(Clone)]
|
||
|
pub struct Collider {
|
||
|
pub collider: r3dCollider,
|
||
|
pub collider_handle: Option<ColliderHandle>,
|
||
|
}
|