Implement quaternion and matrix geometry

This commit is contained in:
2026-08-08 22:54:07 +00:00
parent 3068e5ee9e
commit 66997128e7
15 changed files with 1881 additions and 859 deletions

View File

@@ -14,3 +14,10 @@ workspace = true
getrandom = "0.4"
md-5 = "0.10"
uuid = { version = "1.18", features = ["v4"] }
[dev-dependencies]
stats_alloc = "0.1.10"
[[bench]]
name = "geometry"
harness = false

View File

@@ -0,0 +1,65 @@
use std::alloc::System;
use std::hint::black_box;
use std::time::Instant;
use libremetaverse_types::{Matrix4, Quaternion, Vector3};
use stats_alloc::{INSTRUMENTED_SYSTEM, Region, StatsAlloc};
#[global_allocator]
static ALLOCATOR: &StatsAlloc<System> = &INSTRUMENTED_SYSTEM;
fn main() {
const ITERATIONS: usize = 250_000;
let rotation = Quaternion::create_from_eulers_with_single_single_single(0.25, 0.5, 0.75)
.expect("valid benchmark rotation");
let matrix = Matrix4::mul_with_matrix4_matrix4(
Matrix4::create_scale(Vector3 {
x: 2.0,
y: 3.0,
z: 4.0,
})
.expect("valid benchmark scale"),
Matrix4::create_translation(Vector3 {
x: 10.0,
y: 20.0,
z: 30.0,
})
.expect("valid benchmark translation"),
);
// Warm up runtime and formatting paths before entering the measured region.
black_box(Matrix4::transform(matrix, rotation).expect("matrix transform"));
black_box(
Quaternion::slerp(Quaternion::identity(), rotation, 0.5).expect("quaternion interpolation"),
);
let allocation_region = Region::new(ALLOCATOR);
let started = Instant::now();
let mut transformed = matrix;
let mut interpolated = Quaternion::identity();
for index in 0..ITERATIONS {
let amount = f32::from(u8::try_from(index & 255).expect("masked benchmark index")) / 255.0;
transformed = Matrix4::transform(black_box(transformed), black_box(rotation))
.expect("matrix transform");
interpolated = Quaternion::slerp(
black_box(interpolated),
black_box(rotation),
black_box(amount),
)
.expect("quaternion interpolation");
}
let elapsed = started.elapsed();
let allocation_stats = allocation_region.change();
black_box((transformed, interpolated));
println!(
"geometry hot paths: {ITERATIONS} iterations in {elapsed:?}, {} allocations, {} reallocations",
allocation_stats.allocations, allocation_stats.reallocations
);
assert_eq!(
(allocation_stats.allocations, allocation_stats.reallocations),
(0, 0),
"matrix transforms and quaternion interpolation must remain allocation-free"
);
}

View File

