use crate::core::{get_length_units_per_meter, SECRET_COOKIE};
use crate::dynamic_tree::{DEFAULT_CATEGORY_BITS, DEFAULT_MASK_BITS};
use crate::geometry::{default_surface_material, SurfaceMaterial};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Filter {
pub category_bits: u64,
pub mask_bits: u64,
pub group_index: i32,
}
pub fn default_filter() -> Filter {
Filter {
category_bits: DEFAULT_CATEGORY_BITS,
mask_bits: DEFAULT_MASK_BITS,
group_index: 0,
}
}
impl Default for Filter {
fn default() -> Self {
default_filter()
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct QueryFilter {
pub category_bits: u64,
pub mask_bits: u64,
pub id: u64,
pub name: String,
}
pub fn default_query_filter() -> QueryFilter {
QueryFilter {
category_bits: DEFAULT_CATEGORY_BITS,
mask_bits: DEFAULT_MASK_BITS,
id: 0,
name: String::new(),
}
}
impl Default for QueryFilter {
fn default() -> Self {
default_query_filter()
}
}
#[derive(Debug, Clone)]
pub struct ShapeDef {
pub name: String,
pub user_data: u64,
pub materials: Vec<SurfaceMaterial>,
pub base_material: SurfaceMaterial,
pub density: f32,
pub explosion_scale: f32,
pub filter: Filter,
pub enable_custom_filtering: bool,
pub is_sensor: bool,
pub enable_sensor_events: bool,
pub enable_contact_events: bool,
pub enable_hit_events: bool,
pub enable_pre_solve_events: bool,
pub invoke_contact_creation: bool,
pub update_body_mass: bool,
pub internal_value: i32,
}
pub fn default_shape_def() -> ShapeDef {
let length_units = get_length_units_per_meter();
ShapeDef {
name: String::new(),
user_data: 0,
materials: Vec::new(),
base_material: default_surface_material(),
density: 1000.0 / (length_units * length_units * length_units),
explosion_scale: 1.0,
filter: default_filter(),
enable_custom_filtering: false,
is_sensor: false,
enable_sensor_events: false,
enable_contact_events: false,
enable_hit_events: false,
enable_pre_solve_events: false,
invoke_contact_creation: true,
update_body_mass: true,
internal_value: SECRET_COOKIE,
}
}
impl Default for ShapeDef {
fn default() -> Self {
default_shape_def()
}
}