Exemple #1
0
        static StackObject *GetGPUProjectionMatrix_27(ILIntepreter __intp, StackObject *__esp, IList <object> __mStack, CLRMethod __method, bool isNewObj)
        {
            CSHotFix.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
            StackObject *ptr_of_this_method;
            StackObject *__ret = ILIntepreter.Minus(__esp, 2);

            ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
            System.Boolean @renderIntoTexture = ptr_of_this_method->Value == 1;

            ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
            UnityEngine.Matrix4x4 @proj = (UnityEngine.Matrix4x4) typeof(UnityEngine.Matrix4x4).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
            __intp.Free(ptr_of_this_method);


            var result_of_this_method = UnityEngine.GL.GetGPUProjectionMatrix(@proj, @renderIntoTexture);

            return(ILIntepreter.PushObject(__ret, __mStack, result_of_this_method));
        }
        public void SetMatrix4x4(UnityEngine.Matrix4x4 m)
        {
            _basis._el0.X = m.m00;
            _basis._el1.X = m.m10;
            _basis._el2.X = m.m20;

            _basis._el0.Y = m.m01;
            _basis._el1.Y = m.m11;
            _basis._el2.Y = m.m21;

            _basis._el0.Z = m.m02;
            _basis._el1.Z = m.m12;
            _basis._el2.Z = m.m22;

            _origin.X = m.m03;
            _origin.Y = m.m13;
            _origin.Z = m.m23;
        }
        public IndexedMatrix(ref UnityEngine.Matrix4x4 m)
        {
            _basis._el0.X = m.m00;
            _basis._el1.X = m.m10;
            _basis._el2.X = m.m20;

            _basis._el0.Y = m.m01;
            _basis._el1.Y = m.m11;
            _basis._el2.Y = m.m21;

            _basis._el0.Z = m.m02;
            _basis._el1.Z = m.m12;
            _basis._el2.Z = m.m22;

            _origin.X = m.m03;
            _origin.Y = m.m13;
            _origin.Z = m.m23;
        }
Exemple #4
0
        public static void TestXform2()
        {
            var sample  = new USD.NET.Unity.XformSample();
            var sample2 = new USD.NET.Unity.XformSample();

            var mat = new UnityEngine.Matrix4x4();

            for (int i = 0; i < 16; i++)
            {
                mat[i] = i;
            }
            sample.transform = mat;

            WriteAndRead(ref sample, ref sample2, true);

            AssertEqual(sample2.transform, sample.transform);
            AssertEqual(sample2.xformOpOrder, sample.xformOpOrder);
        }
        private CameraIntrinsics ConvertIntrinsics(global::Windows.Media.Devices.Core.CameraIntrinsics mediaFrameIntrinsics)
        {
            CameraIntrinsics intrinsics = null;

            if (mediaFrameIntrinsics != null)
            {
                Vector2   focalLength                    = new Vector2(mediaFrameIntrinsics.FocalLength.X, mediaFrameIntrinsics.FocalLength.Y);
                uint      imageWidth                     = mediaFrameIntrinsics.ImageWidth;
                uint      imageHeight                    = mediaFrameIntrinsics.ImageHeight;
                Vector2   principalPoint                 = new Vector2(mediaFrameIntrinsics.PrincipalPoint.X, mediaFrameIntrinsics.PrincipalPoint.Y);
                Vector3   radialDistortion               = new Vector3(mediaFrameIntrinsics.RadialDistortion.X, mediaFrameIntrinsics.RadialDistortion.Y, mediaFrameIntrinsics.RadialDistortion.Z);
                Vector2   tangentialDistortion           = new Vector2(mediaFrameIntrinsics.TangentialDistortion.X, mediaFrameIntrinsics.TangentialDistortion.Y);
                Matrix4x4 undistortedProjectionTransform = ConvertMatrix(mediaFrameIntrinsics.UndistortedProjectionTransform);

                intrinsics = new CameraIntrinsics(focalLength, imageWidth, imageHeight, principalPoint, radialDistortion, tangentialDistortion, undistortedProjectionTransform);
            }

            return(intrinsics);
        }
