private void PickAndSnapPoints() { if (highlightPoints.Count > 0 && destlightPoints.Count > 0) { Transform targetPP = null; Transform originPP = null; float minDis = 100; foreach (var item in highlightPoints) { var originItem = item.refTrans; var refPointType = originItem.GetComponent <RefDot>().refPointType; foreach (var targetItem in destlightPoints) { var targetPointType = targetItem.GetComponent <RefDot>().refPointType; if (RefPointMgr.EnablePair(refPointType, targetPointType)) { var dis = Vector3.Distance(originItem.position, targetItem.position); if (dis < minDis) { minDis = dis; targetPP = targetItem; originPP = originItem; } } } } if (targetPP != null) { Undo.RecordObject(originPP.parent.transform, "Reset refOrigin"); Vector3 originOffset = originPP.transform.position - originPP.parent.transform.position; originPP.parent.transform.position = targetPP.transform.position - originOffset; PBTexture texOrigin = originPP.parent.GetComponent <PBTexture>(); PBTexture texTarget = targetPP.parent.GetComponent <PBTexture>(); if (texOrigin != null) { texOrigin.transform.SetParent(targetPP.parent.transform, true); } else if (texTarget != null) { texTarget.transform.SetParent(originPP.parent.transform, true); } originRefTrans = originPP; } } }
public void ShowRefPoints() { #if UNITY_EDITOR foreach (Transform child in transform) { RefPointType refType; if (!GetRefPointType(child.name, out refType)) { continue; } child.localScale = Vector3.one; GameObject refpointObj = null; if (child.childCount == 0) { GameObject t = RefPointMgr.GetRefPointGameObject(refType); t.transform.SetParent(child, false); t.transform.localPosition = new Vector3(0, 0.102f, 0); t.transform.localRotation = Quaternion.identity; t.transform.localScale = Vector3.one; RefPoint refPoint = t.AddComponent <RefPoint>(); refPoint.blockAlign = this; refPoint.refPointType = refType; refpointObj = t; } else { refpointObj = child.GetChild(0).gameObject; } refpointObj.SetActive(RefPointMgr.IsActive(refType)); } #endif }