@@ -23,6 +23,8 @@ impl<T: std::io::Read + std::io::Write> ReadWrite for T {}
#[derive(Clone, Debug)]
pub enum Object {
Color4(crate::Color4),
Matrix4(crate::Matrix4),
Quaternion(crate::Quaternion),
String(String),
UUID(crate::UUID),
Vector2(crate::Vector2),
@@ -35,6 +37,8 @@ impl PartialEq for Object {
fn eq(&self, other: &Self) -> bool {
match (self, other) {
(Self::Color4(lhs), Self::Color4(rhs)) => crate::Color4::eq(*lhs, *rhs),
(Self::Matrix4(lhs), Self::Matrix4(rhs)) => crate::Matrix4::eq(*lhs, *rhs),
(Self::Quaternion(lhs), Self::Quaternion(rhs)) => crate::Quaternion::eq(*lhs, *rhs),
(Self::String(lhs), Self::String(rhs)) => lhs == rhs,
(Self::UUID(lhs), Self::UUID(rhs)) => lhs == rhs,
(Self::Vector2(lhs), Self::Vector2(rhs)) => crate::Vector2::eq(*lhs, *rhs),
@@ -53,6 +57,8 @@ impl std::hash::Hash for Object {
std::mem::discriminant(self).hash(state);
match self {
Self::Color4(value) => value.get_hash_code().hash(state),
Self::Matrix4(value) => value.get_hash_code().hash(state),
Self::Quaternion(value) => value.get_hash_code().hash(state),
Self::String(value) => value.hash(state),
Self::UUID(value) => value.hash(state),
Self::Vector2(value) => value.get_hash_code().hash(state),
@@ -80,6 +86,16 @@ impl From<crate::Color4> for Object {
Self::Color4(value)
}
}
impl From<crate::Matrix4> for Object {
fn from(value: crate::Matrix4) -> Self {
Self::Matrix4(value)
}
}
impl From<crate::Quaternion> for Object {
fn from(value: crate::Quaternion) -> Self {
Self::Quaternion(value)
}
}
impl From<crate::Vector2> for Object {
fn from(value: crate::Vector2) -> Self {
Self::Vector2(value)

View File

@@ -1026,452 +1026,77 @@ pub enum Material {
}
/// C# type: `T:LibreMetaverse.Matrix4`.
#[derive(Clone, Copy, Debug)]
pub struct Matrix4 {
/// C# member: `F:LibreMetaverse.Matrix4.M11`.
pub m11: f32,
/// C# member: `F:LibreMetaverse.Matrix4.M12`.
pub m12: f32,
/// C# member: `F:LibreMetaverse.Matrix4.M13`.
pub m13: f32,
/// C# member: `F:LibreMetaverse.Matrix4.M14`.
pub m14: f32,
/// C# member: `F:LibreMetaverse.Matrix4.M21`.
pub m21: f32,
/// C# member: `F:LibreMetaverse.Matrix4.M22`.
pub m22: f32,
/// C# member: `F:LibreMetaverse.Matrix4.M23`.
pub m23: f32,
/// C# member: `F:LibreMetaverse.Matrix4.M24`.
pub m24: f32,
/// C# member: `F:LibreMetaverse.Matrix4.M31`.
pub m31: f32,
/// C# member: `F:LibreMetaverse.Matrix4.M32`.
pub m32: f32,
/// C# member: `F:LibreMetaverse.Matrix4.M33`.
pub m33: f32,
/// C# member: `F:LibreMetaverse.Matrix4.M34`.
pub m34: f32,
/// C# member: `F:LibreMetaverse.Matrix4.M41`.
pub m41: f32,
/// C# member: `F:LibreMetaverse.Matrix4.M42`.
pub m42: f32,
/// C# member: `F:LibreMetaverse.Matrix4.M43`.
pub m43: f32,
/// C# member: `F:LibreMetaverse.Matrix4.M44`.
pub m44: f32,
}
impl Matrix4 {
/// C# member: `F:LibreMetaverse.Matrix4.Identity`.
pub fn identity() -> libremetaverse_types::Matrix4 {
libremetaverse_types::unimplemented_api!("F:LibreMetaverse.Matrix4.Identity")
}
/// C# member: `F:LibreMetaverse.Matrix4.Zero`.
pub fn zero() -> libremetaverse_types::Matrix4 {
libremetaverse_types::unimplemented_api!("F:LibreMetaverse.Matrix4.Zero")
}
/// C# member: `M:LibreMetaverse.Matrix4.#ctor(LibreMetaverse.Matrix4)`.
pub fn new_with_matrix4(m: libremetaverse_types::Matrix4) -> Result<Self, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.#ctor(LibreMetaverse.Matrix4)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.#ctor(System.Single,System.Single,System.Single)`.
pub fn new_with_single_single_single(
roll: f32,
pitch: f32,
yaw: f32,
) -> Result<Self, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.#ctor(System.Single,System.Single,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.#ctor(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)`.
pub fn new_with_single_single_single_single_single_single_single_single_single_single_single_single_single_single_single_single(
m11: f32,
m12: f32,
m13: f32,
m14: f32,
m21: f32,
m22: f32,
m23: f32,
m24: f32,
m31: f32,
m32: f32,
m33: f32,
m34: f32,
m41: f32,
m42: f32,
m43: f32,
m44: f32,
) -> Result<Self, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.#ctor(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.Add(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
pub fn add_with_matrix4_matrix4(
matrix1: libremetaverse_types::Matrix4,
matrix2: libremetaverse_types::Matrix4,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.Add(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.Adjoint(LibreMetaverse.Matrix4)`.
pub fn adjoint(
matrix: libremetaverse_types::Matrix4,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.Adjoint(LibreMetaverse.Matrix4)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.Adjoint3x3(LibreMetaverse.Matrix4)`.
pub fn adjoint3x3(
matrix: libremetaverse_types::Matrix4,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.Adjoint3x3(LibreMetaverse.Matrix4)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.CreateFromAxisAngle(LibreMetaverse.Vector3,System.Single)`.
pub fn create_from_axis_angle(
axis: libremetaverse_types::Vector3,
angle: f32,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.CreateFromAxisAngle(LibreMetaverse.Vector3,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.CreateFromEulers(System.Single,System.Single,System.Single)`.
pub fn create_from_eulers(
roll: f32,
pitch: f32,
yaw: f32,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.CreateFromEulers(System.Single,System.Single,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.CreateFromQuaternion(LibreMetaverse.Quaternion)`.
pub fn create_from_quaternion(
quaternion: libremetaverse_types::Quaternion,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.CreateFromQuaternion(LibreMetaverse.Quaternion)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.CreateLookAt(LibreMetaverse.Vector3,LibreMetaverse.Vector3,LibreMetaverse.Vector3)`.
pub fn create_look_at(
camera_position: libremetaverse_types::Vector3,
camera_target: libremetaverse_types::Vector3,
camera_up_vector: libremetaverse_types::Vector3,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.CreateLookAt(LibreMetaverse.Vector3,LibreMetaverse.Vector3,LibreMetaverse.Vector3)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.CreateRotationX(System.Single)`.
pub fn create_rotation_x(radians: f32) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.CreateRotationX(System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.CreateRotationY(System.Single)`.
pub fn create_rotation_y(radians: f32) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.CreateRotationY(System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.CreateRotationZ(System.Single)`.
pub fn create_rotation_z(radians: f32) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.CreateRotationZ(System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.CreateScale(LibreMetaverse.Vector3)`.
pub fn create_scale(
scale: libremetaverse_types::Vector3,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.CreateScale(LibreMetaverse.Vector3)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.CreateTranslation(LibreMetaverse.Vector3)`.
pub fn create_translation(
position: libremetaverse_types::Vector3,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.CreateTranslation(LibreMetaverse.Vector3)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.CreateWorld(LibreMetaverse.Vector3,LibreMetaverse.Vector3,LibreMetaverse.Vector3)`.
pub fn create_world(
position: libremetaverse_types::Vector3,
forward: libremetaverse_types::Vector3,
up: libremetaverse_types::Vector3,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.CreateWorld(LibreMetaverse.Vector3,LibreMetaverse.Vector3,LibreMetaverse.Vector3)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.Decompose(LibreMetaverse.Vector3@,LibreMetaverse.Quaternion@,LibreMetaverse.Vector3@)`.
pub fn decompose(
&mut self,
scale: &mut libremetaverse_types::Vector3,
rotation: &mut libremetaverse_types::Quaternion,
translation: &mut libremetaverse_types::Vector3,
) -> Result<bool, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.Decompose(LibreMetaverse.Vector3@,LibreMetaverse.Quaternion@,LibreMetaverse.Vector3@)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.Determinant`.
pub fn determinant(&mut self) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Matrix4.Determinant")
}
/// C# member: `M:LibreMetaverse.Matrix4.Determinant3x3`.
pub fn determinant3x3(&mut self) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Matrix4.Determinant3x3")
}
/// C# member: `M:LibreMetaverse.Matrix4.Divide(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
pub fn divide_with_matrix4_matrix4(
matrix1: libremetaverse_types::Matrix4,
matrix2: libremetaverse_types::Matrix4,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.Divide(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.Divide(LibreMetaverse.Matrix4,System.Single)`.
pub fn divide_with_matrix4_single(
matrix1: libremetaverse_types::Matrix4,
divider: f32,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.Divide(LibreMetaverse.Matrix4,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.Equals(LibreMetaverse.Matrix4)`.
pub fn equals_with_matrix4(&self, other: libremetaverse_types::Matrix4) -> bool {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Matrix4.Equals(LibreMetaverse.Matrix4)"
)
}
/// C# member: `M:LibreMetaverse.Matrix4.Equals(System.Object)`.
pub fn equals_with_object(&self, obj: Option<libremetaverse_types::compat::Object>) -> bool {
libremetaverse_types::unimplemented_api!("M:LibreMetaverse.Matrix4.Equals(System.Object)")
}
/// C# member: `M:LibreMetaverse.Matrix4.GetEulerAngles(System.Single@,System.Single@,System.Single@)`.
pub fn get_euler_angles(
&self,
roll: &mut f32,
pitch: &mut f32,
yaw: &mut f32,
) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.GetEulerAngles(System.Single@,System.Single@,System.Single@)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.GetHashCode`.
pub fn get_hash_code(&self) -> i32 {
libremetaverse_types::unimplemented_api!("M:LibreMetaverse.Matrix4.GetHashCode")
}
/// C# member: `M:LibreMetaverse.Matrix4.GetQuaternion`.
pub fn get_quaternion(&self) -> Result<libremetaverse_types::Quaternion, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Matrix4.GetQuaternion")
}
/// C# member: `M:LibreMetaverse.Matrix4.Inverse(LibreMetaverse.Matrix4)`.
pub fn inverse(
matrix: libremetaverse_types::Matrix4,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.Inverse(LibreMetaverse.Matrix4)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.Inverse3x3(LibreMetaverse.Matrix4)`.
pub fn inverse3x3(
matrix: libremetaverse_types::Matrix4,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.Inverse3x3(LibreMetaverse.Matrix4)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.Lerp(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4,System.Single)`.
pub fn lerp(
matrix1: libremetaverse_types::Matrix4,
matrix2: libremetaverse_types::Matrix4,
amount: f32,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.Lerp(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.Minor(LibreMetaverse.Matrix4,System.Int32,System.Int32)`.
pub fn minor(
matrix: libremetaverse_types::Matrix4,
row: i32,
col: i32,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.Minor(LibreMetaverse.Matrix4,System.Int32,System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.Multiply(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
pub fn multiply_with_matrix4_matrix4(
matrix1: libremetaverse_types::Matrix4,
matrix2: libremetaverse_types::Matrix4,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.Multiply(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.Multiply(LibreMetaverse.Matrix4,System.Single)`.
pub fn multiply_with_matrix4_single(
matrix1: libremetaverse_types::Matrix4,
scale_factor: f32,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.Multiply(LibreMetaverse.Matrix4,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.Negate(LibreMetaverse.Matrix4)`.
pub fn negate(
matrix: libremetaverse_types::Matrix4,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.Negate(LibreMetaverse.Matrix4)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.Subtract(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
pub fn subtract(
matrix1: libremetaverse_types::Matrix4,
matrix2: libremetaverse_types::Matrix4,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.Subtract(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.ToString`.
pub fn to_string(&self) -> String {
libremetaverse_types::unimplemented_api!("M:LibreMetaverse.Matrix4.ToString")
}
/// C# member: `M:LibreMetaverse.Matrix4.Trace`.
pub fn trace(&mut self) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Matrix4.Trace")
}
/// C# member: `M:LibreMetaverse.Matrix4.Transform(LibreMetaverse.Matrix4,LibreMetaverse.Quaternion)`.
pub fn transform(
value: libremetaverse_types::Matrix4,
rotation: libremetaverse_types::Quaternion,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.Transform(LibreMetaverse.Matrix4,LibreMetaverse.Quaternion)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.Transpose(LibreMetaverse.Matrix4)`.
pub fn transpose(
matrix: libremetaverse_types::Matrix4,
) -> Result<libremetaverse_types::Matrix4, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Matrix4.Transpose(LibreMetaverse.Matrix4)",
)
}
/// C# member: `M:LibreMetaverse.Matrix4.op_Addition(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
pub fn add_with_matrix4_matrix4_31d5e46d(
left: libremetaverse_types::Matrix4,
right: libremetaverse_types::Matrix4,
) -> libremetaverse_types::Matrix4 {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Matrix4.op_Addition(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)"
)
}
/// C# member: `M:LibreMetaverse.Matrix4.op_Division(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
pub fn div_with_matrix4_matrix4(
left: libremetaverse_types::Matrix4,
right: libremetaverse_types::Matrix4,
) -> libremetaverse_types::Matrix4 {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Matrix4.op_Division(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)"
)
}
/// C# member: `M:LibreMetaverse.Matrix4.op_Division(LibreMetaverse.Matrix4,System.Single)`.
pub fn div_with_matrix4_single(
matrix: libremetaverse_types::Matrix4,
divider: f32,
) -> libremetaverse_types::Matrix4 {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Matrix4.op_Division(LibreMetaverse.Matrix4,System.Single)"
)
}
/// C# member: `M:LibreMetaverse.Matrix4.op_Equality(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
pub fn eq(left: libremetaverse_types::Matrix4, right: libremetaverse_types::Matrix4) -> bool {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Matrix4.op_Equality(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)"
)
}
/// C# member: `M:LibreMetaverse.Matrix4.op_Inequality(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
pub fn ne(left: libremetaverse_types::Matrix4, right: libremetaverse_types::Matrix4) -> bool {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Matrix4.op_Inequality(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)"
)
}
/// C# member: `M:LibreMetaverse.Matrix4.op_Multiply(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
pub fn mul_with_matrix4_matrix4(
left: libremetaverse_types::Matrix4,
right: libremetaverse_types::Matrix4,
) -> libremetaverse_types::Matrix4 {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Matrix4.op_Multiply(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)"
)
}
/// C# member: `M:LibreMetaverse.Matrix4.op_Multiply(LibreMetaverse.Matrix4,System.Single)`.
pub fn mul_with_matrix4_single(
left: libremetaverse_types::Matrix4,
scalar: f32,
) -> libremetaverse_types::Matrix4 {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Matrix4.op_Multiply(LibreMetaverse.Matrix4,System.Single)"
)
}
/// C# member: `M:LibreMetaverse.Matrix4.op_Subtraction(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
pub fn sub(
left: libremetaverse_types::Matrix4,
right: libremetaverse_types::Matrix4,
) -> libremetaverse_types::Matrix4 {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Matrix4.op_Subtraction(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)"
)
}
/// C# member: `M:LibreMetaverse.Matrix4.op_UnaryNegation(LibreMetaverse.Matrix4)`.
pub fn neg(matrix: libremetaverse_types::Matrix4) -> libremetaverse_types::Matrix4 {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Matrix4.op_UnaryNegation(LibreMetaverse.Matrix4)"
)
}
/// C# member: `P:LibreMetaverse.Matrix4.AtAxis`.
pub fn at_axis(&self) -> libremetaverse_types::Vector3 {
libremetaverse_types::unimplemented_api!("P:LibreMetaverse.Matrix4.AtAxis")
}
/// C# member: `P:LibreMetaverse.Matrix4.Item(System.Int32)`.
pub fn item_with_int32(&self, row: i32) -> libremetaverse_types::Vector4 {
libremetaverse_types::unimplemented_api!("P:LibreMetaverse.Matrix4.Item(System.Int32)")
}
/// C# member: `P:LibreMetaverse.Matrix4.Item(System.Int32,System.Int32)`.
pub fn item_with_int32_int32(&self, row: i32, column: i32) -> f32 {
libremetaverse_types::unimplemented_api!(
"P:LibreMetaverse.Matrix4.Item(System.Int32,System.Int32)"
)
}
/// C# member: `P:LibreMetaverse.Matrix4.LeftAxis`.
pub fn left_axis(&self) -> libremetaverse_types::Vector3 {
libremetaverse_types::unimplemented_api!("P:LibreMetaverse.Matrix4.LeftAxis")
}
/// C# member: `P:LibreMetaverse.Matrix4.UpAxis`.
pub fn up_axis(&self) -> libremetaverse_types::Vector3 {
libremetaverse_types::unimplemented_api!("P:LibreMetaverse.Matrix4.UpAxis")
}
}
/// C# member: `F:LibreMetaverse.Matrix4.Identity`.
/// C# member: `F:LibreMetaverse.Matrix4.M11`.
/// C# member: `F:LibreMetaverse.Matrix4.M12`.
/// C# member: `F:LibreMetaverse.Matrix4.M13`.
/// C# member: `F:LibreMetaverse.Matrix4.M14`.
/// C# member: `F:LibreMetaverse.Matrix4.M21`.
/// C# member: `F:LibreMetaverse.Matrix4.M22`.
/// C# member: `F:LibreMetaverse.Matrix4.M23`.
/// C# member: `F:LibreMetaverse.Matrix4.M24`.
/// C# member: `F:LibreMetaverse.Matrix4.M31`.
/// C# member: `F:LibreMetaverse.Matrix4.M32`.
/// C# member: `F:LibreMetaverse.Matrix4.M33`.
/// C# member: `F:LibreMetaverse.Matrix4.M34`.
/// C# member: `F:LibreMetaverse.Matrix4.M41`.
/// C# member: `F:LibreMetaverse.Matrix4.M42`.
/// C# member: `F:LibreMetaverse.Matrix4.M43`.
/// C# member: `F:LibreMetaverse.Matrix4.M44`.
/// C# member: `F:LibreMetaverse.Matrix4.Zero`.
/// C# member: `M:LibreMetaverse.Matrix4.#ctor(LibreMetaverse.Matrix4)`.
/// C# member: `M:LibreMetaverse.Matrix4.#ctor(System.Single,System.Single,System.Single)`.
/// C# member: `M:LibreMetaverse.Matrix4.#ctor(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)`.
/// C# member: `M:LibreMetaverse.Matrix4.Add(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
/// C# member: `M:LibreMetaverse.Matrix4.Adjoint(LibreMetaverse.Matrix4)`.
/// C# member: `M:LibreMetaverse.Matrix4.Adjoint3x3(LibreMetaverse.Matrix4)`.
/// C# member: `M:LibreMetaverse.Matrix4.CreateFromAxisAngle(LibreMetaverse.Vector3,System.Single)`.
/// C# member: `M:LibreMetaverse.Matrix4.CreateFromEulers(System.Single,System.Single,System.Single)`.
/// C# member: `M:LibreMetaverse.Matrix4.CreateFromQuaternion(LibreMetaverse.Quaternion)`.
/// C# member: `M:LibreMetaverse.Matrix4.CreateLookAt(LibreMetaverse.Vector3,LibreMetaverse.Vector3,LibreMetaverse.Vector3)`.
/// C# member: `M:LibreMetaverse.Matrix4.CreateRotationX(System.Single)`.
/// C# member: `M:LibreMetaverse.Matrix4.CreateRotationY(System.Single)`.
/// C# member: `M:LibreMetaverse.Matrix4.CreateRotationZ(System.Single)`.
/// C# member: `M:LibreMetaverse.Matrix4.CreateScale(LibreMetaverse.Vector3)`.
/// C# member: `M:LibreMetaverse.Matrix4.CreateTranslation(LibreMetaverse.Vector3)`.
/// C# member: `M:LibreMetaverse.Matrix4.CreateWorld(LibreMetaverse.Vector3,LibreMetaverse.Vector3,LibreMetaverse.Vector3)`.
/// C# member: `M:LibreMetaverse.Matrix4.Decompose(LibreMetaverse.Vector3@,LibreMetaverse.Quaternion@,LibreMetaverse.Vector3@)`.
/// C# member: `M:LibreMetaverse.Matrix4.Determinant`.
/// C# member: `M:LibreMetaverse.Matrix4.Determinant3x3`.
/// C# member: `M:LibreMetaverse.Matrix4.Divide(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
/// C# member: `M:LibreMetaverse.Matrix4.Divide(LibreMetaverse.Matrix4,System.Single)`.
/// C# member: `M:LibreMetaverse.Matrix4.Equals(LibreMetaverse.Matrix4)`.
/// C# member: `M:LibreMetaverse.Matrix4.Equals(System.Object)`.
/// C# member: `M:LibreMetaverse.Matrix4.GetEulerAngles(System.Single@,System.Single@,System.Single@)`.
/// C# member: `M:LibreMetaverse.Matrix4.GetHashCode`.
/// C# member: `M:LibreMetaverse.Matrix4.GetQuaternion`.
/// C# member: `M:LibreMetaverse.Matrix4.Inverse(LibreMetaverse.Matrix4)`.
/// C# member: `M:LibreMetaverse.Matrix4.Inverse3x3(LibreMetaverse.Matrix4)`.
/// C# member: `M:LibreMetaverse.Matrix4.Lerp(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4,System.Single)`.
/// C# member: `M:LibreMetaverse.Matrix4.Minor(LibreMetaverse.Matrix4,System.Int32,System.Int32)`.
/// C# member: `M:LibreMetaverse.Matrix4.Multiply(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
/// C# member: `M:LibreMetaverse.Matrix4.Multiply(LibreMetaverse.Matrix4,System.Single)`.
/// C# member: `M:LibreMetaverse.Matrix4.Negate(LibreMetaverse.Matrix4)`.
/// C# member: `M:LibreMetaverse.Matrix4.Subtract(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
/// C# member: `M:LibreMetaverse.Matrix4.ToString`.
/// C# member: `M:LibreMetaverse.Matrix4.Trace`.
/// C# member: `M:LibreMetaverse.Matrix4.Transform(LibreMetaverse.Matrix4,LibreMetaverse.Quaternion)`.
/// C# member: `M:LibreMetaverse.Matrix4.Transpose(LibreMetaverse.Matrix4)`.
/// C# member: `M:LibreMetaverse.Matrix4.op_Addition(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
/// C# member: `M:LibreMetaverse.Matrix4.op_Division(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
/// C# member: `M:LibreMetaverse.Matrix4.op_Division(LibreMetaverse.Matrix4,System.Single)`.
/// C# member: `M:LibreMetaverse.Matrix4.op_Equality(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
/// C# member: `M:LibreMetaverse.Matrix4.op_Inequality(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
/// C# member: `M:LibreMetaverse.Matrix4.op_Multiply(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
/// C# member: `M:LibreMetaverse.Matrix4.op_Multiply(LibreMetaverse.Matrix4,System.Single)`.
/// C# member: `M:LibreMetaverse.Matrix4.op_Subtraction(LibreMetaverse.Matrix4,LibreMetaverse.Matrix4)`.
/// C# member: `M:LibreMetaverse.Matrix4.op_UnaryNegation(LibreMetaverse.Matrix4)`.
/// C# member: `P:LibreMetaverse.Matrix4.AtAxis`.
/// C# member: `P:LibreMetaverse.Matrix4.Item(System.Int32)`.
/// C# member: `P:LibreMetaverse.Matrix4.Item(System.Int32,System.Int32)`.
/// C# member: `P:LibreMetaverse.Matrix4.LeftAxis`.
/// C# member: `P:LibreMetaverse.Matrix4.UpAxis`.
pub use crate::geometry::Matrix4;
/// C# type: `T:LibreMetaverse.MruRemovalStrategy`1`.
pub struct MruRemovalStrategy<TKey> {
@@ -1974,361 +1599,56 @@ pub enum ProfileCurve {
}
/// C# type: `T:LibreMetaverse.Quaternion`.
#[derive(Clone, Copy, Debug)]
pub struct Quaternion {
/// C# member: `F:LibreMetaverse.Quaternion.W`.
pub w: f32,
/// C# member: `F:LibreMetaverse.Quaternion.X`.
pub x: f32,
/// C# member: `F:LibreMetaverse.Quaternion.Y`.
pub y: f32,
/// C# member: `F:LibreMetaverse.Quaternion.Z`.
pub z: f32,
}
impl Quaternion {
/// C# member: `F:LibreMetaverse.Quaternion.Identity`.
pub fn identity() -> libremetaverse_types::Quaternion {
libremetaverse_types::unimplemented_api!("F:LibreMetaverse.Quaternion.Identity")
}
/// C# member: `M:LibreMetaverse.Quaternion.#ctor(LibreMetaverse.Vector3,System.Single)`.
pub fn new_with_vector3_single(
vector_part: libremetaverse_types::Vector3,
scalar_part: f32,
) -> Result<Self, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.#ctor(LibreMetaverse.Vector3,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.#ctor(System.Byte[],System.Int32,System.Boolean)`.
pub fn new_with_bytes_int32_boolean(
byte_array: Vec<u8>,
pos: i32,
normalized: bool,
) -> Result<Self, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.#ctor(System.Byte[],System.Int32,System.Boolean)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.#ctor(System.Single,System.Single,System.Single)`.
pub fn new_with_single_single_single(x: f32, y: f32, z: f32) -> Result<Self, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.#ctor(System.Single,System.Single,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.#ctor(System.Single,System.Single,System.Single,System.Single)`.
pub fn new_with_single_single_single_single(
x: f32,
y: f32,
z: f32,
w: f32,
) -> Result<Self, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.#ctor(System.Single,System.Single,System.Single,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.Add(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
pub fn add_with_quaternion_quaternion(
q1: libremetaverse_types::Quaternion,
q2: libremetaverse_types::Quaternion,
) -> Result<libremetaverse_types::Quaternion, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.Add(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.ApproxEquals(LibreMetaverse.Quaternion,System.Single)`.
pub fn approx_equals(
&mut self,
quat: libremetaverse_types::Quaternion,
tolerance: f32,
) -> Result<bool, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.ApproxEquals(LibreMetaverse.Quaternion,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.Conjugate(LibreMetaverse.Quaternion)`.
pub fn conjugate(
quaternion: libremetaverse_types::Quaternion,
) -> Result<libremetaverse_types::Quaternion, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.Conjugate(LibreMetaverse.Quaternion)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.CreateFromAxisAngle(LibreMetaverse.Vector3,System.Single)`.
pub fn create_from_axis_angle_with_vector3_single(
axis: libremetaverse_types::Vector3,
angle: f32,
) -> Result<libremetaverse_types::Quaternion, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.CreateFromAxisAngle(LibreMetaverse.Vector3,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.CreateFromAxisAngle(System.Single,System.Single,System.Single,System.Single)`.
pub fn create_from_axis_angle_with_single_single_single_single(
axis_x: f32,
axis_y: f32,
axis_z: f32,
angle: f32,
) -> Result<libremetaverse_types::Quaternion, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.CreateFromAxisAngle(System.Single,System.Single,System.Single,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.CreateFromEulers(LibreMetaverse.Vector3)`.
pub fn create_from_eulers_with_vector3(
eulers: libremetaverse_types::Vector3,
) -> Result<libremetaverse_types::Quaternion, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.CreateFromEulers(LibreMetaverse.Vector3)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.CreateFromEulers(System.Single,System.Single,System.Single)`.
pub fn create_from_eulers_with_single_single_single(
roll: f32,
pitch: f32,
yaw: f32,
) -> Result<libremetaverse_types::Quaternion, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.CreateFromEulers(System.Single,System.Single,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.CreateFromRotationMatrix(LibreMetaverse.Matrix4)`.
pub fn create_from_rotation_matrix(
matrix: libremetaverse_types::Matrix4,
) -> Result<libremetaverse_types::Quaternion, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.CreateFromRotationMatrix(LibreMetaverse.Matrix4)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.Divide(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
pub fn divide(
q1: libremetaverse_types::Quaternion,
q2: libremetaverse_types::Quaternion,
) -> Result<libremetaverse_types::Quaternion, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.Divide(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.Dot(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
pub fn dot(
q1: libremetaverse_types::Quaternion,
q2: libremetaverse_types::Quaternion,
) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.Dot(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.Equals(LibreMetaverse.Quaternion)`.
pub fn equals_with_quaternion(&self, other: libremetaverse_types::Quaternion) -> bool {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Quaternion.Equals(LibreMetaverse.Quaternion)"
)
}
/// C# member: `M:LibreMetaverse.Quaternion.Equals(System.Object)`.
pub fn equals_with_object(&self, obj: Option<libremetaverse_types::compat::Object>) -> bool {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Quaternion.Equals(System.Object)"
)
}
/// C# member: `M:LibreMetaverse.Quaternion.FromBytes(System.Byte[],System.Int32,System.Boolean)`.
pub fn from_bytes(
byte_array: Vec<u8>,
pos: i32,
normalized: bool,
) -> Result<libremetaverse_types::Quaternion, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.FromBytes(System.Byte[],System.Int32,System.Boolean)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.GetAxisAngle(LibreMetaverse.Vector3@,System.Single@)`.
pub fn get_axis_angle(
&self,
axis: &mut libremetaverse_types::Vector3,
angle: &mut f32,
) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.GetAxisAngle(LibreMetaverse.Vector3@,System.Single@)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.GetBytes`.
pub fn get_bytes(&self) -> Result<Vec<u8>, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Quaternion.GetBytes")
}
/// C# member: `M:LibreMetaverse.Quaternion.GetEulerAngles(System.Single@,System.Single@,System.Single@)`.
pub fn get_euler_angles(
&self,
roll: &mut f32,
pitch: &mut f32,
yaw: &mut f32,
) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.GetEulerAngles(System.Single@,System.Single@,System.Single@)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.GetHashCode`.
pub fn get_hash_code(&self) -> i32 {
libremetaverse_types::unimplemented_api!("M:LibreMetaverse.Quaternion.GetHashCode")
}
/// C# member: `M:LibreMetaverse.Quaternion.Inverse(LibreMetaverse.Quaternion)`.
pub fn inverse(
quaternion: libremetaverse_types::Quaternion,
) -> Result<libremetaverse_types::Quaternion, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.Inverse(LibreMetaverse.Quaternion)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.Length`.
pub fn length(&mut self) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Quaternion.Length")
}
/// C# member: `M:LibreMetaverse.Quaternion.LengthSquared`.
pub fn length_squared(&mut self) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Quaternion.LengthSquared")
}
/// C# member: `M:LibreMetaverse.Quaternion.Multiply(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
pub fn multiply_with_quaternion_quaternion(
a: libremetaverse_types::Quaternion,
b: libremetaverse_types::Quaternion,
) -> Result<libremetaverse_types::Quaternion, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.Multiply(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.Multiply(LibreMetaverse.Quaternion,System.Single)`.
pub fn multiply_with_quaternion_single(
quaternion: libremetaverse_types::Quaternion,
scale_factor: f32,
) -> Result<libremetaverse_types::Quaternion, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.Multiply(LibreMetaverse.Quaternion,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.Negate(LibreMetaverse.Quaternion)`.
pub fn negate(
quaternion: libremetaverse_types::Quaternion,
) -> Result<libremetaverse_types::Quaternion, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.Negate(LibreMetaverse.Quaternion)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.Normalize(LibreMetaverse.Quaternion)`.
pub fn normalize(
q: libremetaverse_types::Quaternion,
) -> Result<libremetaverse_types::Quaternion, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.Normalize(LibreMetaverse.Quaternion)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.Parse(System.String)`.
pub fn parse(val: String) -> Result<libremetaverse_types::Quaternion, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Quaternion.Parse(System.String)")
}
/// C# member: `M:LibreMetaverse.Quaternion.Slerp(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion,System.Single)`.
pub fn slerp(
q1: libremetaverse_types::Quaternion,
q2: libremetaverse_types::Quaternion,
amount: f32,
) -> Result<libremetaverse_types::Quaternion, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.Slerp(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion,System.Single)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.Subtract(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
pub fn subtract(
q1: libremetaverse_types::Quaternion,
q2: libremetaverse_types::Quaternion,
) -> Result<libremetaverse_types::Quaternion, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.Subtract(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.ToBytes(System.Byte[],System.Int32)`.
pub fn to_bytes(&self, dest: Vec<u8>, pos: i32) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Quaternion.ToBytes(System.Byte[],System.Int32)",
)
}
/// C# member: `M:LibreMetaverse.Quaternion.ToEulerVector`.
pub fn to_euler_vector(&self) -> Result<libremetaverse_types::Vector3, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Quaternion.ToEulerVector")
}
/// C# member: `M:LibreMetaverse.Quaternion.ToRawString`.
pub fn to_raw_string(&self) -> Result<String, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Quaternion.ToRawString")
}
/// C# member: `M:LibreMetaverse.Quaternion.ToString`.
pub fn to_string(&self) -> String {
libremetaverse_types::unimplemented_api!("M:LibreMetaverse.Quaternion.ToString")
}
/// C# member: `M:LibreMetaverse.Quaternion.TryParse(System.String,LibreMetaverse.Quaternion@)`.
pub fn try_parse(val: String, result: &mut libremetaverse_types::Quaternion) -> bool {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Quaternion.TryParse(System.String,LibreMetaverse.Quaternion@)"
)
}
/// C# member: `M:LibreMetaverse.Quaternion.op_Addition(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
pub fn add_with_quaternion_quaternion_b0243903(
q1: libremetaverse_types::Quaternion,
q2: libremetaverse_types::Quaternion,
) -> libremetaverse_types::Quaternion {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Quaternion.op_Addition(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)"
)
}
/// C# member: `M:LibreMetaverse.Quaternion.op_Division(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
pub fn div(
q1: libremetaverse_types::Quaternion,
q2: libremetaverse_types::Quaternion,
) -> libremetaverse_types::Quaternion {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Quaternion.op_Division(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)"
)
}
/// C# member: `M:LibreMetaverse.Quaternion.op_Equality(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
pub fn eq(q1: libremetaverse_types::Quaternion, q2: libremetaverse_types::Quaternion) -> bool {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Quaternion.op_Equality(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)"
)
}
/// C# member: `M:LibreMetaverse.Quaternion.op_Inequality(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
pub fn ne(q1: libremetaverse_types::Quaternion, q2: libremetaverse_types::Quaternion) -> bool {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Quaternion.op_Inequality(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)"
)
}
/// C# member: `M:LibreMetaverse.Quaternion.op_Multiply(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
pub fn mul_with_quaternion_quaternion(
a: libremetaverse_types::Quaternion,
b: libremetaverse_types::Quaternion,
) -> libremetaverse_types::Quaternion {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Quaternion.op_Multiply(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)"
)
}
/// C# member: `M:LibreMetaverse.Quaternion.op_Multiply(LibreMetaverse.Quaternion,System.Single)`.
pub fn mul_with_quaternion_single(
q: libremetaverse_types::Quaternion,
scale_factor: f32,
) -> libremetaverse_types::Quaternion {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Quaternion.op_Multiply(LibreMetaverse.Quaternion,System.Single)"
)
}
/// C# member: `M:LibreMetaverse.Quaternion.op_Subtraction(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
pub fn sub(
q1: libremetaverse_types::Quaternion,
q2: libremetaverse_types::Quaternion,
) -> libremetaverse_types::Quaternion {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Quaternion.op_Subtraction(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)"
)
}
/// C# member: `M:LibreMetaverse.Quaternion.op_UnaryNegation(LibreMetaverse.Quaternion)`.
pub fn neg(q: libremetaverse_types::Quaternion) -> libremetaverse_types::Quaternion {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Quaternion.op_UnaryNegation(LibreMetaverse.Quaternion)"
)
}
}
/// C# member: `F:LibreMetaverse.Quaternion.Identity`.
/// C# member: `F:LibreMetaverse.Quaternion.W`.
/// C# member: `F:LibreMetaverse.Quaternion.X`.
/// C# member: `F:LibreMetaverse.Quaternion.Y`.
/// C# member: `F:LibreMetaverse.Quaternion.Z`.
/// C# member: `M:LibreMetaverse.Quaternion.#ctor(LibreMetaverse.Vector3,System.Single)`.
/// C# member: `M:LibreMetaverse.Quaternion.#ctor(System.Byte[],System.Int32,System.Boolean)`.
/// C# member: `M:LibreMetaverse.Quaternion.#ctor(System.Single,System.Single,System.Single)`.
/// C# member: `M:LibreMetaverse.Quaternion.#ctor(System.Single,System.Single,System.Single,System.Single)`.
/// C# member: `M:LibreMetaverse.Quaternion.Add(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
/// C# member: `M:LibreMetaverse.Quaternion.ApproxEquals(LibreMetaverse.Quaternion,System.Single)`.
/// C# member: `M:LibreMetaverse.Quaternion.Conjugate(LibreMetaverse.Quaternion)`.
/// C# member: `M:LibreMetaverse.Quaternion.CreateFromAxisAngle(LibreMetaverse.Vector3,System.Single)`.
/// C# member: `M:LibreMetaverse.Quaternion.CreateFromAxisAngle(System.Single,System.Single,System.Single,System.Single)`.
/// C# member: `M:LibreMetaverse.Quaternion.CreateFromEulers(LibreMetaverse.Vector3)`.
/// C# member: `M:LibreMetaverse.Quaternion.CreateFromEulers(System.Single,System.Single,System.Single)`.
/// C# member: `M:LibreMetaverse.Quaternion.CreateFromRotationMatrix(LibreMetaverse.Matrix4)`.
/// C# member: `M:LibreMetaverse.Quaternion.Divide(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
/// C# member: `M:LibreMetaverse.Quaternion.Dot(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
/// C# member: `M:LibreMetaverse.Quaternion.Equals(LibreMetaverse.Quaternion)`.
/// C# member: `M:LibreMetaverse.Quaternion.Equals(System.Object)`.
/// C# member: `M:LibreMetaverse.Quaternion.FromBytes(System.Byte[],System.Int32,System.Boolean)`.
/// C# member: `M:LibreMetaverse.Quaternion.GetAxisAngle(LibreMetaverse.Vector3@,System.Single@)`.
/// C# member: `M:LibreMetaverse.Quaternion.GetBytes`.
/// C# member: `M:LibreMetaverse.Quaternion.GetEulerAngles(System.Single@,System.Single@,System.Single@)`.
/// C# member: `M:LibreMetaverse.Quaternion.GetHashCode`.
/// C# member: `M:LibreMetaverse.Quaternion.Inverse(LibreMetaverse.Quaternion)`.
/// C# member: `M:LibreMetaverse.Quaternion.Length`.
/// C# member: `M:LibreMetaverse.Quaternion.LengthSquared`.
/// C# member: `M:LibreMetaverse.Quaternion.Multiply(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
/// C# member: `M:LibreMetaverse.Quaternion.Multiply(LibreMetaverse.Quaternion,System.Single)`.
/// C# member: `M:LibreMetaverse.Quaternion.Negate(LibreMetaverse.Quaternion)`.
/// C# member: `M:LibreMetaverse.Quaternion.Normalize(LibreMetaverse.Quaternion)`.
/// C# member: `M:LibreMetaverse.Quaternion.Parse(System.String)`.
/// C# member: `M:LibreMetaverse.Quaternion.Slerp(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion,System.Single)`.
/// C# member: `M:LibreMetaverse.Quaternion.Subtract(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
/// C# member: `M:LibreMetaverse.Quaternion.ToBytes(System.Byte[],System.Int32)`.
/// C# member: `M:LibreMetaverse.Quaternion.ToEulerVector`.
/// C# member: `M:LibreMetaverse.Quaternion.ToRawString`.
/// C# member: `M:LibreMetaverse.Quaternion.ToString`.
/// C# member: `M:LibreMetaverse.Quaternion.TryParse(System.String,LibreMetaverse.Quaternion@)`.
/// C# member: `M:LibreMetaverse.Quaternion.op_Addition(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
/// C# member: `M:LibreMetaverse.Quaternion.op_Division(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
/// C# member: `M:LibreMetaverse.Quaternion.op_Equality(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
/// C# member: `M:LibreMetaverse.Quaternion.op_Inequality(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
/// C# member: `M:LibreMetaverse.Quaternion.op_Multiply(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
/// C# member: `M:LibreMetaverse.Quaternion.op_Multiply(LibreMetaverse.Quaternion,System.Single)`.
/// C# member: `M:LibreMetaverse.Quaternion.op_Subtraction(LibreMetaverse.Quaternion,LibreMetaverse.Quaternion)`.
/// C# member: `M:LibreMetaverse.Quaternion.op_UnaryNegation(LibreMetaverse.Quaternion)`.
pub use crate::geometry::Quaternion;
/// C# type: `T:LibreMetaverse.Ray`.
/// C# member: `F:LibreMetaverse.Ray.Direction`.

File diff suppressed because it is too large Load Diff

View File

@@ -7,6 +7,7 @@ mod color4;
pub mod compat;
mod crc32;
mod generated;
mod geometry;
mod math_compat;
pub mod shim;
mod uuid;