Exemple #6
0
        static StackObject *CalculateBounds_4(ILIntepreter __intp, StackObject *__esp, IList <object> __mStack, CLRMethod __method, bool isNewObj)
        {
            CSHotFix.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
            StackObject *ptr_of_this_method;
            StackObject *__ret = ILIntepreter.Minus(__esp, 2);

            ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
            UnityEngine.Matrix4x4 @transform = (UnityEngine.Matrix4x4) typeof(UnityEngine.Matrix4x4).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
            __intp.Free(ptr_of_this_method);

            ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
            UnityEngine.Vector3[] @positions = (UnityEngine.Vector3[]) typeof(UnityEngine.Vector3[]).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
            __intp.Free(ptr_of_this_method);


            var result_of_this_method = UnityEngine.GeometryUtility.CalculateBounds(@positions, @transform);

            return(ILIntepreter.PushObject(__ret, __mStack, result_of_this_method));
        }
Exemple #7
0
        static StackObject *CalculateFrustumPlanes_3(ILIntepreter __intp, StackObject *__esp, IList <object> __mStack, CLRMethod __method, bool isNewObj)
        {
            CSHotFix.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
            StackObject *ptr_of_this_method;
            StackObject *__ret = ILIntepreter.Minus(__esp, 2);

            ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
            UnityEngine.Plane[] @planes = (UnityEngine.Plane[]) typeof(UnityEngine.Plane[]).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
            __intp.Free(ptr_of_this_method);

            ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
            UnityEngine.Matrix4x4 @worldToProjectionMatrix = (UnityEngine.Matrix4x4) typeof(UnityEngine.Matrix4x4).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
            __intp.Free(ptr_of_this_method);


            UnityEngine.GeometryUtility.CalculateFrustumPlanes(@worldToProjectionMatrix, @planes);

            return(__ret);
        }
Exemple #8
0
 public static void Write(byte[] bytes, int i, UnityEngine.Matrix4x4 value)
 {
     Write(bytes, i, value.m00);
     Write(bytes, i + 4, value.m01);
     Write(bytes, i + 8, value.m02);
     Write(bytes, i + 12, value.m03);
     Write(bytes, i + 16, value.m10);
     Write(bytes, i + 20, value.m11);
     Write(bytes, i + 24, value.m12);
     Write(bytes, i + 28, value.m13);
     Write(bytes, i + 32, value.m20);
     Write(bytes, i + 36, value.m21);
     Write(bytes, i + 40, value.m22);
     Write(bytes, i + 44, value.m23);
     Write(bytes, i + 48, value.m30);
     Write(bytes, i + 52, value.m31);
     Write(bytes, i + 56, value.m32);
     Write(bytes, i + 60, value.m33);
 }
Exemple #9
0
        public void Write(UnityEngine.Matrix4x4 m)
        {
            if (m == null)
            {
                return;
            }

            WriteObjectStart();
            WritePropertyName("m00");
            Write((int)m.m00);
            WritePropertyName("m33");
            Write((int)m.m33);
            WritePropertyName("m23");
            Write((int)m.m23);
            WritePropertyName("m13");
            Write((int)m.m13);
            WritePropertyName("m03");
            Write((int)m.m03);
            WritePropertyName("m32");
            Write((int)m.m32);
            WritePropertyName("m12");
            Write((int)m.m12);
            WritePropertyName("m02");
            Write((int)m.m02);
            WritePropertyName("m22");
            Write((int)m.m22);
            WritePropertyName("m21");
            Write((int)m.m21);
            WritePropertyName("m11");
            Write((int)m.m11);
            WritePropertyName("m01");
            Write((int)m.m01);
            WritePropertyName("m30");
            Write((int)m.m30);
            WritePropertyName("m20");
            Write((int)m.m20);
            WritePropertyName("m10");
            Write((int)m.m10);
            WritePropertyName("m31");
            Write((int)m.m31);
            WriteObjectEnd();
        }
        static StackObject *set_transform_1(ILIntepreter __intp, StackObject *__esp, IList <object> __mStack, CLRMethod __method, bool isNewObj)
        {
            CSHotFix.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
            StackObject *ptr_of_this_method;
            StackObject *__ret = ILIntepreter.Minus(__esp, 2);

            ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
            UnityEngine.Matrix4x4 value = (UnityEngine.Matrix4x4) typeof(UnityEngine.Matrix4x4).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
            __intp.Free(ptr_of_this_method);
            ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
            ptr_of_this_method = ILIntepreter.GetObjectAndResolveReference(ptr_of_this_method);
            UnityEngine.AI.NavMeshBuildSource instance_of_this_method;
            instance_of_this_method = (UnityEngine.AI.NavMeshBuildSource) typeof(UnityEngine.AI.NavMeshBuildSource).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));

            instance_of_this_method.transform = value;

            WriteBackInstance(__domain, ptr_of_this_method, __mStack, ref instance_of_this_method);

            return(__ret);
        }
