Ejemplo n.º 1
0
        private void DrawObjects(GameObject go)
        {
            var comp = go.GetComponents <Collider>();

            var engineMod = go.GetComponent <ModuleEngines>();

            if (engineMod != null)
            {
                for (var i = 0; i < engineMod.thrustTransforms.Count; i++)
                {
                    DrawTools.DrawTransform(engineMod.thrustTransforms[i], 0.3f);
                }
            }

            for (var i = 0; i < comp.Length; i++)
            {
                var baseCol = comp[i];

                if (baseCol.transform.name == "Surface Attach Collider")
                {
                    continue;
                }

                var colliderTransformScale = baseCol.transform.lossyScale;
                var colliderScale          = Mathf.Max(Mathf.Abs(colliderTransformScale.x), Mathf.Abs(colliderTransformScale.y),
                                                       Mathf.Abs(colliderTransformScale.z));

                if (baseCol is BoxCollider)
                {
                    var box = baseCol as BoxCollider;
                    DrawTools.DrawLocalCube(box.transform, box.size, XKCDColors.Yellow, box.center);
                }
                else if (baseCol is SphereCollider)
                {
                    var sphere = baseCol as SphereCollider;

                    DrawTools.DrawSphere(sphere.transform.TransformPoint(sphere.center), XKCDColors.Red, sphere.radius * colliderScale);
                }
                else if (baseCol is CapsuleCollider)
                {
                    var caps = baseCol as CapsuleCollider;

                    var dir = new Vector3(caps.direction == 0 ? 1 : 0, caps.direction == 1 ? 1 : 0,
                                          caps.direction == 2 ? 1 : 0);
                    var top    = caps.transform.TransformPoint(caps.center + caps.height * 0.5f * dir);
                    var bottom = caps.transform.TransformPoint(caps.center - caps.height * 0.5f * dir);

                    DrawTools.DrawCapsule(top, bottom, XKCDColors.Green, caps.radius * colliderScale);
                }
                else if (baseCol is MeshCollider)
                {
                    var mesh = baseCol as MeshCollider;
                    DrawTools.DrawLocalMesh(mesh.transform, mesh.sharedMesh, XKCDColors.ElectricBlue);
                }

                /* Doesn't work even a little bit, disabling for now
                 * else if (baseCol is WheelCollider)
                 * {
                 *      var wheel = baseCol as WheelCollider;
                 *
                 *      Vector3 pos;
                 *      WheelHit wheelHit;
                 *      if (wheel.GetGroundHit(out wheelHit))
                 *      {
                 *              pos = wheelHit.point + (wheel.transform.up * wheel.radius);
                 *      }
                 *      else
                 *      {
                 *              pos = wheel.transform.position - (wheel.transform.up * wheel.suspensionDistance);
                 *      }
                 *
                 *      DrawTools.DrawCircle(pos, wheel.transform.right, XKCDColors.Pink, wheel.radius);
                 * }
                 */
            }

            for (var i = 0; i < go.transform.childCount; i++)
            {
                var child = go.transform.GetChild(i).gameObject;

                if (!child.GetComponent <Part>() && child.name != "main _camera pivot")
                {
                    DrawObjects(child);
                }
            }
        }
Ejemplo n.º 2
0
 // ReSharper disable once InconsistentNaming
 public void OnGUI()
 {
     DrawTools.NewFrame();
 }