//Bullet calls this so I can copy bullet data to unity public override void SetWorldTransform(ref Matrix m) { /* * BulletSharp.Math.Vector3 pos = m.Origin; * UnityEngine.Quaternion q = new UnityEngine.Quaternion(); * q.w = Mathf.Sqrt(Mathf.Max(0, 1 + m[0, 0] + m[1, 1] + m[2, 2])) / 2; * q.x = Mathf.Sqrt(Mathf.Max(0, 1 + m[0, 0] - m[1, 1] - m[2, 2])) / 2; * q.y = Mathf.Sqrt(Mathf.Max(0, 1 - m[0, 0] + m[1, 1] - m[2, 2])) / 2; * q.z = Mathf.Sqrt(Mathf.Max(0, 1 - m[0, 0] - m[1, 1] + m[2, 2])) / 2; * q.x *= Mathf.Sign(q.x * (m[1, 2] - m[2, 1])); * q.y *= Mathf.Sign(q.y * (m[2, 0] - m[0, 2])); * q.z *= Mathf.Sign(q.z * (m[0, 1] - m[1, 2])); */ //todo not very efficient /* * Matrix4x4 mu = m.ToUnity(); * UnityEngine.Vector3 p = BSExtensionMethods.ExtractTranslationFromMatrix(ref mu); * UnityEngine.Quaternion q = BSExtensionMethods.ExtractRotationFromMatrix(ref mu); * UnityEngine.Vector3 sc = BSExtensionMethods.ExtractScaleFromMatrix(ref mu); * * UnityEngine.Vector3 p1 = BSExtensionMethods.ExtractTranslationFromMatrix(ref m); * UnityEngine.Quaternion q1 = BSExtensionMethods.ExtractRotationFromMatrix(ref m); * UnityEngine.Vector3 sc1 = BSExtensionMethods.ExtractScaleFromMatrix(ref m); * * if (p != p1) Debug.Log("Dont match p " + p + " " + p1); * if (q != q1) Debug.Log("Dont match q " + q + " " + q1); * if (sc != sc1) Debug.Log("Dont match p " + sc + " " + sc1); */ transform.position = BSExtensionMethods2.ExtractTranslationFromMatrix(ref m); transform.rotation = BSExtensionMethods2.ExtractRotationFromMatrix(ref m); transform.localScale = BSExtensionMethods2.ExtractScaleFromMatrix(ref m); }
public override void DrawSphere(float radius, ref Matrix trans, ref Vector3 color) { UnityEngine.Vector3 pos = BSExtensionMethods2.ExtractTranslationFromMatrix(ref trans); UnityEngine.Quaternion rot = BSExtensionMethods2.ExtractRotationFromMatrix(ref trans); UnityEngine.Vector3 scale = BSExtensionMethods2.ExtractScaleFromMatrix(ref trans); UnityEngine.Color c = new UnityEngine.Color(color.X, color.Y, color.Z); BUtility.DebugDrawSphere(pos, rot, scale, UnityEngine.Vector3.one * radius, c); }
public override void DrawPlane(ref Vector3 planeNormal, float planeConst, ref Matrix trans, ref Vector3 color) { UnityEngine.Vector3 pos = BSExtensionMethods2.ExtractTranslationFromMatrix(ref trans); UnityEngine.Quaternion rot = BSExtensionMethods2.ExtractRotationFromMatrix(ref trans); UnityEngine.Vector3 scale = BSExtensionMethods2.ExtractScaleFromMatrix(ref trans); UnityEngine.Color c = new UnityEngine.Color(color.X, color.Y, color.Z); BUtility.DebugDrawPlane(pos, rot, scale, planeNormal.ToUnity(), planeConst, c); }
public override void DrawCylinder(float radius, float halfHeight, int upAxis, ref Matrix trans, ref Vector3 color) { UnityEngine.Vector3 pos = BSExtensionMethods2.ExtractTranslationFromMatrix(ref trans); UnityEngine.Quaternion rot = BSExtensionMethods2.ExtractRotationFromMatrix(ref trans); UnityEngine.Vector3 scale = BSExtensionMethods2.ExtractScaleFromMatrix(ref trans); UnityEngine.Color c = new UnityEngine.Color(color.X, color.Y, color.Z); BUtility.DebugDrawCylinder(pos, rot, scale, radius, halfHeight, upAxis, c); }
public void FixedUpdate() { BulletSharp.Math.Matrix trans; m_collisionObject.GetWorldTransform(out trans); transform.position = BSExtensionMethods2.ExtractTranslationFromMatrix(ref trans); transform.rotation = BSExtensionMethods2.ExtractRotationFromMatrix(ref trans); transform.localScale = BSExtensionMethods2.ExtractScaleFromMatrix(ref trans); }
public override void DrawBox(ref Vector3 bbMin, ref Vector3 bbMax, ref Matrix trans, ref Vector3 color) { UnityEngine.Vector3 pos = BSExtensionMethods2.ExtractTranslationFromMatrix(ref trans); UnityEngine.Quaternion rot = BSExtensionMethods2.ExtractRotationFromMatrix(ref trans); UnityEngine.Vector3 scale = BSExtensionMethods2.ExtractScaleFromMatrix(ref trans); UnityEngine.Vector3 size = (bbMax - bbMin).ToUnity(); UnityEngine.Color c = new UnityEngine.Color(color.X, color.Y, color.Z); BUtility.DebugDrawBox(pos, rot, scale, size, c); }
public override void DrawSphere(float radius, ref BM.Matrix trans, ref BM.Vector3 color) { Vector3 pos = BSExtensionMethods2.ExtractTranslationFromMatrix(ref trans); Quaternion rot = BSExtensionMethods2.ExtractRotationFromMatrix(ref trans); Vector3 scale = BSExtensionMethods2.ExtractScaleFromMatrix(ref trans); Color c = new Color(color.X, color.Y, color.Z); BUtility.DebugDrawSphere(pos, rot, scale, radius, c); }
public override void DrawTransform(ref Matrix trans, float orthoLen) { UnityEngine.Vector3 pos = BSExtensionMethods2.ExtractTranslationFromMatrix(ref trans); UnityEngine.Quaternion rot = BSExtensionMethods2.ExtractRotationFromMatrix(ref trans); UnityEngine.Vector3 scale = BSExtensionMethods2.ExtractScaleFromMatrix(ref trans); UnityEngine.Vector3 p1 = pos + rot * UnityEngine.Vector3.up * orthoLen; UnityEngine.Vector3 p2 = pos - rot * UnityEngine.Vector3.up * orthoLen; UnityEngine.Gizmos.DrawLine(p1, p2); p1 = pos + rot * UnityEngine.Vector3.right * orthoLen; p2 = pos - rot * UnityEngine.Vector3.right * orthoLen; UnityEngine.Gizmos.DrawLine(p1, p2); p1 = pos + rot * UnityEngine.Vector3.forward * orthoLen; p2 = pos - rot * UnityEngine.Vector3.forward * orthoLen; UnityEngine.Gizmos.DrawLine(p1, p2); }
//Bullet calls this so I can copy bullet data to unity public override void SetWorldTransform(ref BM.Matrix m) { transform.position = BSExtensionMethods2.ExtractTranslationFromMatrix(ref m); transform.rotation = BSExtensionMethods2.ExtractRotationFromMatrix(ref m); transform.localScale = BSExtensionMethods2.ExtractScaleFromMatrix(ref m); }