Exemple #11
0
 public static UnityEngine.Matrix4x4 Matrix(XMatrix input, out UMatrix output)
 {
     output.m00 = input.M11;
     output.m01 = input.M21;
     output.m02 = input.M31;
     output.m03 = input.M41;
     output.m10 = input.M12;
     output.m11 = input.M22;
     output.m12 = input.M32;
     output.m13 = input.M42;
     output.m20 = input.M13;
     output.m21 = input.M23;
     output.m22 = input.M33;
     output.m23 = input.M43;
     output.m30 = input.M14;
     output.m31 = input.M24;
     output.m32 = input.M34;
     output.m33 = input.M44;
     return(output);
 }
Exemple #12
0
        static StackObject *GetColumn_2(ILIntepreter __intp, StackObject *__esp, IList <object> __mStack, CLRMethod __method, bool isNewObj)
        {
            ILRuntime.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
            StackObject *ptr_of_this_method;
            StackObject *__ret = ILIntepreter.Minus(__esp, 2);

            ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
            System.Int32 @index = ptr_of_this_method->Value;

            ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
            ptr_of_this_method = ILIntepreter.GetObjectAndResolveReference(ptr_of_this_method);
            UnityEngine.Matrix4x4 instance_of_this_method = (UnityEngine.Matrix4x4) typeof(UnityEngine.Matrix4x4).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));

            var result_of_this_method = instance_of_this_method.GetColumn(@index);

            ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
            WriteBackInstance(__domain, ptr_of_this_method, __mStack, ref instance_of_this_method);

            __intp.Free(ptr_of_this_method);
            return(ILIntepreter.PushObject(__ret, __mStack, result_of_this_method));
        }
        public UnityEngine.Matrix4x4 ToMatrix4x4()
        {
            UnityEngine.Matrix4x4 m = UnityEngine.Matrix4x4.identity;

            m.m00 = _basis._el0.X;
            m.m10 = _basis._el1.X;
            m.m20 = _basis._el2.X;

            m.m01 = _basis._el0.Y;
            m.m11 = _basis._el1.Y;
            m.m21 = _basis._el2.Y;

            m.m02 = _basis._el0.Z;
            m.m12 = _basis._el1.Z;
            m.m22 = _basis._el2.Z;

            m.m03 = _origin.X;
            m.m13 = _origin.Y;
            m.m23 = _origin.Z;
            return(m);
        }
        public void ToMatrix4x4(out UnityEngine.Matrix4x4 m)
        {
            m.m00 = _basis._el0.X;
            m.m10 = _basis._el1.X;
            m.m20 = _basis._el2.X;
            m.m30 = 0.0f;

            m.m01 = _basis._el0.Y;
            m.m11 = _basis._el1.Y;
            m.m21 = _basis._el2.Y;
            m.m31 = 0.0f;

            m.m02 = _basis._el0.Z;
            m.m12 = _basis._el1.Z;
            m.m22 = _basis._el2.Z;
            m.m32 = 0.0f;

            m.m03 = _origin.X;
            m.m13 = _origin.Y;
            m.m23 = _origin.Z;
            m.m33 = 1.0f;
        }
