Feature/rust bindings: Exterimental bindings (#6467)
* Add files for assimp rust wrapper * Fix bindgen usage. * Add missing includes for the rust bindings. * Apply suggestion from @coderabbitai[bot] Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update build.rs * Fix formatting in Cargo.toml * Remove generated file --------- Co-authored-by: Kim Kulling <kullingk@LDED5178.corp.draeger.global> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
This commit is contained in:
6
port/assimp_rs/Cargo.lock
generated
6
port/assimp_rs/Cargo.lock
generated
@@ -1,6 +0,0 @@
|
|||||||
# This file is automatically @generated by Cargo.
|
|
||||||
# It is not intended for manual editing.
|
|
||||||
[[package]]
|
|
||||||
name = "assimp_rs"
|
|
||||||
version = "0.1.0"
|
|
||||||
|
|
||||||
@@ -6,4 +6,5 @@ edition = "2018"
|
|||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[dependencies]
|
[build-dependencies]
|
||||||
|
bindgen = "*"
|
||||||
|
|||||||
40
port/assimp_rs/build.rs
Normal file
40
port/assimp_rs/build.rs
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
extern crate bindgen;
|
||||||
|
use std::env;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
// Rerun if wrapper header changes
|
||||||
|
println!("cargo:rerun-if-changed=./src/assimp_wrapper.h");
|
||||||
|
|
||||||
|
// Tell cargo to look for shared libraries in the specified directory
|
||||||
|
println!("cargo:rustc-link-search=../../bin/");
|
||||||
|
|
||||||
|
// Tell cargo to tell rustc to link the assimp shared library.
|
||||||
|
println!("cargo:rustc-link-lib=assimp");
|
||||||
|
|
||||||
|
// The bindgen::Builder is the main entry point
|
||||||
|
// to bindgen, and lets you build up options for
|
||||||
|
// the resulting bindings.
|
||||||
|
let bindings = bindgen::Builder::default()
|
||||||
|
// The input header we would like to generate
|
||||||
|
// bindings for.
|
||||||
|
.header("./src/assimp_wrapper.h").clang_arg("-I../../include/")
|
||||||
|
// Tell cargo to invalidate the built crate whenever any of the
|
||||||
|
// included header files changed.
|
||||||
|
.parse_callbacks(Box::new(bindgen::CargoCallbacks::new()))
|
||||||
|
.blocklist_item("FP_ZERO")
|
||||||
|
.blocklist_item("FP_SUBNORMAL")
|
||||||
|
.blocklist_item("FP_NORMAL")
|
||||||
|
.blocklist_item("FP_INFINITE")
|
||||||
|
.blocklist_item("FP_NAN")
|
||||||
|
// Finish the builder and generate the bindings.
|
||||||
|
.generate()
|
||||||
|
// Unwrap the Result and panic on failure.
|
||||||
|
.expect("Unable to generate bindings");
|
||||||
|
|
||||||
|
// Write the bindings to the $OUT_DIR/bindings.rs file.
|
||||||
|
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
|
||||||
|
bindings
|
||||||
|
.write_to_file(out_path.join("bindings.rs"))
|
||||||
|
.expect("Couldn't write bindings!");
|
||||||
|
}
|
||||||
48
port/assimp_rs/src/assimp_wrapper.h
Normal file
48
port/assimp_rs/src/assimp_wrapper.h
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
#ifndef ASSIMP_WRAPPER_H_INC
|
||||||
|
#define ASSIMP_WRAPPER_H_INC
|
||||||
|
|
||||||
|
#include <assimp/defs.h>
|
||||||
|
#include <assimp/camera.h>
|
||||||
|
#include <assimp/scene.h>
|
||||||
|
#include <assimp/types.h>
|
||||||
|
#include <assimp/vector3.h>
|
||||||
|
#include <assimp/matrix4x4.h>
|
||||||
|
#include <assimp/quaternion.h>
|
||||||
|
#include <assimp/color4.h>
|
||||||
|
#include <assimp/mesh.h>
|
||||||
|
#include <assimp/anim.h>
|
||||||
|
#include <assimp/metadata.h>
|
||||||
|
#include <assimp/light.h>
|
||||||
|
#include <assimp/material.h>
|
||||||
|
#include <assimp/texture.h>
|
||||||
|
#include <assimp/postprocess.h>
|
||||||
|
#include <assimp/version.h>
|
||||||
|
#include <assimp/importerdesc.h>
|
||||||
|
#include <assimp/aabb.h>
|
||||||
|
#include <assimp/anim.h>
|
||||||
|
#include <assimp/camera.h>
|
||||||
|
#include <assimp/cexport.h>
|
||||||
|
#include <assimp/cfileio.h>
|
||||||
|
#include <assimp/cimport.h>
|
||||||
|
#include <assimp/color4.h>
|
||||||
|
#include <assimp/commonMetaData.h>
|
||||||
|
#include <assimp/defs.h>
|
||||||
|
#include <assimp/importerdesc.h>
|
||||||
|
#include <assimp/light.h>
|
||||||
|
#include <assimp/material.h>
|
||||||
|
#include <assimp/matrix3x3.h>
|
||||||
|
#include <assimp/matrix4x4.h>
|
||||||
|
#include <assimp/mesh.h>
|
||||||
|
#include <assimp/metadata.h>
|
||||||
|
#include <assimp/pbrmaterial.h>
|
||||||
|
#include <assimp/postprocess.h>
|
||||||
|
#include <assimp/quaternion.h>
|
||||||
|
#include <assimp/revision.h>
|
||||||
|
#include <assimp/scene.h>
|
||||||
|
#include <assimp/texture.h>
|
||||||
|
#include <assimp/types.h>
|
||||||
|
#include <assimp/vector2.h>
|
||||||
|
#include <assimp/vector3.h>
|
||||||
|
#include <assimp/version.h>
|
||||||
|
|
||||||
|
#endif // ASSIMP_WRAPPER_H_INC
|
||||||
@@ -1 +0,0 @@
|
|||||||
pub use self::structs::{Camera};
|
|
||||||
@@ -1,17 +1,21 @@
|
|||||||
pub mod camera;
|
|
||||||
pub mod core;
|
#![allow(non_upper_case_globals)]
|
||||||
pub mod errors;
|
#![allow(non_camel_case_types)]
|
||||||
pub mod formats;
|
#![allow(non_snake_case)]
|
||||||
pub mod material;
|
|
||||||
pub mod postprocess;
|
include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
|
||||||
pub mod shims;
|
|
||||||
pub mod socket;
|
|
||||||
pub mod structs;
|
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn it_works() {
|
fn import_test() {
|
||||||
assert_eq!(true, true);
|
unsafe {
|
||||||
|
use crate::aiImportFile;
|
||||||
|
let mut file: *mut dyn const i8 = std::ptr::null_mut();
|
||||||
|
//let file = String::from("test.obj");
|
||||||
|
//let (ptr, len, cap) = file.into_raw_parts();
|
||||||
|
//let raw_file = unsafe{String::from_raw_parts}
|
||||||
|
let asset = aiImportFile(file, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
pub struct Animation<'mA, 'mMA, 'nA> {
|
|
||||||
/* The name of the animation. If the modeling package this data was
|
|
||||||
* exported from does support only a single animation channel, this
|
|
||||||
* name is usually empty (length is zero).
|
|
||||||
*/
|
|
||||||
m_name: Option<String>,
|
|
||||||
// Duration of the animation in ticks
|
|
||||||
m_duration: f64,
|
|
||||||
// Ticks per second. Zero (0.000... ticks/second) if not
|
|
||||||
// specified in the imported file
|
|
||||||
m_ticks_per_second: Option<f64>,
|
|
||||||
/* Number of bone animation channels.
|
|
||||||
Each channel affects a single node.
|
|
||||||
*/
|
|
||||||
m_num_channels: u64,
|
|
||||||
/* Node animation channels. Each channel
|
|
||||||
affects a single node.
|
|
||||||
?? -> The array is m_num_channels in size.
|
|
||||||
(maybe refine to a derivative type of usize?)
|
|
||||||
*/
|
|
||||||
m_channels: &'nA NodeAnim,
|
|
||||||
/* Number of mesh animation channels. Each
|
|
||||||
channel affects a single mesh and defines
|
|
||||||
vertex-based animation.
|
|
||||||
*/
|
|
||||||
m_num_mesh_channels: u64,
|
|
||||||
/* The mesh animation channels. Each channel
|
|
||||||
affects a single mesh.
|
|
||||||
The array is m_num_mesh_channels in size
|
|
||||||
(maybe refine to a derivative of usize?)
|
|
||||||
*/
|
|
||||||
m_mesh_channels: &'mA MeshAnim,
|
|
||||||
/* The number of mesh animation channels. Each channel
|
|
||||||
affects a single mesh and defines some morphing animation.
|
|
||||||
*/
|
|
||||||
m_num_morph_mesh_channels: u64,
|
|
||||||
/* The morph mesh animation channels. Each channel affects a single mesh.
|
|
||||||
The array is mNumMorphMeshChannels in size.
|
|
||||||
*/
|
|
||||||
m_morph_mesh_channels: &'mMA MeshMorphAnim
|
|
||||||
}
|
|
||||||
pub struct NodeAnim {}
|
|
||||||
pub struct MeshAnim {}
|
|
||||||
pub struct MeshMorphAnim {}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
mod anim;
|
|
||||||
pub use self::anim::{
|
|
||||||
Animation,
|
|
||||||
NodeAnim,
|
|
||||||
MeshAnim,
|
|
||||||
MeshMorphAnim};
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
mod blob;
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
mod bone;
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
mod camera;
|
|
||||||
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
#[derive(Clone, Debug, Copy)]
|
|
||||||
struct Color3D {
|
|
||||||
r: f32,
|
|
||||||
g: f32,
|
|
||||||
b: f32
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Color3D {
|
|
||||||
pub fn new(r_f32: f32, g_f32: f32, b_f32: f32) -> Color3D {
|
|
||||||
Color3D {r: r_f32, g: g_f32, b: b_f32 }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, Copy)]
|
|
||||||
struct Color4D {
|
|
||||||
r: f32,
|
|
||||||
g: f32,
|
|
||||||
b: f32,
|
|
||||||
a: f32
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Color4D {
|
|
||||||
pub fn new(r_f32: f32, g_f32: f32, b_f32: f32, a_f32: f32) -> Color4D {
|
|
||||||
Color4D {r: r_f32, g: g_f32, b: b_f32, a: a_f32 }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
mod color;
|
|
||||||
pub use self::color::{
|
|
||||||
Color3D,
|
|
||||||
Color4D
|
|
||||||
};
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
mod face;
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
mod key;
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
mod light;
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
mod material;
|
|
||||||
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
#[derive(Clone, Debug, Copy)]
|
|
||||||
struct Matrix3x3 {
|
|
||||||
a1: f32,
|
|
||||||
a2: f32,
|
|
||||||
a3: f32,
|
|
||||||
b1: f32,
|
|
||||||
b2: f32,
|
|
||||||
b3: f32,
|
|
||||||
c1: f32,
|
|
||||||
c2: f32,
|
|
||||||
c3: f32
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, Copy)]
|
|
||||||
struct Matrix4x4 {
|
|
||||||
a1: f32,
|
|
||||||
a2: f32,
|
|
||||||
a3: f32,
|
|
||||||
a4: f32,
|
|
||||||
b1: f32,
|
|
||||||
b2: f32,
|
|
||||||
b3: f32,
|
|
||||||
b4: f32,
|
|
||||||
c1: f32,
|
|
||||||
c2: f32,
|
|
||||||
c3: f32,
|
|
||||||
c4: f32,
|
|
||||||
d1: f32,
|
|
||||||
d2: f32,
|
|
||||||
d3: f32,
|
|
||||||
d4: f32
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Matrix3x3 {
|
|
||||||
pub fn new(
|
|
||||||
a1_f32: f32, a2_f32: f32, a3_f32: f32,
|
|
||||||
b1_f32: f32, b2_f32: f32, b3_f32: f32,
|
|
||||||
c1_f32: f32, c2_f32: f32, c3_f32: f32
|
|
||||||
) -> Matrix3x3 {
|
|
||||||
Matrix3x3 {
|
|
||||||
a1: a1_f32, a2: a2_f32, a3: a3_f32,
|
|
||||||
b1: b1_f32, b2: b2_f32, b3: b3_f32,
|
|
||||||
c1: c1_f32, c2: c2_f32, c3: c3_f32
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Matrix4x4 {
|
|
||||||
pub fn new(
|
|
||||||
a1_f32: f32, a2_f32: f32, a3_f32: f32, a4_f32: f32,
|
|
||||||
b1_f32: f32, b2_f32: f32, b3_f32: f32, b4_f32: f32,
|
|
||||||
c1_f32: f32, c2_f32: f32, c3_f32: f32, c4_f32: f32,
|
|
||||||
d1_f32: f32, d2_f32: f32, d3_f32: f32, d4_f32: f32
|
|
||||||
) -> Matrix4x4 {
|
|
||||||
Matrix4x4 {
|
|
||||||
a1: a1_f32, a2: a2_f32, a3: a3_f32, a4: a4_f32,
|
|
||||||
b1: b1_f32, b2: b2_f32, b3: b3_f32, b4: b4_f32,
|
|
||||||
c1: c1_f32, c2: c2_f32, c3: c3_f32, c4: c4_f32,
|
|
||||||
d1: d1_f32, d2: d2_f32, d3: d3_f32, d4: d4_f32
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
mod matrix;
|
|
||||||
pub use self::matrix::{
|
|
||||||
Matrix3x3,
|
|
||||||
Matrix4x4};
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
#[derive(Clone, Debug, Copy)]
|
|
||||||
struct MemoryInfo {
|
|
||||||
textures: u32,
|
|
||||||
materials: u32,
|
|
||||||
meshes: u32,
|
|
||||||
nodes: u32,
|
|
||||||
animations: u32,
|
|
||||||
cameras: u32,
|
|
||||||
lights: u32,
|
|
||||||
total: u32
|
|
||||||
}
|
|
||||||
|
|
||||||
impl MemoryInfo {
|
|
||||||
pub fn new(
|
|
||||||
textures_uint: u32,
|
|
||||||
materials_uint: u32,
|
|
||||||
meshes_uint: u32,
|
|
||||||
nodes_uint: u32,
|
|
||||||
animations_uint: u32,
|
|
||||||
cameras_uint: u32,
|
|
||||||
lights_uint: u32,
|
|
||||||
total_uint: u32) -> MemoryInfo {
|
|
||||||
|
|
||||||
MemoryInfo {
|
|
||||||
textures: textures_uint,
|
|
||||||
materials: materials_uint,
|
|
||||||
meshes: meshes_uint,
|
|
||||||
nodes: nodes_uint,
|
|
||||||
animations: animations_uint,
|
|
||||||
cameras: cameras_uint,
|
|
||||||
lights: lights_uint,
|
|
||||||
total: total_uint
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
mod memory;
|
|
||||||
pub use self::memory::MemoryInfo;
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
mod mesh;
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
mod meta;
|
|
||||||
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
mod anim;
|
|
||||||
/* Animation
|
|
||||||
* NodeAnim
|
|
||||||
* MeshAnim
|
|
||||||
* MeshMorphAnim
|
|
||||||
*/
|
|
||||||
mod blob;
|
|
||||||
/* ExportDataBlob
|
|
||||||
*/
|
|
||||||
mod vec;
|
|
||||||
/* Vector2d
|
|
||||||
* Vector3d
|
|
||||||
* */
|
|
||||||
mod matrix;
|
|
||||||
/* Matrix3by3
|
|
||||||
* Matrix4by4
|
|
||||||
*/
|
|
||||||
mod camera;
|
|
||||||
/* Camera */
|
|
||||||
mod color;
|
|
||||||
/* Color3d
|
|
||||||
* Color4d
|
|
||||||
*/
|
|
||||||
mod key;
|
|
||||||
/* MeshKey
|
|
||||||
* MeshMorphKey
|
|
||||||
* QuatKey
|
|
||||||
* VectorKey
|
|
||||||
*/
|
|
||||||
mod texel;
|
|
||||||
mod plane;
|
|
||||||
mod string;
|
|
||||||
/* String
|
|
||||||
*/
|
|
||||||
mod material;
|
|
||||||
/* Material
|
|
||||||
* MaterialPropery
|
|
||||||
* MaterialPropertyString
|
|
||||||
*/
|
|
||||||
mod mem;
|
|
||||||
mod quaternion;
|
|
||||||
mod face;
|
|
||||||
mod vertex_weight;
|
|
||||||
mod mesh;
|
|
||||||
/* Mesh
|
|
||||||
*/
|
|
||||||
mod meta;
|
|
||||||
/* Metadata
|
|
||||||
* MetadataEntry
|
|
||||||
*/
|
|
||||||
mod node;
|
|
||||||
/* Node
|
|
||||||
* */
|
|
||||||
mod light;
|
|
||||||
mod texture;
|
|
||||||
mod ray;
|
|
||||||
mod transform;
|
|
||||||
/* UVTransform */
|
|
||||||
mod bone;
|
|
||||||
mod scene;
|
|
||||||
/* Scene */
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
mod node;
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
mod plane;
|
|
||||||
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
#[derive(Clone, Debug, Copy)]
|
|
||||||
struct Plane {
|
|
||||||
a: f32,
|
|
||||||
b: f32,
|
|
||||||
c: f32,
|
|
||||||
d: f32
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Plane {
|
|
||||||
pub fn new(
|
|
||||||
a_f32: f32,
|
|
||||||
b_f32: f32,
|
|
||||||
c_f32: f32,
|
|
||||||
d_f32: f32
|
|
||||||
) -> Plane {
|
|
||||||
Plane {
|
|
||||||
a: a_f32,
|
|
||||||
b: b_f32,
|
|
||||||
c: b_f32,
|
|
||||||
d: d_f32
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
mod quaternion;
|
|
||||||
|
|
||||||
pub use self::quaternion::Quaternion;
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
use crate::vec;
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, Copy)]
|
|
||||||
pub struct Quaternion {
|
|
||||||
_coordinates: vec::Vector4d
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
mod ray;
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
mod scene;
|
|
||||||
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
mod string;
|
|
||||||
pub use self::string::MAXLEN;
|
|
||||||
pub use self::string::Str;
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
pub const MAXLEN: usize = 1024;
|
|
||||||
|
|
||||||
/// Want to consider replacing `Vec<char>`
|
|
||||||
/// with a comparable definition at
|
|
||||||
/// https://doc.rust-lang.org/src/alloc/string.rs.html#415-417
|
|
||||||
#[derive(Clone, Debug)]
|
|
||||||
struct Str {
|
|
||||||
length: usize,
|
|
||||||
data: Vec<char>
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Str {
|
|
||||||
pub fn new(len_u32: usize, data_string: String) -> Str {
|
|
||||||
Str {
|
|
||||||
length: len_u32,
|
|
||||||
data: data_string.chars().collect()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// MaterialPropertyStr
|
|
||||||
/// The size of length is truncated to 4 bytes on a 64-bit platform when used as a
|
|
||||||
/// material property (see MaterialSystem.cpp, as aiMaterial::AddProperty() ).
|
|
||||||
#[derive(Clone, Debug)]
|
|
||||||
struct MaterialPropertyStr {
|
|
||||||
length: usize,
|
|
||||||
data: Vec<char>
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
impl MaterialPropertyStr {
|
|
||||||
pub fn new(len_u32: usize, data_string: String) -> MaterialPropertyStr {
|
|
||||||
MaterialPropertyStr {
|
|
||||||
length: len_u32,
|
|
||||||
data: data_string.chars().collect()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
mod texture;
|
|
||||||
pub use self::texture::Texel;
|
|
||||||
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
#[derive(Clone, Debug, Copy)]
|
|
||||||
struct Texel {
|
|
||||||
b: u32,
|
|
||||||
g: u32,
|
|
||||||
r: u32,
|
|
||||||
a: u32
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Texel {
|
|
||||||
pub fn new(b_u32: u32, g_u32: u32,
|
|
||||||
r_u32: u32, a_u32: u32) -> Texel {
|
|
||||||
Texel {
|
|
||||||
b: b_u32,
|
|
||||||
g: g_u32,
|
|
||||||
r: r_u32,
|
|
||||||
a: a_u32
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
mod transform;
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
mod vec;
|
|
||||||
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
struct Vector2d {
|
|
||||||
x: f32,
|
|
||||||
y: f32
|
|
||||||
}
|
|
||||||
|
|
||||||
struct Vector3d {
|
|
||||||
x: f32,
|
|
||||||
y: f32,
|
|
||||||
z: f32
|
|
||||||
}
|
|
||||||
|
|
||||||
struct Vector4d {
|
|
||||||
x: f32,
|
|
||||||
y: f32,
|
|
||||||
z: f32,
|
|
||||||
w: f32
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Vector2d {
|
|
||||||
pub fn new(x_f32: f32, y_f32: f32) -> Vector2d {
|
|
||||||
Vector2d {
|
|
||||||
x: x_f32,
|
|
||||||
y: y_f32
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Vector3d {
|
|
||||||
pub fn new(x_f32: f32, y_f32: f32, z_f32: f32) -> Vector3d {
|
|
||||||
Vector3d {
|
|
||||||
x: x_f32,
|
|
||||||
y: y_f32,
|
|
||||||
z: z_f32
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Vector4d {
|
|
||||||
pub fn new(x_f32: f32, y_f32: f32, z_f32: f32, w_f32: f32) -> Vector4d {
|
|
||||||
Vector4d {
|
|
||||||
x: x_f32,
|
|
||||||
y: y_f32,
|
|
||||||
z: z_f32,
|
|
||||||
w: w_f32
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
mod vertex;
|
|
||||||
// pub use self::vertex::
|
|
||||||
Reference in New Issue
Block a user