From 62d2656f69cf2302d27a0059b7d3f9ade01df100 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Fri, 26 Mar 2021 14:33:46 +0000 Subject: [PATCH] Add `linalg.matrix_cast` --- core/math/linalg/general.odin | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/core/math/linalg/general.odin b/core/math/linalg/general.odin index 34b9c8f57..0236f6130 100644 --- a/core/math/linalg/general.odin +++ b/core/math/linalg/general.odin @@ -316,10 +316,19 @@ cubic :: proc(v1, v2, v3, v4: $T/[$N]$E, s: E) -> T { -array_cast :: proc(v: $A/[$N]$T, $U: typeid) -> [N]U { - w: [N]U; - for _, i in v do w[i] = U(v[i]); - return w; +array_cast :: proc(v: $A/[$N]$T, $Elem_Type: typeid) -> (w: [N]Elem_Type) { + for _, i in v do w[i] = Elem_Type(v[i]); + return; +} + + +matrix_cast :: proc(v: $A/[$M][$N]$T, $Elem_Type: typeid) -> (w: [M][N]Elem_Type) { + for i in 0.. [N]f32 { return array_cast(v, f32); }