Exemple #15
0
 public static Matrix4x4 FromUnityType(UnityEngine.Matrix4x4 matrix4X4)
 {
     return(new Matrix4x4()
     {
         m00 = matrix4X4.m00,
         m33 = matrix4X4.m33,
         m23 = matrix4X4.m23,
         m13 = matrix4X4.m13,
         m03 = matrix4X4.m03,
         m32 = matrix4X4.m32,
         m22 = matrix4X4.m22,
         m02 = matrix4X4.m02,
         m12 = matrix4X4.m12,
         m21 = matrix4X4.m21,
         m11 = matrix4X4.m11,
         m01 = matrix4X4.m01,
         m30 = matrix4X4.m30,
         m20 = matrix4X4.m20,
         m10 = matrix4X4.m10,
         m31 = matrix4X4.m31,
     });
 }
        public static UnityEngine.Matrix4x4 GetMatrix4x4(SerializationInfo info)
        {
            var m = new UnityEngine.Matrix4x4();

            m.m00 = info.GetSingle("00");
            m.m01 = info.GetSingle("01");
            m.m02 = info.GetSingle("02");
            m.m03 = info.GetSingle("03");
            m.m10 = info.GetSingle("10");
            m.m11 = info.GetSingle("11");
            m.m12 = info.GetSingle("12");
            m.m13 = info.GetSingle("13");
            m.m20 = info.GetSingle("20");
            m.m21 = info.GetSingle("21");
            m.m22 = info.GetSingle("22");
            m.m23 = info.GetSingle("23");
            m.m30 = info.GetSingle("30");
            m.m31 = info.GetSingle("31");
            m.m32 = info.GetSingle("32");
            m.m33 = info.GetSingle("33");
            return(m);
        }
Exemple #17
0
        static int _m_GetMatrix(RealStatePtr L)
        {
            ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);


            UnityEngine.MaterialPropertyBlock __cl_gen_to_be_invoked = (UnityEngine.MaterialPropertyBlock)translator.FastGetCSObj(L, 1);


            int __gen_param_count = LuaAPI.lua_gettop(L);

            try {
                if (__gen_param_count == 2 && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 2))
                {
                    int nameID = LuaAPI.xlua_tointeger(L, 2);

                    UnityEngine.Matrix4x4 __cl_gen_ret = __cl_gen_to_be_invoked.GetMatrix(nameID);
                    translator.Push(L, __cl_gen_ret);



                    return(1);
                }
                if (__gen_param_count == 2 && (LuaAPI.lua_isnil(L, 2) || LuaAPI.lua_type(L, 2) == LuaTypes.LUA_TSTRING))
                {
                    string name = LuaAPI.lua_tostring(L, 2);

                    UnityEngine.Matrix4x4 __cl_gen_ret = __cl_gen_to_be_invoked.GetMatrix(name);
                    translator.Push(L, __cl_gen_ret);



                    return(1);
                }
            } catch (System.Exception __gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + __gen_e));
            }

            return(LuaAPI.luaL_error(L, "invalid arguments to UnityEngine.MaterialPropertyBlock.GetMatrix!"));
        }
Exemple #18
0
        public virtual Dictionary <string, CalibrationProfile> Load()
        {
            Dictionary <string, NodeData>           nodes    = NodeLoaderInterop.Loader.Load();
            Dictionary <string, CalibrationProfile> profiles = new Dictionary <string, CalibrationProfile>();

            if (nodes == null)
            {
                return(null);
            }

            foreach (NodeDataEntry n in nodes)
            {
                Matrix4x4 poseMat = TypeUtilities.MatrixFromArray(n.Value.pose_data);
                profiles.Add(n.Value.entry_name, new CalibrationProfile {
                    RelativePose = poseMat, CameraModel = n.Value.projection_model_data
                });

                // Debug.Log("Node entry loaded: " + n.Value.entry_name);
            }

            return(profiles);
        }
