libfj 0.10.0

An unofficial collection of APIs used in FreeJam games and mods
Documentation
use crate::techblox::{Parsable};
use libfj_parsable_macro_derive::*;
use half::f16;

/// Unity-like floating-point vector for 3-dimensional space.
#[derive(Clone, Copy, Parsable)]
pub struct UnityFloat3 {
    /// x coordinate
    pub x: f32,
    /// y coordinate
    pub y: f32,
    /// z coordinate
    pub z: f32,
}

/// Unity-like half-precision vector for 3-dimensional space.
#[derive(Clone, Copy, Parsable)]
pub struct UnityHalf3 {
    /// x coordinate
    pub x: f16,
    /// y coordinate
    pub y: f16,
    /// z coordinate
    pub z: f16,
}

/// Unity-like floating-point vector for 4-dimensional space.
#[derive(Clone, Copy, Parsable)]
pub struct UnityFloat4 {
    /// x coordinate
    pub x: f32,
    /// y coordinate
    pub y: f32,
    /// z coordinate
    pub z: f32,
    /// w coordinate
    pub w: f32,
}

/// Unity-like floating-point vector matrix for 4-dimensional space.
#[derive(Clone, Copy, Parsable)]
pub struct UnityFloat4x4 {
    /// c0 row(?)
    pub c0: UnityFloat4,
    /// c1 row(?)
    pub c1: UnityFloat4,
    /// c2 row(?)
    pub c2: UnityFloat4,
    /// c3 row(?)
    pub c3: UnityFloat4,
}

/// Unity-like floating-point quaternion for rotation in 3-dimensional space.
#[derive(Clone, Copy, Parsable)]
pub struct UnityQuaternion {
    /// Rotational orientation
    pub value: UnityFloat4,
}