protected override void DrawWireframe() { CapsuleBoundsHandle.HeightAxis vector3Axis = CapsuleBoundsHandle.HeightAxis.Y; CapsuleBoundsHandle.HeightAxis vector3Axis2 = CapsuleBoundsHandle.HeightAxis.Z; CapsuleBoundsHandle.HeightAxis heightAxis = this.heightAxis; if (heightAxis != CapsuleBoundsHandle.HeightAxis.Y) { if (heightAxis == CapsuleBoundsHandle.HeightAxis.Z) { vector3Axis = CapsuleBoundsHandle.HeightAxis.X; vector3Axis2 = CapsuleBoundsHandle.HeightAxis.Y; } } else { vector3Axis = CapsuleBoundsHandle.HeightAxis.Z; vector3Axis2 = CapsuleBoundsHandle.HeightAxis.X; } bool flag = base.IsAxisEnabled((int)this.heightAxis); bool flag2 = base.IsAxisEnabled((int)vector3Axis); bool flag3 = base.IsAxisEnabled((int)vector3Axis2); Vector3 vector = CapsuleBoundsHandle.s_HeightAxes[this.m_HeightAxis]; Vector3 vector2 = CapsuleBoundsHandle.s_HeightAxes[CapsuleBoundsHandle.s_NextAxis[this.m_HeightAxis]]; Vector3 vector3 = CapsuleBoundsHandle.s_HeightAxes[CapsuleBoundsHandle.s_NextAxis[CapsuleBoundsHandle.s_NextAxis[this.m_HeightAxis]]]; float radius = this.radius; float height = this.height; Vector3 vector4 = base.center + vector * (height * 0.5f - radius); Vector3 vector5 = base.center - vector * (height * 0.5f - radius); if (flag) { if (flag3) { Handles.DrawWireArc(vector4, vector2, vector3, 180f, radius); Handles.DrawWireArc(vector5, vector2, vector3, -180f, radius); Handles.DrawLine(vector4 + vector3 * radius, vector5 + vector3 * radius); Handles.DrawLine(vector4 - vector3 * radius, vector5 - vector3 * radius); } if (flag2) { Handles.DrawWireArc(vector4, vector3, vector2, -180f, radius); Handles.DrawWireArc(vector5, vector3, vector2, 180f, radius); Handles.DrawLine(vector4 + vector2 * radius, vector5 + vector2 * radius); Handles.DrawLine(vector4 - vector2 * radius, vector5 - vector2 * radius); } } if (flag2 && flag3) { Handles.DrawWireArc(vector4, vector, vector2, 360f, radius); Handles.DrawWireArc(vector5, vector, vector2, -360f, radius); } }
/// <summary> /// 绘制 Capsule 调节框 /// </summary> public static void CapsuleHandle(Transform transform, ref Vector3 center, ref float radius, ref float height, Color color, CapsuleBoundsHandle.HeightAxis axis) { using (new HandlesMatrixScope(transform.localToWorldMatrix)) { CapsuleHandle(ref center, ref radius, ref height, color, axis); } }
/// <summary> /// 绘制 Capsule 调节框 /// </summary> public static void CapsuleHandle(ref Vector3 center, ref float radius, ref float height, Color color, CapsuleBoundsHandle.HeightAxis axis) { capsuleBoundsHandle.center = center; capsuleBoundsHandle.radius = radius; capsuleBoundsHandle.height = height; capsuleBoundsHandle.heightAxis = axis; capsuleBoundsHandle.SetColor(color); capsuleBoundsHandle.DrawHandle(); center = capsuleBoundsHandle.center; radius = capsuleBoundsHandle.radius; height = capsuleBoundsHandle.height; }
public static void CapsuleBoundsHandle(Vector3 center, Quaternion rotation, Vector3 size, ref float height, ref float radius, CapsuleBoundsHandle.HeightAxis heightAxis, PrimitiveBoundsHandle.Axes handleAxes, Color handleColor, Color wireframeColor) { Matrix4x4 trs = Matrix4x4.TRS(center, rotation, size); using (new Handles.DrawingScope(trs)) { capsuleBoundsHandle.heightAxis = heightAxis; capsuleBoundsHandle.axes = handleAxes; capsuleBoundsHandle.radius = radius; capsuleBoundsHandle.height = height; capsuleBoundsHandle.handleColor = handleColor; capsuleBoundsHandle.wireframeColor = wireframeColor; capsuleBoundsHandle.DrawHandle(); radius = capsuleBoundsHandle.radius; height = capsuleBoundsHandle.height; } }
public static void CapsuleBoundsHandle(Vector3 center, Quaternion rotation, Vector3 size, ref float height, ref float radius, CapsuleBoundsHandle.HeightAxis heightAxis, PrimitiveBoundsHandle.Axes handleAxes) { CapsuleBoundsHandle(center, rotation, size, ref height, ref radius, heightAxis, handleAxes, capsuleBoundsHandle.handleColor, capsuleBoundsHandle.wireframeColor); }