Exemple #19
0
        /** Calc
         */
        public void Calc(UnityEngine.Camera a_look_camera, UnityEngine.Transform a_look_transform)
        {
            //worldToCameraMatrix
            this.raw_camera.worldToCameraMatrix = a_look_camera.worldToCameraMatrix * this.matrix;

            //projectionMatrix
            {
                UnityEngine.Matrix4x4 t_mirror_camera_matrix = this.raw_camera.worldToCameraMatrix;
                UnityEngine.Vector4   t_mirror_clip_plane;
                {
                    UnityEngine.Vector3 t_pos             = -this.plane_normal * this.plane_distance;
                    UnityEngine.Vector3 t_mirror_position = t_mirror_camera_matrix.MultiplyPoint(t_pos);
                    UnityEngine.Vector3 t_mirror_normal   = t_mirror_camera_matrix.MultiplyVector(this.plane_normal).normalized;
                    t_mirror_clip_plane = new UnityEngine.Vector4(t_mirror_normal.x, t_mirror_normal.y, t_mirror_normal.z, -UnityEngine.Vector3.Dot(t_mirror_position, t_mirror_normal));
                }
                this.raw_camera.projectionMatrix = a_look_camera.CalculateObliqueMatrix(t_mirror_clip_plane);
            }

            //position
            {
                this.raw_camera.transform.position = this.matrix.MultiplyPoint(a_look_transform.position);
            }

            //rotation
            {
                UnityEngine.Vector3 t_up      = this.matrix_rotate.MultiplyPoint(a_look_transform.up).normalized;
                UnityEngine.Vector3 t_forward = this.matrix_rotate.MultiplyPoint(a_look_transform.forward).normalized;
                UnityEngine.Vector3 t_right   = UnityEngine.Vector3.Cross(t_up, t_forward);

                UnityEngine.Matrix4x4 t_matrix = new UnityEngine.Matrix4x4(
                    new UnityEngine.Vector4(t_right.x, t_right.y, t_right.z, 0.0f),
                    new UnityEngine.Vector4(t_up.x, t_up.y, t_up.z, 0.0f),
                    new UnityEngine.Vector4(t_forward.x, t_forward.y, t_forward.z, 0.0f),
                    new UnityEngine.Vector4(0.0f, 0.0f, 0.0f, 1.0f)
                    );

                this.raw_camera.transform.rotation = t_matrix.rotation;
            }
        }
Exemple #20
0
        static int _m_GetGPUProjectionMatrix_xlua_st_(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);



                {
                    UnityEngine.Matrix4x4 _proj; translator.Get(L, 1, out _proj);
                    bool _renderIntoTexture = LuaAPI.lua_toboolean(L, 2);

                    UnityEngine.Matrix4x4 gen_ret = UnityEngine.GL.GetGPUProjectionMatrix(_proj, _renderIntoTexture);
                    translator.Push(L, gen_ret);



                    return(1);
                }
            } catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
        }
Exemple #21
0
        static StackObject *MultiplyPoint3x4_0(ILIntepreter __intp, StackObject *__esp, IList <object> __mStack, CLRMethod __method, bool isNewObj)
        {
            ILRuntime.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
            StackObject *ptr_of_this_method;
            StackObject *__ret = ILIntepreter.Minus(__esp, 2);

            ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
            UnityEngine.Vector3 @point = new UnityEngine.Vector3();
            if (ILRuntime.Runtime.Generated.CLRBindings.s_UnityEngine_Vector3_Binding_Binder != null)
            {
                ILRuntime.Runtime.Generated.CLRBindings.s_UnityEngine_Vector3_Binding_Binder.ParseValue(ref @point, __intp, ptr_of_this_method, __mStack, true);
            }
            else
            {
                @point = (UnityEngine.Vector3) typeof(UnityEngine.Vector3).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
                __intp.Free(ptr_of_this_method);
            }

            ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
            ptr_of_this_method = ILIntepreter.GetObjectAndResolveReference(ptr_of_this_method);
            UnityEngine.Matrix4x4 instance_of_this_method = (UnityEngine.Matrix4x4) typeof(UnityEngine.Matrix4x4).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));

            var result_of_this_method = instance_of_this_method.MultiplyPoint3x4(@point);

            ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
            WriteBackInstance(__domain, ptr_of_this_method, __mStack, ref instance_of_this_method);

            __intp.Free(ptr_of_this_method);
            if (ILRuntime.Runtime.Generated.CLRBindings.s_UnityEngine_Vector3_Binding_Binder != null)
            {
                ILRuntime.Runtime.Generated.CLRBindings.s_UnityEngine_Vector3_Binding_Binder.PushValue(ref result_of_this_method, __intp, __ret, __mStack);
                return(__ret + 1);
            }
            else
            {
                return(ILIntepreter.PushObject(__ret, __mStack, result_of_this_method));
            }
        }
