示例#1
0
    private Flanschable CreateTrack(Flanschable prefab, EndFlanschPoint previousTrackElement = null)
    {
        Flanschable nextElement = Instantiate(prefab);

        nextElement.InitializeTrackElement("Track " + counter++);

        if (previousTrackElement != null)
        {
            EndFlanschPoint   source      = previousTrackElement;
            BeginFlanschPoint target      = nextElement.BeginFlanschPoints[0];
            Transform         previousPos = source.transform;
            Transform         nextPos     = target.transform;

            // rotate to fit flansch points
            Vector3 angleDiff = previousPos.eulerAngles - nextPos.eulerAngles;
            nextElement.transform.eulerAngles = angleDiff;

            // translate to fit flansch points
            Vector3 posDiff = previousPos.position - nextPos.position;
            nextElement.transform.position = nextElement.transform.position + posDiff;

            // rotate randomly around flansch point axis
            nextElement.transform.RotateAround(previousPos.position, nextPos.forward, Random.Range(0f, 360f));

            source.ConnectedPoint = target;
            target.ConnectedPoint = source;
        }
        return(nextElement);
    }
示例#2
0
 public void Disconnect()
 {
     if (ConnectedPoint == null)
     {
         return;
     }
     ConnectedPoint.ConnectedPoint = null;
     ConnectedPoint = null;
 }