const rl = @import("raylib-zig.zig"); const Matrix = rl.Matrix; const Quaternion = rl.Quaternion; const Vector2 = rl.Vector2; const Vector3 = rl.Vector3; const Vector4 = rl.Vector4; pub const float3 = extern struct { v: [3]f32, }; pub const float16 = extern struct { v: [16]f32, }; pub extern fn Clamp(value: f32, min: f32, max: f32) f32; pub extern fn Lerp(start: f32, end: f32, amount: f32) f32; pub extern fn Normalize(value: f32, start: f32, end: f32) f32; pub extern fn Remap(value: f32, inputStart: f32, inputEnd: f32, outputStart: f32, outputEnd: f32) f32; pub extern fn Wrap(value: f32, min: f32, max: f32) f32; pub extern fn FloatEquals(x: f32, y: f32) c_int; pub extern fn Vector2Zero() Vector2; pub extern fn Vector2One() Vector2; pub extern fn Vector2Add(v1: Vector2, v2: Vector2) Vector2; pub extern fn Vector2AddValue(v: Vector2, add: f32) Vector2; pub extern fn Vector2Subtract(v1: Vector2, v2: Vector2) Vector2; pub extern fn Vector2SubtractValue(v: Vector2, sub: f32) Vector2; pub extern fn Vector2Length(v: Vector2) f32; pub extern fn Vector2LengthSqr(v: Vector2) f32; pub extern fn Vector2DotProduct(v1: Vector2, v2: Vector2) f32; pub extern fn Vector2Distance(v1: Vector2, v2: Vector2) f32; pub extern fn Vector2DistanceSqr(v1: Vector2, v2: Vector2) f32; pub extern fn Vector2Angle(v1: Vector2, v2: Vector2) f32; pub extern fn Vector2Scale(v: Vector2, scale: f32) Vector2; pub extern fn Vector2Multiply(v1: Vector2, v2: Vector2) Vector2; pub extern fn Vector2Negate(v: Vector2) Vector2; pub extern fn Vector2Divide(v1: Vector2, v2: Vector2) Vector2; pub extern fn Vector2Normalize(v: Vector2) Vector2; pub extern fn Vector2Transform(v: Vector2, mat: Matrix) Vector2; pub extern fn Vector2Lerp(v1: Vector2, v2: Vector2, amount: f32) Vector2; pub extern fn Vector2Reflect(v: Vector2, normal: Vector2) Vector2; pub extern fn Vector2Rotate(v: Vector2, angle: f32) Vector2; pub extern fn Vector2MoveTowards(v: Vector2, target: Vector2, maxDistance: f32) Vector2; pub extern fn Vector2Invert(v: Vector2) Vector2; pub extern fn Vector2Clamp(v: Vector2, min: Vector2, max: Vector2) Vector2; pub extern fn Vector2ClampValue(v: Vector2, min: f32, max: f32) Vector2; pub extern fn Vector2Equals(p: Vector2, q: Vector2) c_int; pub extern fn Vector3Zero() Vector3; pub extern fn Vector3One() Vector3; pub extern fn Vector3Add(v1: Vector3, v2: Vector3) Vector3; pub extern fn Vector3AddValue(v: Vector3, add: f32) Vector3; pub extern fn Vector3Subtract(v1: Vector3, v2: Vector3) Vector3; pub extern fn Vector3SubtractValue(v: Vector3, sub: f32) Vector3; pub extern fn Vector3Scale(v: Vector3, scalar: f32) Vector3; pub extern fn Vector3Multiply(v1: Vector3, v2: Vector3) Vector3; pub extern fn Vector3CrossProduct(v1: Vector3, v2: Vector3) Vector3; pub extern fn Vector3Perpendicular(v: Vector3) Vector3; pub extern fn Vector3Length(v: Vector3) f32; pub extern fn Vector3LengthSqr(v: Vector3) f32; pub extern fn Vector3DotProduct(v1: Vector3, v2: Vector3) f32; pub extern fn Vector3Distance(v1: Vector3, v2: Vector3) f32; pub extern fn Vector3DistanceSqr(v1: Vector3, v2: Vector3) f32; pub extern fn Vector3Angle(v1: Vector3, v2: Vector3) f32; pub extern fn Vector3Negate(v: Vector3) Vector3; pub extern fn Vector3Divide(v1: Vector3, v2: Vector3) Vector3; pub extern fn Vector3Normalize(v: Vector3) Vector3; pub extern fn Vector3OrthoNormalize(v1: [*c]Vector3, v2: [*c]Vector3) void; pub extern fn Vector3Transform(v: Vector3, mat: Matrix) Vector3; pub extern fn Vector3RotateByQuaternion(v: Vector3, q: Quaternion) Vector3; pub extern fn Vector3RotateByAxisAngle(v: Vector3, axis: Vector3, angle: f32) Vector3; pub extern fn Vector3Lerp(v1: Vector3, v2: Vector3, amount: f32) Vector3; pub extern fn Vector3Reflect(v: Vector3, normal: Vector3) Vector3; pub extern fn Vector3Min(v1: Vector3, v2: Vector3) Vector3; pub extern fn Vector3Max(v1: Vector3, v2: Vector3) Vector3; pub extern fn Vector3Barycenter(p: Vector3, a: Vector3, b: Vector3, c: Vector3) Vector3; pub extern fn Vector3Unproject(source: Vector3, projection: Matrix, view: Matrix) Vector3; pub extern fn Vector3ToFloatV(v: Vector3) float3; pub extern fn Vector3Invert(v: Vector3) Vector3; pub extern fn Vector3Clamp(v: Vector3, min: Vector3, max: Vector3) Vector3; pub extern fn Vector3ClampValue(v: Vector3, min: f32, max: f32) Vector3; pub extern fn Vector3Equals(p: Vector3, q: Vector3) c_int; pub extern fn Vector3Refract(v: Vector3, n: Vector3, r: f32) Vector3; pub extern fn MatrixDeterminant(mat: Matrix) f32; pub extern fn MatrixTrace(mat: Matrix) f32; pub extern fn MatrixTranspose(mat: Matrix) Matrix; pub extern fn MatrixInvert(mat: Matrix) Matrix; pub extern fn MatrixIdentity() Matrix; pub extern fn MatrixAdd(left: Matrix, right: Matrix) Matrix; pub extern fn MatrixSubtract(left: Matrix, right: Matrix) Matrix; pub extern fn MatrixMultiply(left: Matrix, right: Matrix) Matrix; pub extern fn MatrixTranslate(x: f32, y: f32, z: f32) Matrix; pub extern fn MatrixRotate(axis: Vector3, angle: f32) Matrix; pub extern fn MatrixRotateX(angle: f32) Matrix; pub extern fn MatrixRotateY(angle: f32) Matrix; pub extern fn MatrixRotateZ(angle: f32) Matrix; pub extern fn MatrixRotateXYZ(angle: Vector3) Matrix; pub extern fn MatrixRotateZYX(angle: Vector3) Matrix; pub extern fn MatrixScale(x: f32, y: f32, z: f32) Matrix; pub extern fn MatrixFrustum(left: f64, right: f64, bottom: f64, top: f64, near: f64, far: f64) Matrix; pub extern fn MatrixPerspective(fovy: f64, aspect: f64, near: f64, far: f64) Matrix; pub extern fn MatrixOrtho(left: f64, right: f64, bottom: f64, top: f64, near: f64, far: f64) Matrix; pub extern fn MatrixLookAt(eye: Vector3, target: Vector3, up: Vector3) Matrix; pub extern fn MatrixToFloatV(mat: Matrix) float16; pub extern fn QuaternionAdd(q1: Quaternion, q2: Quaternion) Quaternion; pub extern fn QuaternionAddValue(q: Quaternion, add: f32) Quaternion; pub extern fn QuaternionSubtract(q1: Quaternion, q2: Quaternion) Quaternion; pub extern fn QuaternionSubtractValue(q: Quaternion, sub: f32) Quaternion; pub extern fn QuaternionIdentity() Quaternion; pub extern fn QuaternionLength(q: Quaternion) f32; pub extern fn QuaternionNormalize(q: Quaternion) Quaternion; pub extern fn QuaternionInvert(q: Quaternion) Quaternion; pub extern fn QuaternionMultiply(q1: Quaternion, q2: Quaternion) Quaternion; pub extern fn QuaternionScale(q: Quaternion, mul: f32) Quaternion; pub extern fn QuaternionDivide(q1: Quaternion, q2: Quaternion) Quaternion; pub extern fn QuaternionLerp(q1: Quaternion, q2: Quaternion, amount: f32) Quaternion; pub extern fn QuaternionNlerp(q1: Quaternion, q2: Quaternion, amount: f32) Quaternion; pub extern fn QuaternionSlerp(q1: Quaternion, q2: Quaternion, amount: f32) Quaternion; pub extern fn QuaternionFromVector3ToVector3(from: Vector3, to: Vector3) Quaternion; pub extern fn QuaternionFromMatrix(mat: Matrix) Quaternion; pub extern fn QuaternionToMatrix(q: Quaternion) Matrix; pub extern fn QuaternionFromAxisAngle(axis: Vector3, angle: f32) Quaternion; pub extern fn QuaternionToAxisAngle(q: Quaternion, outAxis: [*c]Vector3, outAngle: [*c]f32) void; pub extern fn QuaternionFromEuler(pitch: f32, yaw: f32, roll: f32) Quaternion; pub extern fn QuaternionToEuler(q: Quaternion) Vector3; pub extern fn QuaternionTransform(q: Quaternion, mat: Matrix) Quaternion; pub extern fn QuaternionEquals(p: Quaternion, q: Quaternion) c_int;