Exemple #22
0
        public void Values()
        {
            var values = new float[16];

            // T
            {
                var um = UnityEngine.Matrix4x4.Translate(new UnityEngine.Vector3(1, 2, 3));
                using (var pin = Pin.Create(new[] { um }))
                {
                    Marshal.Copy(pin.Ptr, values, 0, 16);
                }
                Assert.AreEqual(1, um.m03);
                Assert.AreEqual(2, um.m13);
                Assert.AreEqual(3, um.m23);
                Assert.AreEqual(new UnityEngine.Vector4(1, 2, 3, 1), um.GetColumn(3));
                Assert.AreEqual(new float[] { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 2, 3, 1 }, values);

                var v = new UnityEngine.Vector4();
                var m = new UnityEngine.Matrix4x4();
                m.MultiplyVector(v);

                // new UnityEngine.Matrix4x4.mul new UnityEngine.Vector3().mul
            }

            {
                var nm = System.Numerics.Matrix4x4.CreateTranslation(1, 2, 3);
                using (var pin = Pin.Create(new[] { nm }))
                {
                    Marshal.Copy(pin.Ptr, values, 0, 16);
                }
                Assert.AreEqual(1, nm.M41);
                Assert.AreEqual(2, nm.M42);
                Assert.AreEqual(3, nm.M43);
                Assert.AreEqual(new System.Numerics.Vector3(1, 2, 3), nm.Translation);
                Assert.AreEqual(new float[] { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 2, 3, 1 }, values);
            }
        }
        public static void AddValue(SerializationInfo info, UnityEngine.Matrix4x4 value)
        {
            if (info == null)
            {
                throw new System.ArgumentNullException("info");
            }

            info.AddValue("m00", value.m00);
            info.AddValue("m01", value.m01);
            info.AddValue("m02", value.m02);
            info.AddValue("m03", value.m03);
            info.AddValue("m10", value.m10);
            info.AddValue("m11", value.m11);
            info.AddValue("m12", value.m12);
            info.AddValue("m13", value.m13);
            info.AddValue("m20", value.m20);
            info.AddValue("m21", value.m21);
            info.AddValue("m22", value.m22);
            info.AddValue("m23", value.m23);
            info.AddValue("m30", value.m30);
            info.AddValue("m31", value.m31);
            info.AddValue("m32", value.m32);
            info.AddValue("m33", value.m33);
        }
        private CameraExtrinsics GetExtrinsics(SpatialCoordinateSystem frameCoordinateSystem)
        {
            if (frameCoordinateSystem == null)
            {
                return(null);
            }

            CameraExtrinsics extrinsics = null;

            if (rootCoordinateSystem == null)
            {
                return(null);
            }

            System.Numerics.Matrix4x4?worldMatrix = frameCoordinateSystem.TryGetTransformTo(rootCoordinateSystem);

            if (worldMatrix.HasValue)
            {
                WindowsVector3    position;
                WindowsVector3    scale;
                WindowsQuaternion rotation;
                WindowsMatrix4x4.Decompose(worldMatrix.Value, out scale, out rotation, out position);

                WindowsVector3 forward = WindowsVector3.Transform(-WindowsVector3.UnitZ, rotation);
                WindowsVector3 up      = WindowsVector3.Transform(WindowsVector3.UnitY, rotation);

                Matrix4x4 unityWorldMatrix = Matrix4x4.TRS(WindowsVectorToUnityVector(position), Quaternion.LookRotation(WindowsVectorToUnityVector(forward), WindowsVectorToUnityVector(up)), Vector3.one);

                extrinsics = new CameraExtrinsics()
                {
                    ViewFromWorld = unityWorldMatrix
                };
            }

            return(extrinsics);
        }
        public static bool GetTransform(MetaCoreInterop.MetaCoordinateFrame destination, MetaCoreInterop.MetaCoordinateFrame source, ref Matrix4x4 matrix)
        {
            MetaCoreInterop.MetaMatrix44 mat = new MetaCoreInterop.MetaMatrix44();
            if (!MetaCoreInterop.meta_get_transform(destination, source, ref mat))
            {
                return(false);
            }

            matrix[0, 0] = mat.m00;
            matrix[0, 1] = mat.m01;
            matrix[0, 2] = mat.m02;
            matrix[0, 3] = mat.m03;

            matrix[1, 0] = mat.m10;
            matrix[1, 1] = mat.m11;
            matrix[1, 2] = mat.m12;
            matrix[1, 3] = mat.m13;

            matrix[2, 0] = mat.m20;
            matrix[2, 1] = mat.m21;
            matrix[2, 2] = mat.m22;
            matrix[2, 3] = mat.m23;

            matrix[3, 0] = mat.m30;
            matrix[3, 1] = mat.m31;
            matrix[3, 2] = mat.m32;
            matrix[3, 3] = mat.m33;

            // conver from right to left handed coordinate system
            Matrix4x4 m_right_to_left = Matrix4x4.identity;

            m_right_to_left[1, 1] *= -1;
            matrix = m_right_to_left * matrix * m_right_to_left.inverse;

            return(true);
        }
 public CmdMaterialSetMatrix(Guid _materialGuid, string _name, UnityEngine.Matrix4x4 _value)
 {
     materialGuid = _materialGuid;
     name         = _name;
     value        = _value;
 }
