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; }
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); }
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)); }
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); }
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); }
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); }
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); }
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; }
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); }
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!")); }
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); }
/** 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; } }
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)); } }
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)); } }
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; }
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)); }