예제 #1
0
    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;
            }
        }
    }
예제 #2
0
    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
    }