UnityEditor.CharacterControllerEditor.SizeHandle C# (CSharp) Method

SizeHandle() private static method

private static SizeHandle ( Vector3 localPos, Vector3 localPullDir, Matrix4x4 matrix, bool isEdgeHandle ) : float
localPos Vector3
localPullDir Vector3
matrix UnityEngine.Matrix4x4
isEdgeHandle bool
return float
        private static float SizeHandle(Vector3 localPos, Vector3 localPullDir, Matrix4x4 matrix, bool isEdgeHandle)
        {
            float num3;
            Vector3 rhs = matrix.MultiplyVector(localPullDir);
            Vector3 position = matrix.MultiplyPoint(localPos);
            float handleSize = HandleUtility.GetHandleSize(position);
            bool changed = GUI.changed;
            GUI.changed = false;
            Color color = Handles.color;
            float num2 = 0f;
            if (isEdgeHandle)
            {
                num2 = Mathf.Cos(0.7853982f);
            }
            if (Camera.current.orthographic)
            {
                num3 = Vector3.Dot(-Camera.current.transform.forward, rhs);
            }
            else
            {
                Vector3 vector3 = Camera.current.transform.position - position;
                num3 = Vector3.Dot(vector3.normalized, rhs);
            }
            if (num3 < -num2)
            {
                Handles.color = new Color(Handles.color.r, Handles.color.g, Handles.color.b, Handles.color.a * Handles.backfaceAlphaMultiplier);
            }
            if (<>f__mg$cache0 == null)
            {
                <>f__mg$cache0 = new Handles.CapFunction(Handles.DotHandleCap);

Usage Example

        public void OnSceneGUI()
        {
            bool flag = GUIUtility.hotControl == this.m_HandleControlID;
            CharacterController characterController = (CharacterController)this.target;
            Color color = Handles.color;

            if (characterController.enabled)
            {
                Handles.color = Handles.s_ColliderHandleColor;
            }
            else
            {
                Handles.color = Handles.s_ColliderHandleColorDisabled;
            }
            bool enabled = GUI.enabled;

            if (!Event.current.shift && !flag)
            {
                GUI.enabled   = false;
                Handles.color = new Color(1f, 0f, 0f, 0.001f);
            }
            float num  = characterController.height * characterController.transform.lossyScale.y;
            float num2 = characterController.radius * Mathf.Max(characterController.transform.lossyScale.x, characterController.transform.lossyScale.z);

            num = Mathf.Max(num, num2 * 2f);
            Matrix4x4 matrix     = Matrix4x4.TRS(characterController.transform.TransformPoint(characterController.center), Quaternion.identity, Vector3.one);
            int       hotControl = GUIUtility.hotControl;
            Vector3   vector     = Vector3.up * num * 0.5f;
            float     num3       = CharacterControllerEditor.SizeHandle(vector, Vector3.up, matrix, true);

            if (!GUI.changed)
            {
                num3 = CharacterControllerEditor.SizeHandle(-vector, Vector3.down, matrix, true);
            }
            if (GUI.changed)
            {
                Undo.RecordObject(characterController, "Character Controller Resize");
                float num4 = num / characterController.height;
                characterController.height += num3 / num4;
            }
            num3 = CharacterControllerEditor.SizeHandle(Vector3.left * num2, Vector3.left, matrix, true);
            if (!GUI.changed)
            {
                num3 = CharacterControllerEditor.SizeHandle(-Vector3.left * num2, -Vector3.left, matrix, true);
            }
            if (!GUI.changed)
            {
                num3 = CharacterControllerEditor.SizeHandle(Vector3.forward * num2, Vector3.forward, matrix, true);
            }
            if (!GUI.changed)
            {
                num3 = CharacterControllerEditor.SizeHandle(-Vector3.forward * num2, -Vector3.forward, matrix, true);
            }
            if (GUI.changed)
            {
                Undo.RecordObject(characterController, "Character Controller Resize");
                float num5 = num2 / characterController.radius;
                characterController.radius += num3 / num5;
            }
            if (hotControl != GUIUtility.hotControl && GUIUtility.hotControl != 0)
            {
                this.m_HandleControlID = GUIUtility.hotControl;
            }
            if (GUI.changed)
            {
                characterController.radius = Mathf.Max(characterController.radius, 1E-05f);
                characterController.height = Mathf.Max(characterController.height, 1E-05f);
            }
            Handles.color = color;
            GUI.enabled   = enabled;
        }
All Usage Examples Of UnityEditor.CharacterControllerEditor::SizeHandle