diff --git a/CSS3d.elm b/CSS3d.elm index 60c225c..9779aba 100644 --- a/CSS3d.elm +++ b/CSS3d.elm @@ -6,7 +6,6 @@ import Math.Matrix4 as Mat4 exposing (Mat4, translate3) import Math.Vector3 as Vec3 exposing (Vec3, vec3) import Math.Vector4 as Vec4 exposing (Vec4, vec4) import Mouse -import Native.Mat4 import Task exposing (Task) import WebGL exposing (Entity, Mesh, Shader) import WebGL.Settings as Settings @@ -124,15 +123,6 @@ square scale color = ] -type Tuple16 - = Tuple16 Float Float Float Float Float Float Float Float Float Float Float Float Float Float Float Float - - -mat4toTuple : Mat4 -> Tuple16 -mat4toTuple = - Native.Mat4.toTuple - - -- VIEW @@ -188,30 +178,22 @@ view { size, position } = ] -cameraMatrix3d : Mat4 -> String -cameraMatrix3d matrix = - let - (Tuple16 a1 a2 a3 a4 b1 b2 b3 b4 c1 c2 c3 c4 d1 d2 d3 d4) = - mat4toTuple matrix - in - [ a1, -a2, a3, a4, b1, -b2, b3, b4, c1, -c2, c3, c4, d1, -d2, d3, d4 ] - |> List.map toString - |> List.intersperse "," - |> List.foldr (++) "" - |> (\s -> "matrix3d(" ++ s ++ ")") +cameraMatrix3d : { m11 : Float, m21 : Float, m31 : Float, m41 : Float, m12 : Float, m22 : Float, m32 : Float, m42 : Float, m13 : Float, m23 : Float, m33 : Float, m43 : Float, m14 : Float, m24 : Float, m34 : Float, m44 : Float } -> String +cameraMatrix3d { m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44 } = + [ m11, -m21, m31, m41, m12, -m22, m32, m42, m13, -m23, m33, m43, m14, -m24, m34, m44 ] + |> List.map toString + |> List.intersperse "," + |> List.foldr (++) "" + |> (\s -> "matrix3d(" ++ s ++ ")") -objectMatrix3d : Mat4 -> String -objectMatrix3d matrix = - let - (Tuple16 a1 a2 a3 a4 b1 b2 b3 b4 c1 c2 c3 c4 d1 d2 d3 d4) = - mat4toTuple matrix - in - [ a1, a2, a3, a4, -b1, -b2, -b3, -b4, c1, c2, c3, c4, d1, d2, d3, d4 ] - |> List.map toString - |> List.intersperse "," - |> List.foldr (++) "" - |> (\s -> "matrix3d(" ++ s ++ ")") +objectMatrix3d : { m11 : Float, m21 : Float, m31 : Float, m41 : Float, m12 : Float, m22 : Float, m32 : Float, m42 : Float, m13 : Float, m23 : Float, m33 : Float, m43 : Float, m14 : Float, m24 : Float, m34 : Float, m44 : Float } -> String +objectMatrix3d { m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44 } = + [ m11, m21, m31, m41, -m12, -m22, -m32, -m42, m13, m23, m33, m43, m14, m24, m34, m44 ] + |> List.map toString + |> List.intersperse "," + |> List.foldr (++) "" + |> (\s -> "matrix3d(" ++ s ++ ")") box : Float -> Float -> Mat4 -> Html Action @@ -224,7 +206,7 @@ box width height matrix = , ( "width", toString width ++ "px" ) , ( "height", toString height ++ "px" ) , ( "transform" - , "translate3d(-50%, -50%, 0) " ++ objectMatrix3d matrix + , "translate3d(-50%, -50%, 0) " ++ objectMatrix3d (Mat4.toRecord matrix) ) ] ] @@ -244,7 +226,7 @@ camera fov { width, height } matrix = ++ "translate3d(0,0," ++ toString fov ++ "px)" - ++ cameraMatrix3d matrix + ++ cameraMatrix3d (Mat4.toRecord matrix) ++ "translate3d(" ++ toString (toFloat width / 2) ++ "px," diff --git a/Native/Mat4.js b/Native/Mat4.js deleted file mode 100644 index 43555e0..0000000 --- a/Native/Mat4.js +++ /dev/null @@ -1,27 +0,0 @@ -var _w0rm$elm_webgl_playground$Native_Mat4 = function () { - - return { - toTuple: function (mat) { - return { - ctor: 'Tuple16', - _0: mat[0], - _1: mat[1], - _2: mat[2], - _3: mat[3], - _4: mat[4], - _5: mat[5], - _6: mat[6], - _7: mat[7], - _8: mat[8], - _9: mat[9], - _10: mat[10], - _11: mat[11], - _12: mat[12], - _13: mat[13], - _14: mat[14], - _15: mat[15] - } - } - } - -}(); diff --git a/elm-package.json b/elm-package.json index d52cecf..f0e6aaf 100644 --- a/elm-package.json +++ b/elm-package.json @@ -9,7 +9,7 @@ "exposed-modules": [], "native-modules": true, "dependencies": { - "elm-community/linear-algebra": "1.0.0 <= v < 2.0.0", + "elm-community/linear-algebra": "3.1.0 <= v < 4.0.0", "elm-community/webgl": "2.0.0 <= v < 3.0.0", "elm-lang/animation-frame": "1.0.1 <= v < 2.0.0", "elm-lang/core": "5.0.0 <= v < 6.0.0",