Exemple #27
0
 static bool GetExtrudedVertices(UnsafeList <SegmentVertex> shapeVertices, Range range, Matrix4x4 matrix0, Matrix4x4 matrix1, in ChiselBlobBuilder builder, ref BrushMeshBlob root, out ChiselBlobBuilderArray <float3> localVertices, out NativeArray <int> segmentIndices, Allocator allocator)
        public static bool GeneratePathedStairs(ref ChiselBrushContainer brushContainer, ref ChiselPathedStairsDefinition definition)
        {
            definition.Validate();

            var shapeVertices       = new List <Vector2>();
            var shapeSegmentIndices = new List <int>();

            GetPathVertices(definition.shape, definition.curveSegments, shapeVertices, shapeSegmentIndices);

            var totalSubMeshCount = 0;

            for (int i = 0; i < shapeVertices.Count; i++)
            {
                if (i == 0 && !definition.shape.closed)
                {
                    continue;
                }

                var leftSide  = (!definition.shape.closed && i == 1) ? definition.stairs.leftSide  : StairsSideType.None;
                var rightSide = (!definition.shape.closed && i == shapeVertices.Count - 1) ? definition.stairs.rightSide : StairsSideType.None;

                totalSubMeshCount += BrushMeshFactory.GetLinearStairsSubMeshCount(definition.stairs, leftSide, rightSide);
            }
            if (totalSubMeshCount == 0)
            {
                return(false);
            }

            //			var stairDirections = definition.shape.closed ? shapeVertices.Count : (shapeVertices.Count - 1);

            brushContainer.EnsureSize(totalSubMeshCount);

            var depth  = definition.stairs.depth;
            var height = definition.stairs.height;

            var halfDepth  = depth * 0.5f;
            var halfHeight = height * 0.5f;

            int subMeshIndex = 0;

            for (int vi0 = shapeVertices.Count - 3, vi1 = shapeVertices.Count - 2, vi2 = shapeVertices.Count - 1, vi3 = 0; vi3 < shapeVertices.Count; vi0 = vi1, vi1 = vi2, vi2 = vi3, vi3++)
            {
                if (vi2 == 0 && !definition.shape.closed)
                {
                    continue;
                }

                // TODO: optimize this, we're probably redoing a lot of stuff for every iteration
                var v0 = shapeVertices[vi0];
                var v1 = shapeVertices[vi1];
                var v2 = shapeVertices[vi2];
                var v3 = shapeVertices[vi3];

                var m0 = (v0 + v1) * 0.5f;
                var m1 = (v1 + v2) * 0.5f;
                var m2 = (v2 + v3) * 0.5f;

                var d0 = (v1 - v0);
                var d1 = (v2 - v1);
                var d2 = (v3 - v2);

                var maxWidth0  = d0.magnitude;
                var maxWidth1  = d1.magnitude;
                var maxWidth2  = d2.magnitude;
                var halfWidth1 = d1 * 0.5f;

                d0 /= maxWidth0;
                d1 /= maxWidth1;
                d2 /= maxWidth2;

                var depthVector = new Vector3(d1.y, 0, -d1.x);
                var lineCenter  = new Vector3(m1.x, halfHeight, m1.y) - (depthVector * halfDepth);

                var depthVector0 = new Vector2(d0.y, -d0.x) * depth;
                var depthVector1 = new Vector2(d1.y, -d1.x) * depth;
                var depthVector2 = new Vector2(d2.y, -d2.x) * depth;

                m0 -= depthVector0;
                m1 -= depthVector1;
                m2 -= depthVector2;

                Vector2 output;
                var     leftShear  = Intersect(m1, d1, m0, d0, out output) ?  Vector2.Dot(d1, (output - (m1 - halfWidth1))) : 0;
                var     rightShear = Intersect(m1, d1, m2, d2, out output) ? -Vector2.Dot(d1, (output - (m1 + halfWidth1))) : 0;

                var transform = Matrix4x4.TRS(lineCenter,                                       // move to center of line
                                              Quaternion.LookRotation(depthVector, Vector3.up), // rotate to align with line
                                              Vector3.one);

                // set the width to the width of the line
                definition.stairs.width       = maxWidth1;
                definition.stairs.nosingWidth = 0;

                var leftSide     = (!definition.shape.closed && vi2 == 1) ? definition.stairs.leftSide  : StairsSideType.None;
                var rightSide    = (!definition.shape.closed && vi2 == shapeVertices.Count - 1) ? definition.stairs.rightSide : StairsSideType.None;
                var subMeshCount = BrushMeshFactory.GetLinearStairsSubMeshCount(definition.stairs, leftSide, rightSide);
                if (subMeshCount == 0)
                {
                    continue;
                }

                if (!BrushMeshFactory.GenerateLinearStairsSubMeshes(ref brushContainer, definition.stairs, leftSide, rightSide, subMeshIndex))
                {
                    return(false);
                }

                var halfWidth = maxWidth1 * 0.5f;
                for (int m = 0; m < subMeshCount; m++)
                {
                    var vertices = brushContainer.brushMeshes[subMeshIndex + m].vertices;
                    for (int v = 0; v < vertices.Length; v++)
                    {
                        // TODO: is it possible to put all of this in a single matrix?
                        // lerp the stairs to go from less wide to wider depending on the depth of the vertex
                        var depthFactor = 1.0f - ((vertices[v].z / definition.stairs.depth) + 0.5f);
                        var wideFactor  = (vertices[v].x / halfWidth) + 0.5f;
                        var scale       = (vertices[v].x / halfWidth);

                        // lerp the stairs width depending on if it's on the left or right side of the stairs
                        vertices[v].x = Mathf.Lerp(scale * (halfWidth - (rightShear * depthFactor)),
                                                   scale * (halfWidth - (leftShear * depthFactor)),
                                                   wideFactor);
                        vertices[v] = transform.MultiplyPoint(vertices[v]);
                    }
                }

                subMeshIndex += subMeshCount;
            }
            return(false);
        }
 public static T Create <T>(string name, ChiselModel model, Matrix4x4 trsMatrix) where T : ChiselNode
 {
     return(Create <T>(name, model ? model.transform : null, trsMatrix));
 }
 public static T Create <T>(Matrix4x4 trsMatrix) where T : ChiselNode
 {
     return(Create <T>(null, (UnityEngine.Transform)null, trsMatrix));
 }