1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
use crate::dc::vector::{matrix_t, vector_t};
use crate::prelude::*;

extern "C" {
    pub fn mat_store(out: *mut matrix_t);
    pub fn mat_load(out: *mut matrix_t);
    pub fn mat_identity();
    pub fn mat_apply(src: *mut matrix_t);
    pub fn mat_transform(invecs: *mut vector_t, outvecs: *mut vector_t,
                         veccnt: c_int, vecskip: c_int);
    pub fn mat_transform_sq(input: *mut c_void, output: *mut c_void, veccnt: c_int);
    #[link_name = "mat_trans_single_stub"]
    pub fn mat_trans_single(x: c_float, y: c_float, z: c_float);
    #[link_name = "mat_trans_single4_stub"]
    pub fn mat_trans_single4(x: c_float, y: c_float, z: c_float, w: c_float);
    #[link_name = "mat_trans_single3_stub"]
    pub fn mat_trans_single3(x: c_float, y: c_float, z: c_float);
    #[link_name = "mat_trans_nodiv_stub"]
    pub fn mat_trans_nodiv(x: c_float, y: c_float, z: c_float, w: c_float);
    #[link_name = "mat_trans_single3_nodiv_stub"]
    pub fn mat_trans_single3_nodiv(x: c_float, y: c_float, z: c_float);
    #[link_name = "mat_trans_single3_nomod_stub"]
    pub fn mat_trans_single3_nomod(x: c_float, y: c_float, z: c_float,
                                   x2: c_float, y2: c_float, z2: c_float);
    #[link_name = "mat_trans_single3_nodiv_nomod_stub"]
    pub fn mat_trans_single3_nodiv_nomod(x: c_float, y: c_float, z: c_float,
                                         x2: c_float, y2: c_float, z2: c_float);
    #[link_name = "mat_trans_single3_nodivw_stub"]
    pub fn mat_trans_single3_nodivw(x: c_float, y: c_float, z: c_float, w: c_float);
    #[link_name = "mat_trans_single3_nodiv_div_stub"]
    pub fn mat_trans_single3_nodiv_div(x: c_float, y: c_float, z: c_float,
                                       xd: c_float, yd: c_float, zd: c_float);
    #[link_name = "mat_trans_normal3_stub"]
    pub fn mat_trans_normal3(x: c_float, y: c_float, z: c_float);
    #[link_name = "mat_trans_normal3_nomod_stub"]
    pub fn mat_trans_normal3_nomod(x: c_float, y: c_float, z: c_float,
                                   x2: c_float, y2: c_float, z2: c_float);
}