perigee 0.7.0

A headless realtime 3D engine built with a focus on the web.
Documentation
use rapier3d::na::Vector3;
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug, Clone, Copy)]
pub enum GltfBodyType {
    #[serde(rename = "SENSOR")]
    Sensor,
    #[serde(rename = "STATIC")]
    Static,
    #[serde(rename = "KINEMATIC")]
    Kinematic,
    #[serde(rename = "DYNAMIC")]
    Dynamic,
}

#[derive(Serialize, Deserialize, Debug, Clone, Copy)]
pub enum GltfOptimizedShape {
    #[serde(rename = "NONE")]
    None,
    #[serde(rename = "CONVEX_MESH")]
    ConvexMesh,
    #[serde(rename = "CUBOID")]
    Cuboid,
    #[serde(rename = "SPHERE")]
    Sphere,
}

#[derive(Serialize, Deserialize, Debug, Clone, Copy)]
pub struct GltfPhysicsSettings {
    pub enabled: bool,
    #[serde(rename = "isAnonymous")]
    pub is_anonymous: bool,
    #[serde(rename = "bodyType")]
    pub body_type: GltfBodyType,
    pub mass: f32,
    #[serde(rename = "optimizedShape")]
    pub optimized_shape: GltfOptimizedShape,
    #[serde(rename = "baseScale")]
    #[serde(default)]
    pub base_scale: Vector3<f32>,
}

#[derive(Serialize, Deserialize, Debug, Clone, Copy)]
pub struct GltfSimSettings {
    pub physics: GltfPhysicsSettings,
    #[serde(rename = "isPointOfInterest")]
    pub is_point_of_interest: bool,
}

#[derive(Serialize, Deserialize, Debug, Clone, Copy)]
pub struct GltfExtras {
    #[serde(rename = "simSettings")]
    pub sim_settings: GltfSimSettings,
}