Ejemplo n.º 1
0
    public static PBSpline CreateFromString(GameObject blockObj, string data)
    {
        if (string.IsNullOrEmpty(data) || blockObj.GetComponent <PBBlock>() == null)
        {
            return(null);
        }

        PBSpline spline = null;

        if (data.StartsWith("wire"))
        {
            spline = PBSplineWire.CreateNew(blockObj);
        }
        if (data.StartsWith("tube"))
        {
            spline = PBSplineTube.CreateNew(blockObj);
        }
        else if (data.StartsWith("track"))
        {
            spline = PBSplineTrack.CreateNew(blockObj);
        }

        if (spline != null)
        {
            spline.LoadString(data);
        }
        return(spline);
    }
Ejemplo n.º 2
0
 public static void SwitchBlock(GameObject oldBlockObj, GameObject newBlockObj)
 {
     CreateFromString(newBlockObj, SaveToString(oldBlockObj));
     if (oldBlockObj.name.Contains("gears"))
     {
         PBSplineTrack.SwitchCircle(oldBlockObj, newBlockObj);
     }
 }
    public void SetSplineTrack(PBSplineTrack track)
    {
        splineTrack = track;
        curveType   = track.CurveType;

        circleObjects = new List <GameObject>();
        if (track.Circles != null && track.Circles.Length > 0)
        {
            foreach (PBCircle circle in track.Circles)
            {
                circleObjects.Add(circle.transform.gameObject);
            }
        }
    }
Ejemplo n.º 4
0
    public static PBSpline CreateNew(GameObject blockObj, string blockType)
    {
        switch (blockType)
        {
        case "wire":
            return(PBSplineWire.CreateNew(blockObj));

        case "tube":
            return(PBSplineTube.CreateNew(blockObj));

        case "track":
            return(PBSplineTrack.CreateNew(blockObj));
        }
        return(null);
    }
Ejemplo n.º 5
0
    public static PBSplineTrack CreateNew(GameObject blockObj)
    {
        PBSplineTrack track = blockObj.GetComponent <PBSplineTrack>();

        if (track == null)
        {
            track = blockObj.AddComponent <PBSplineTrack>();
        }

        track.Prefab = blockObj.transform.Find("track").gameObject;

        #if UNITY_EDITOR
        track.ShowWindow = true;
        #endif

        return(track);
    }
Ejemplo n.º 6
0
 private void OnEnable()
 {
     splineTrack = target as PBSplineTrack;
 }
Ejemplo n.º 7
0
    /// <summary>
    /// 获取零件个数,默认1;履带特殊:由小零件组成一个完整的履带,需要计算小零件的个数
    /// </summary>
    public static int GetBlockCount(GameObject blockObj)
    {
        PBSplineTrack track = blockObj.GetComponent <PBSplineTrack>();

        return(track != null ? track.ChildCount : 1);
    }