コード例 #1
0
    void OnSceneGUI() // visualise the joint location
    {
        CustomIKSolver t = (target as CustomIKSolver);

        if (t.Visualise)
        {
            //Handles.BeginGUI();

            Handles.color = new Color(1.0f, .6f, 0.0f);
            for (int i = 0; i < t.Joints.Count; i++)
            {
                Handles.DrawWireDisc(t.Joints[i].transform.position, t.Joints[i].transform.up, 1.0f);
            }
            //Handles.EndGUI();
        }
    }
コード例 #2
0
    public override void OnInspectorGUI()
    {
        GUI.skin = Skin;
        CustomIKSolver t = target as CustomIKSolver;

        serializedObject.Update();

        EditorGUILayout.PrefixLabel(new GUIContent(IKTexture));
        //GUI.color = new Color(61.0f / 255.0f, 147.0f / 255.0f, 160.0f / 255.0f);

        EditorGUILayout.BeginHorizontal("box");
        t.label = EditorGUILayout.TextField(t.label); // draw name box
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginVertical("box"); // 0
        EditorGUILayout.BeginHorizontal("box");
        GUILayout.Label(new GUIContent(IKTexture), GUILayout.Width(16));
        if (GUILayout.Button("Joints"))     // draw joints
        {
            IKActive = !IKActive;
        }

        EditorGUILayout.EndHorizontal();

        if (IKActive)
        {
            EditorGUI.indentLevel++;

            // Enter the array

            if (t.Joints.Count > 0)
            {
                JointsProp = serializedObject.FindProperty("Joints");
                JointsProp.Next(true);
                JointsProp.Next(true);
                JointsProp.Next(true);
            }
            //

            // loop through array
            for (int i = 0; i < t.Joints.Count; i++)
            {
                GUI.color = new Color(1, 1, 1);

                EditorGUILayout.BeginVertical("box"); // 1
                EditorGUILayout.BeginHorizontal();    // 1

                if (t.Joints[i] != null)
                {
                    EditorGUILayout.LabelField(new GUIContent(t.Joints[i].name), GUILayout.Width(100));
                }
                else
                {
                    EditorGUILayout.LabelField(new GUIContent("!Empty!"), GUILayout.Width(100));
                }

                EditorGUILayout.PropertyField(JointsProp);
                if (GUILayout.Button("X")) // remove
                {
                    t.Joints.RemoveAt(i);
                }


                EditorGUILayout.EndHorizontal(); // 1

                if (t.Joints[i] != null)
                {
                    EditorGUILayout.BeginHorizontal(); // 2
                    if (!t.Joints[i].detailToggle)
                    {
                        GUILayout.Label(new GUIContent(PlusTexture), GUILayout.Width(16));
                    }
                    else
                    {
                        GUILayout.Label(new GUIContent(MinusTexture), GUILayout.Width(16));
                    }

                    if (GUILayout.Button("Details", GUILayout.Width(100 - 16))) //
                    {
                        t.Joints[i].detailToggle = !t.Joints[i].detailToggle;
                    }
                    EditorGUILayout.EndHorizontal(); // 2

                    if (t.Joints[i].detailToggle)
                    {
                        GUILayout.Label(new GUIContent("Start Offset: " + t.Joints[i].transform.localPosition));
                        GUILayout.Label(new GUIContent("Position: " + t.Joints[i].transform.position));
                    }
                }

                EditorGUILayout.EndVertical();// 1

                GUI.color = Color.white;
                JointsProp.Next(false);
            }


            // add
            EditorGUILayout.BeginHorizontal("box");

            GUILayout.Label(new GUIContent(PlusTexture), GUILayout.Width(16));
            if (GUILayout.Button("ADD"))
            {
                t.Joints.Add(null);
            }
            GUILayout.Label(new GUIContent(PlusTexture), GUILayout.Width(16));

            EditorGUILayout.EndHorizontal();



            EditorGUI.indentLevel--;
        }

        EditorGUILayout.EndVertical(); // 0


        EditorGUILayout.BeginVertical("box");

        EditorGUILayout.PropertyField(AnkleProp);
        EditorGUILayout.PropertyField(TargetProp);
        EditorGUILayout.PropertyField(ItterationsProp);
        serializedObject.ApplyModifiedProperties();

        GUILayout.Space(20);

        t.Visualise = EditorGUILayout.Toggle("Visualise:", t.Visualise);

        EditorGUILayout.EndVertical();

        GUILayout.Space(20);
        //base.OnInspectorGUI();
    }