public override void DrawArc(ref BM.Vector3 center, ref BM.Vector3 normal, ref BM.Vector3 axis, float radiusA, float radiusB, float minAngle, float maxAngle,
                                     ref BM.Vector3 color, bool drawSect, float stepDegrees)
        {
            var col = new Color(color.X, color.Y, color.Z);

            BUtility.DebugDrawArc(center.ToUnity(), normal.ToUnity(), axis.ToUnity(), radiusA, radiusB, minAngle, maxAngle, col, drawSect, stepDegrees);
        }
 //Draw Shape Gizmo
 protected override void OnDrawGizmosSelected()
 {
     if (!DrawGizmo)
     {
         return;
     }
     BUtility.DebugDrawCone(transform.position, transform.rotation, transform.localScale, _radius, _height, 1, GizmoColor);
 }
 //Draw Shape Gizmo
 protected override void OnDrawGizmosSelected()
 {
     if (!DrawGizmo)
     {
         return;
     }
     BUtility.DebugDrawCylinder(transform.position, transform.rotation, transform.localScale, _halfExtents.x, _halfExtents.y, 1, GizmoColor);
 }
        public override void DrawSphere(float radius, ref BM.Matrix trans, ref BM.Vector3 color)
        {
            var pos   = BulletExtensionMethods.ExtractTranslationFromMatrix(ref trans);
            var rot   = BulletExtensionMethods.ExtractRotationFromMatrix(ref trans);
            var scale = BulletExtensionMethods.ExtractScaleFromMatrix(ref trans);
            var c     = new Color(color.X, color.Y, color.Z);

            BUtility.DebugDrawSphere(pos, rot, scale, Vector3.one * radius, c);
        }
        public override void DrawPlane(ref BM.Vector3 planeNormal, float planeConst, ref BM.Matrix trans, ref BM.Vector3 color)
        {
            var pos   = BulletExtensionMethods.ExtractTranslationFromMatrix(ref trans);
            var rot   = BulletExtensionMethods.ExtractRotationFromMatrix(ref trans);
            var scale = BulletExtensionMethods.ExtractScaleFromMatrix(ref trans);
            var c     = new 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 BM.Matrix trans, ref BM.Vector3 color)
        {
            var pos   = BulletExtensionMethods.ExtractTranslationFromMatrix(ref trans);
            var rot   = BulletExtensionMethods.ExtractRotationFromMatrix(ref trans);
            var scale = BulletExtensionMethods.ExtractScaleFromMatrix(ref trans);
            var c     = new Color(color.X, color.Y, color.Z);

            BUtility.DebugDrawCylinder(pos, rot, scale, radius, halfHeight, upAxis, c);
        }
        public override void DrawBox(ref BM.Vector3 bbMin, ref BM.Vector3 bbMax, ref BM.Matrix trans, ref BM.Vector3 color)
        {
            var pos   = BulletExtensionMethods.ExtractTranslationFromMatrix(ref trans);
            var rot   = BulletExtensionMethods.ExtractRotationFromMatrix(ref trans);
            var scale = BulletExtensionMethods.ExtractScaleFromMatrix(ref trans);
            var size  = (bbMax - bbMin).ToUnity();
            var c     = new Color(color.X, color.Y, color.Z);

            BUtility.DebugDrawBox(pos, rot, scale, size, c);
        }
        public override void DrawSphere(ref BM.Vector3 p, float radius, ref BM.Vector3 color)
        {
            var c = new Color(color.X, color.Y, color.Z);

            BUtility.DebugDrawSphere(p.ToUnity(), Quaternion.identity, Vector3.one, Vector3.one * radius, c);
        }