From 30cf3ed02f791f72437aeac424f8b493a42afda7 Mon Sep 17 00:00:00 2001 From: Barinzaya Date: Thu, 31 Oct 2024 13:37:43 -0400 Subject: [PATCH] Fixed raymath not applying matrix translations. Translation matrices use the w components of the matrix to apply the transform, and thus only work when the w component is 1. In the original raymath implementation, the multiplication is done manually and adds the translation components directly to the result, as if w is 1, but in the Odin binding this is done with a matrix multiplication. However, the w component is set to 0 instead of 1, resulting in the translation not being applied. --- vendor/raylib/raymath.odin | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/raylib/raymath.odin b/vendor/raylib/raymath.odin index eef5c2fcd..c66498e41 100644 --- a/vendor/raylib/raymath.odin +++ b/vendor/raylib/raymath.odin @@ -153,7 +153,7 @@ Vector2Normalize :: proc "c" (v: Vector2) -> Vector2 { // Transforms a Vector2 by a given Matrix @(require_results) Vector2Transform :: proc "c" (v: Vector2, m: Matrix) -> Vector2 { - v4 := Vector4{v.x, v.y, 0, 0} + v4 := Vector4{v.x, v.y, 0, 1} return (m * v4).xy } // Calculate linear interpolation between two vectors @@ -399,7 +399,7 @@ Vector3RotateByAxisAngle :: proc "c" (v: Vector3, axis: Vector3, angle: f32) -> // Transforms a Vector3 by a given Matrix @(require_results) Vector3Transform :: proc "c" (v: Vector3, m: Matrix) -> Vector3 { - v4 := Vector4{v.x, v.y, v.z, 0} + v4 := Vector4{v.x, v.y, v.z, 1} return (m * v4).xyz } // Calculate linear interpolation between two vectors