Ejemplo 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>().Run();

            Undo.DestroyObjectImmediate(splineStoreData);

            splineStoreData.FFDCtrls.Clear();
        }
    }
Ejemplo n.º 2
0
    public void TraverseHierarchy(Transform root)
    {
        foreach (Transform child in root)
        {
            GameObject     Go             = child.gameObject;
            SpriteRenderer spriteRenderer = Go.transform.GetComponent <SpriteRenderer>();
            if (spriteRenderer && spriteRenderer.sprite)
            {
                if (spriteRenderer.sprite.name.Contains("Control"))
                {
                    _Controls.Add(spriteRenderer);
                }
                else if (spriteRenderer.sprite.name.Contains("ffd"))
                {
                    _FFDControls.Add(spriteRenderer);
                }
                else if (spriteRenderer.sprite.name.Contains("Bone"))
                {
                    _Bones.Add(spriteRenderer);
                }
            }
            Puppet2D_ParentControl newParentCtrl = Go.transform.GetComponent <Puppet2D_ParentControl>();

            if (newParentCtrl)
            {
                _ParentControls.Add(newParentCtrl);
            }
            Puppet2D_IKHandle newIKCtrl = Go.transform.GetComponent <Puppet2D_IKHandle>();
            if (newIKCtrl)
            {
                _Ikhandles.Add(newIKCtrl);
            }

            Puppet2D_FFDLineDisplay ffdCtrl = Go.transform.GetComponent <Puppet2D_FFDLineDisplay>();
            if (ffdCtrl)
            {
                _ffdControls.Add(ffdCtrl);
            }

            Puppet2D_SplineControl splineCtrl = Go.transform.GetComponent <Puppet2D_SplineControl>();
            if (splineCtrl)
            {
                _SplineControls.Add(splineCtrl);
            }

            TraverseHierarchy(child);
        }
    }