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); }
public void Disconnect() { if (ConnectedPoint == null) { return; } ConnectedPoint.ConnectedPoint = null; ConnectedPoint = null; }