From 21dbb2b90834ce39893eb22ed5b4f973ffbc6ccd Mon Sep 17 00:00:00 2001
From: treeform <starplant@gmail.com>
Date: Tue, 15 Dec 2020 00:07:36 -0800
Subject: [PATCH] Convert [] from template to inline.

---
 src/vmath.nim | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/vmath.nim b/src/vmath.nim
index cf86ae0..4c0c135 100644
--- a/src/vmath.nim
+++ b/src/vmath.nim
@@ -504,8 +504,8 @@ proc vec4*(a: Vec2, z = 0.0, w = 0.0): Vec4 {.inline.} =
 
 type Mat3* = array[9, float32] ## 3x3 Matrix
 
-template `[]`*(a: Mat3, i, j: int): float32 = a[i * 3 + j]
-template `[]=`*(a: Mat3, i, j: int, v: float32) = a[i * 3 + j] = v
+proc `[]`*(a: Mat3, i, j: int): float32 {.inline.} = a[i * 3 + j]
+proc `[]=`*(a: var Mat3, i, j: int, v: float32) {.inline.} = a[i * 3 + j] = v
 
 proc mat3*(a, b, c, d, e, f, g, h, i: float32): Mat3 {.inline.} =
   [
@@ -540,15 +540,15 @@ proc `$`*(a: Mat3): string =
 {a[6]:.4f}, {a[7]:.4f}, {a[8]:.4f}]"""
 
 proc `*`*(a, b: Mat3): Mat3 =
-  result[0, 0] += b[0, 0] * a[0, 0] + b[0, 1] * a[1, 0] + b[0, 2] * a[2, 0]
-  result[0, 1] += b[0, 0] * a[0, 1] + b[0, 1] * a[1, 1] + b[0, 2] * a[2, 1]
-  result[0, 2] += b[0, 0] * a[0, 2] + b[0, 1] * a[1, 2] + b[0, 2] * a[2, 2]
-  result[1, 0] += b[1, 0] * a[0, 0] + b[1, 1] * a[1, 0] + b[1, 2] * a[2, 0]
-  result[1, 1] += b[1, 0] * a[0, 1] + b[1, 1] * a[1, 1] + b[1, 2] * a[2, 1]
-  result[1, 2] += b[1, 0] * a[0, 2] + b[1, 1] * a[1, 2] + b[1, 2] * a[2, 2]
-  result[2, 0] += b[2, 0] * a[0, 0] + b[2, 1] * a[1, 0] + b[2, 2] * a[2, 0]
-  result[2, 1] += b[2, 0] * a[0, 1] + b[2, 1] * a[1, 1] + b[2, 2] * a[2, 1]
-  result[2, 2] += b[2, 0] * a[0, 2] + b[2, 1] * a[1, 2] + b[2, 2] * a[2, 2]
+  result[0, 0] = b[0, 0] * a[0, 0] + b[0, 1] * a[1, 0] + b[0, 2] * a[2, 0]
+  result[0, 1] = b[0, 0] * a[0, 1] + b[0, 1] * a[1, 1] + b[0, 2] * a[2, 1]
+  result[0, 2] = b[0, 0] * a[0, 2] + b[0, 1] * a[1, 2] + b[0, 2] * a[2, 2]
+  result[1, 0] = b[1, 0] * a[0, 0] + b[1, 1] * a[1, 0] + b[1, 2] * a[2, 0]
+  result[1, 1] = b[1, 0] * a[0, 1] + b[1, 1] * a[1, 1] + b[1, 2] * a[2, 1]
+  result[1, 2] = b[1, 0] * a[0, 2] + b[1, 1] * a[1, 2] + b[1, 2] * a[2, 2]
+  result[2, 0] = b[2, 0] * a[0, 0] + b[2, 1] * a[1, 0] + b[2, 2] * a[2, 0]
+  result[2, 1] = b[2, 0] * a[0, 1] + b[2, 1] * a[1, 1] + b[2, 2] * a[2, 1]
+  result[2, 2] = b[2, 0] * a[0, 2] + b[2, 1] * a[1, 2] + b[2, 2] * a[2, 2]
 
 proc scale*(a: Mat3, v: Vec2): Mat3 {.inline.} =
   [