Esempio n. 1
0
        static void CreateSpline()
        {
            if (splineStoreData.FFDCtrls.Count > 2 && splineStoreData.FFDCtrls[0] && splineStoreData.FFDCtrls[1] && splineStoreData.FFDCtrls[2])
            {
                GameObject tangentCtrl = new GameObject(Puppet2D_BoneCreation.GetUniqueBoneName("spline_Tangent"));
                Undo.RegisterCreatedObjectUndo(tangentCtrl, "Created splineTangent");
                splineStoreData.FFDCtrls.Add(tangentCtrl.transform);
                tangentCtrl.transform.parent        = splineStoreData.FFDCtrls[splineStoreData.FFDCtrls.Count - 2].transform;
                tangentCtrl.transform.localPosition = Vector3.zero;
                SpriteRenderer spriteRenderer = splineStoreData.FFDCtrls[splineStoreData.FFDCtrls.Count - 2].GetComponent <SpriteRenderer>();
                string         path           = (Puppet2D_Editor._puppet2DPath + "/Textures/GUI/splineControl.psd");
                Sprite         sprite         = AssetDatabase.LoadAssetAtPath(path, typeof(Sprite)) as Sprite;
                spriteRenderer.sprite = sprite;

                splineStoreData.FFDCtrls[1].position += splineStoreData.FFDCtrls[0].position - splineStoreData.FFDCtrls[2].position;

                splineStoreData.FFDCtrls[splineStoreData.FFDCtrls.Count - 1].position += splineStoreData.FFDCtrls[splineStoreData.FFDCtrls.Count - 2].position - splineStoreData.FFDCtrls[splineStoreData.FFDCtrls.Count - 3].position;

                Transform splineCtrlSwap = splineStoreData.FFDCtrls[0];
                splineStoreData.FFDCtrls[0] = splineStoreData.FFDCtrls[1];
                splineStoreData.FFDCtrls[1] = splineCtrlSwap;

                //GameObject OffsetGroup = new GameObject(Puppet2D_BoneCreation.GetUniqueBoneName("spline_GRP"));
                Puppet2D_SplineControl spline = SplineCreationGroup.AddComponent <Puppet2D_SplineControl>();

                spline._splineCTRLS.AddRange(splineStoreData.FFDCtrls);
                spline.numberBones = Puppet2D_Editor.numberSplineJoints;
                List <GameObject> splineBones = spline.Create();
                foreach (GameObject splineBone in splineBones)
                {
                    splineBone.GetComponent <SpriteRenderer>().sortingLayerName = Puppet2D_Editor._boneSortingLayer;
                }
                foreach (Transform ctrl in splineStoreData.FFDCtrls)
                {
                    if (!ctrl.parent.parent)
                    {
                        ctrl.parent.parent = SplineCreationGroup.transform;
                    }
                }
                GameObject globalCtrl = Puppet2D_CreateControls.CreateGlobalControl();
                globalCtrl.GetComponent <Puppet2D_GlobalControl>()._SplineControls.Add(spline);
                SplineCreationGroup.transform.parent = globalCtrl.transform;

                globalCtrl.GetComponent <Puppet2D_GlobalControl>().InitializeArrays();
                globalCtrl.GetComponent <Puppet2D_GlobalControl>().Run();

                Undo.DestroyObjectImmediate(splineStoreData);

                splineStoreData.FFDCtrls.Clear();


                // parent spline bones
                Puppet2D_HiddenBone[] hiddenBones = GameObject.FindObjectsOfType <Puppet2D_HiddenBone>();

                if (globalCtrl != null)
                {
                    foreach (Puppet2D_HiddenBone hiddenBone in hiddenBones)
                    {
                        if (hiddenBone && hiddenBone.transform.parent && hiddenBone.transform.parent.parent == null)
                        {
                            hiddenBone.transform.parent.parent = globalCtrl.transform;
                        }
                    }
                }
            }
        }