예제 #1
0
        static void CreateIkCCD(MenuCommand menuCommand)
        {
            GameObject ikCCD = new GameObject("New Ik CCD");

            Undo.RegisterCreatedObjectUndo(ikCCD, "Crate Ik CCD");

            IkCCD2D ikCCDComponent = ikCCD.AddComponent <IkCCD2D>();

            ikCCD.transform.position = GetDefaultInstantiatePosition();

            GameObject selectedGO = Selection.activeGameObject;

            if (selectedGO)
            {
                ikCCD.transform.parent        = selectedGO.transform;
                ikCCD.transform.localPosition = Vector3.zero;

                Bone2D selectedBone = selectedGO.GetComponent <Bone2D>();

                if (selectedBone)
                {
                    ikCCD.transform.parent   = selectedBone.root.transform.parent;
                    ikCCD.transform.position = selectedBone.endPosition;
                    ikCCDComponent.numBones  = selectedBone.chainLength;
                    ikCCDComponent.target    = selectedBone;
                }
            }

            ikCCD.transform.rotation   = Quaternion.identity;
            ikCCD.transform.localScale = Vector3.one;

            Selection.activeGameObject = ikCCD;
        }
예제 #2
0
        override public void OnInspectorGUI()
        {
            IkCCD2D ikCCD2D = target as IkCCD2D;

            base.OnInspectorGUI();

            SerializedProperty numBonesProp   = serializedObject.FindProperty("m_NumBones");
            SerializedProperty iterationsProp = serializedObject.FindProperty("iterations");
            SerializedProperty dampingProp    = serializedObject.FindProperty("damping");

            Bone2D targetBone = ikCCD2D.target;

            serializedObject.Update();

            EditorGUI.BeginDisabledGroup(!targetBone);

            EditorGUI.BeginChangeCheck();

            int chainLength = 0;

            if (targetBone)
            {
                chainLength = targetBone.chainLength;
            }

            EditorGUILayout.IntSlider(numBonesProp, 0, chainLength);

            if (EditorGUI.EndChangeCheck())
            {
                Undo.RegisterCompleteObjectUndo(ikCCD2D, "Set num bones");

                IkUtils.InitializeIk2D(serializedObject);
                EditorUpdater.SetDirty("Set num bones");
            }

            EditorGUI.EndDisabledGroup();

            EditorGUI.BeginChangeCheck();

            EditorGUILayout.PropertyField(iterationsProp);
            EditorGUILayout.PropertyField(dampingProp);

            if (EditorGUI.EndChangeCheck())
            {
                EditorUpdater.SetDirty(Undo.GetCurrentGroupName());
            }

            serializedObject.ApplyModifiedProperties();
        }