Exemplo n.º 1
0
    protected override void LoadString(string data)
    {
        this.ShowWindow = false;

        string realData = data.Substring("track:".Length);

        string[] values = realData.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

        Spacing   = float.Parse(values[0]);
        CurveType = (PBCircleCurveType)int.Parse(values[1]);
        Deviation = values.Length >= 4 ? float.Parse(values[3]) : 0;

        values = values[2].Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
        PBAnimNode[] blocks  = GameObject.FindObjectsOfType <PBAnimNode>();
        PBCircle[]   circles = new PBCircle[values.Length / 2];
        for (int i = 0; i < circles.Length; i++)
        {
            PBAnimNode block = blocks.FirstOrDefault(b => string.Equals(b.pbID, values[i * 2]));
            if (block == null)
            {
                Debug.LogError(">>>>>履带:找不到齿轮,pbID: " + values[i * 2]);
            }

            if (block.transform.localScale != Vector3.one)
            {
                Debug.LogError(">>>>>履带:齿轮gameobject的localscale不为1");
            }

            float radius = float.Parse(values[i * 2 + 1]);
#if BLOCK_EDITOR
            if (!Mathf.Approximately(block.transform.lossyScale.x, 1))
            {
                Debug.LogError(">>>>>搭建积木块不允许有缩放,请从根节点开始检查,并修正!");
            }
#else
            //app中在创建搭建前,可能会缩放根节点
            radius *= block.transform.lossyScale.x;
#endif
            PBCircle circle = new PBCircle(block.transform, radius);
            circles[i] = circle;
        }

        SetCircles(circles, CurveType);
    }
Exemplo n.º 2
0
    public static bool BuildFromInfo(GameObject obj)
    {
        PBAnimNode pbNode = obj.GetComponent <PBAnimNode>();

        //1. spline
        if (pbNode.animNodeInfo.VersatileInfo.SplineInfo != null)
        {
            Renderer[] renderers = pbNode.GetComponentsInChildren <Renderer>();
            foreach (Renderer renderer in renderers)
            {
                renderer.enabled = true;
            }

            PBSpline.CreateFromString(pbNode.gameObject, pbNode.animNodeInfo.VersatileInfo.SplineInfo);
            return(true);
        }

        return(false);
    }
Exemplo n.º 3
0
    protected override string SaveString(string format)
    {
        StringBuilder sb = new StringBuilder("track:");

        //save the circles
        sb.Append(Spacing.ToString(format) + ";");
        sb.Append((int)CurveType + ";");
        for (int i = 0; i < Circles.Length; i++)
        {
            PBAnimNode pb = Circles[i].transform.GetComponent <PBAnimNode>();
            sb.AppendFormat("{0},{1}", pb.pbID, Circles[i].radius);
            if (i < Circles.Length - 1)
            {
                sb.Append(",");
            }
            else
            {
                sb.Append(";");
            }
        }
        sb.Append(Deviation.ToString(format) + ";");

        return(sb.ToString());
    }