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(); } }
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); } }