static void MakeHead(Transform _headPoint, Transform _chestPoint, Vector3 _headTop) { float headScale = Vector3.Distance(_chestPoint.position, _headPoint.position) * .01f; Selection.activeObject = GameObject.Find("Spine_05"); Puppet2D_BoneCreation.CreateBoneTool(); Puppet2D_BoneCreation.BoneCreationMode(_headPoint.position); Puppet2D_BoneCreation.BoneCreationMode(_headTop); Puppet2D_BoneCreation.BoneFinishCreation(); GameObject head = GameObject.Find("bone_1"); head.name = "Head"; Selection.activeGameObject = head; GameObject headEnd = GameObject.Find("bone_2"); headEnd.name = "HeadEnd"; Puppet2D_CreateControls.CreateOrientControl(); GameObject headControl = GameObject.Find("Head_CTRL"); headControl.GetComponent <Puppet2D_ParentControl>().ConstrianedPosition = true; GameObject headControlParent = GameObject.Find("Head_CTRL_GRP"); headControlParent.transform.localScale = Vector3.one * headScale * 2f; //GameObject.Find ("bone_22").name = ("a"); }
public static void BoneFinishCreation() { Puppet2D_Editor.BoneCreation = false; EditorPrefs.SetBool("Puppet2D_BoneCreation", false); Puppet2D_Bone[] Bones = GameObject.FindObjectsOfType <Puppet2D_Bone>(); /*foreach (Puppet2D_Bone bone in Bones) * { * * GameObject globalCtrlNew = Puppet2D_CreateControls.CreateGlobalControl(); * * bone.transform.parent = globalCtrlNew.transform; * * * }*/ GameObject globalCtrl = Puppet2D_CreateControls.CreateGlobalControl(); if (globalCtrl != null) { foreach (Puppet2D_Bone Bone in Bones) { if (Bone && Bone.transform.parent == null) { Bone.transform.parent = globalCtrl.transform; } } } }
public static void BoneFinishCreation() { Puppet2D_Editor.BoneCreation = false; EditorPrefs.SetBool("Puppet2D_BoneCreation", false); Puppet2D_HiddenBone[] hiddenBones = GameObject.FindObjectsOfType <Puppet2D_HiddenBone>(); SpriteRenderer[] sprites = GameObject.FindObjectsOfType <SpriteRenderer>(); foreach (SpriteRenderer spr in sprites) { if (spr.sprite != null && spr.sprite.name == "BoneNoJoint" && spr.transform.parent == null) { GameObject globalCtrlNew = Puppet2D_CreateControls.CreateGlobalControl(); spr.transform.parent = globalCtrlNew.transform; } } GameObject globalCtrl = Puppet2D_CreateControls.CreateGlobalControl(); 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; } } } }
static void MakeLimb(Transform _thighLPoint, Transform _footLPoint, Transform _kneePoint, Vector3 FootEnd, GameObject parentTo, string controlName, string controlName3, string controlName2, string controlName1, bool flip = false) { Selection.activeObject = parentTo; float limbScale = Vector3.Distance(_footLPoint.position, _thighLPoint.position) * .01f; Vector3 scaledFootPos = (_footLPoint.position - _thighLPoint.position) / limbScale; scaledFootPos += _thighLPoint.position; Vector3 scaledKneePos = (_kneePoint.position - _thighLPoint.position) / limbScale; scaledKneePos += _thighLPoint.position; Puppet2D_BoneCreation.CreateBoneTool(); Puppet2D_BoneCreation.BoneCreationMode(_thighLPoint.position); Puppet2D_BoneCreation.BoneCreationMode(scaledKneePos); GameObject endLimbGO = Puppet2D_BoneCreation.BoneCreationMode(scaledFootPos); Vector3 scaledFinalEndLimbGO = (FootEnd - _thighLPoint.position) / limbScale; scaledFinalEndLimbGO += _thighLPoint.position; GameObject finalEndLimbGO = Puppet2D_BoneCreation.BoneCreationMode(scaledFinalEndLimbGO); finalEndLimbGO.name = (controlName1 + "End"); Puppet2D_BoneCreation.BoneFinishCreation(); Selection.activeGameObject = endLimbGO; endLimbGO.name = controlName1; Puppet2D_CreateControls.IKCreateTool(true); GameObject limbControlParent = GameObject.Find(controlName1 + "_CTRL_GRP"); Transform elbow = endLimbGO.transform.parent; Transform shoulderBone = endLimbGO.transform.parent.parent; elbow.name = (controlName2); shoulderBone.name = (controlName3); Transform limbParent = limbControlParent.transform.parent; limbControlParent.transform.parent = shoulderBone; shoulderBone.localScale = shoulderBone.localScale * limbScale; limbControlParent.transform.parent = limbParent; GameObject.Find(controlName1 + "_CTRL").GetComponent <Puppet2D_IKHandle>().Flip = flip; }
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; } } } } }
public static void FFDFinishCreation() { if (ffdStoreData == null) { return; } Puppet2D_Editor.FFDCreation = false; CloseFFDPath(); Texture spriteTexture = null; //GameObject FFDControlsGrp = new GameObject(Puppet2D_BoneCreation.GetUniqueBoneName("FFD_Ctrls_GRP")); if (Puppet2D_Editor.FFDGameObject && Puppet2D_Editor.FFDGameObject.GetComponent <SpriteRenderer>() && Puppet2D_Editor.FFDGameObject.GetComponent <SpriteRenderer>().sprite) { spriteTexture = Puppet2D_Editor.FFDGameObject.GetComponent <SpriteRenderer>().sprite.texture; foreach (Transform FFDCtrl in ffdStoreData.FFDCtrls) { FFDCtrl.transform.position = Puppet2D_Editor.FFDGameObject.transform.InverseTransformPoint(FFDCtrl.transform.position); } FFDControlsGrp.transform.position = Puppet2D_Editor.FFDGameObject.transform.position; FFDControlsGrp.transform.rotation = Puppet2D_Editor.FFDGameObject.transform.rotation; FFDControlsGrp.transform.localScale = Puppet2D_Editor.FFDGameObject.transform.localScale; //Puppet2D_Editor.FFDGameObject.transform.position = Vector3.zero; //Puppet2D_Editor.FFDGameObject.transform.rotation = Quaternion.identity; //Puppet2D_Editor.FFDGameObject.transform.localScale = Vector3.one; } if (ffdStoreData.FFDCtrls.Count < 3) { //Undo.DestroyObjectImmediate(ffdStoreData); return; } Puppet2D_CreatePolygonFromSprite polyFromSprite = ScriptableObject.CreateInstance("Puppet2D_CreatePolygonFromSprite") as Puppet2D_CreatePolygonFromSprite; List <Vector3> verts = new List <Vector3>(); for (int i = 0; i < ffdStoreData.FFDCtrls.Count(); i++) { if (ffdStoreData.FFDCtrls[i]) { verts.Add(new Vector3(ffdStoreData.FFDCtrls[i].position.x, ffdStoreData.FFDCtrls[i].position.y, 0)); } else { // Debug.LogWarning("A FFD control point has been removed, no mesh created"); // Undo.DestroyObjectImmediate(ffdStoreData); // return; } } GameObject newMesh; if (ffdStoreData.FFDPathNumber.Count > 0 && verts.Count > 2) { if (Puppet2D_Editor.FFDGameObject == null) { Puppet2D_Editor.FFDGameObject = new GameObject(); Undo.RegisterCreatedObjectUndo(Puppet2D_Editor.FFDGameObject, "newGameObject"); } Puppet2D_Editor._numberBonesToSkinToIndex = 0; string sortingLayer = ""; int sortingOrder = 0; if (Puppet2D_Editor.FFDGameObject.GetComponent <Renderer>()) { sortingLayer = Puppet2D_Editor.FFDGameObject.GetComponent <Renderer>().sortingLayerName; sortingOrder = Puppet2D_Editor.FFDGameObject.GetComponent <Renderer>().sortingOrder; } newMesh = polyFromSprite.MakeFromVerts(true, verts.ToArray(), ffdStoreData.FFDPathNumber, Puppet2D_Editor.FFDGameObject); if (Puppet2D_Editor.FFDGameObject.GetComponent <Renderer>()) { newMesh.GetComponent <Renderer>().sortingLayerName = sortingLayer; newMesh.GetComponent <Renderer>().sortingOrder = sortingOrder; } Puppet2D_Editor._numberBonesToSkinToIndex = 1; } else { //Undo.DestroyObjectImmediate(ffdStoreData); return; } Undo.DestroyObjectImmediate(polyFromSprite); if (Puppet2D_Editor.FFDGameObject) { if (spriteTexture != null) { newMesh.GetComponent <Renderer>().sharedMaterial.mainTexture = spriteTexture; } else { newMesh.GetComponent <Renderer>().sharedMaterial = new Material(Shader.Find("Unlit/Texture")); } newMesh.name = Puppet2D_Editor.FFDGameObject.name; ffdStoreData.FFDCtrls.Add(newMesh.transform); Undo.DestroyObjectImmediate(Puppet2D_Editor.FFDGameObject); } GameObject globalCtrl = Puppet2D_CreateControls.CreateGlobalControl(); Undo.SetTransformParent(FFDControlsGrp.transform, globalCtrl.transform, "parentToGlobal"); Undo.SetTransformParent(newMesh.transform, globalCtrl.transform, "parentToGlobal"); List <Object> newObjs = new List <Object>(); foreach (Transform tr in ffdStoreData.FFDCtrls) { if (tr) { newObjs.Add(tr.gameObject); } } Selection.objects = newObjs.ToArray(); Puppet2D_Editor._numberBonesToSkinToIndex = 1; //Undo.RecordObjects (newObjs.ToArray(), "recordingStuff"); //Undo.RegisterCompleteObjectUndo (newObjs.ToArray(), "recordingStuff"); Puppet2D_Skinning.BindSmoothSkin(1); for (int i = 0; i < ffdStoreData.FFDCtrls.Count - 1; i++) { //Debug.Log(ffdStoreData.FFDCtrls[i]); if (ffdStoreData.FFDCtrls[i]) { Puppet2D_FFDLineDisplay ffdLine = ffdStoreData.FFDCtrls[i].GetComponent <Puppet2D_FFDLineDisplay>(); ffdLine.outputSkinnedMesh = newMesh.GetComponent <SkinnedMeshRenderer>(); for (int j = 0; j < ffdLine.outputSkinnedMesh.sharedMesh.vertices.Length; j++) { Vector3 vert = ffdLine.outputSkinnedMesh.sharedMesh.vertices[j]; if (Vector3.Distance(vert, ffdStoreData.FFDCtrls[i].transform.position) < .001f) { ffdStoreData.FFDCtrls[i].GetComponent <Puppet2D_FFDLineDisplay>().vertNumber = j; } } Undo.SetTransformParent(ffdStoreData.FFDCtrls[i].parent.transform, FFDControlsGrp.transform, "parentFFDControls"); ffdStoreData.FFDCtrls[i].transform.localPosition = Vector3.zero; } } FFDControlsGrp.transform.position = new Vector3(FFDControlsGrp.transform.position.x, FFDControlsGrp.transform.position.y, ffdStoreData.OriginalSpritePosition.z); Selection.activeGameObject = ffdStoreData.FFDCtrls[ffdStoreData.FFDCtrls.Count - 1].gameObject; ffdStoreData.FFDCtrls.RemoveAt(ffdStoreData.FFDCtrls.Count - 1); Undo.RegisterCompleteObjectUndo(ffdStoreData, "changinEditable"); ffdStoreData.Editable = false; // Undo.DestroyObjectImmediate(ffdStoreData); if (globalCtrl.GetComponent <Puppet2D_GlobalControl>().AutoRefresh) { globalCtrl.GetComponent <Puppet2D_GlobalControl>().Init(); } }