internal void CreateLinks(RotationHandles rotationHandles, Transform parent, Vector3 currentBoundsExtents) { // create links if (links != null && config.ShowWireFrame) { GameObject link; Vector3 linkDimensions = GetLinkDimensions(currentBoundsExtents); for (int i = 0; i < RotationHandles.NumEdges; ++i) { if (config.WireframeShape == WireframeType.Cubic) { link = GameObject.CreatePrimitive(PrimitiveType.Cube); GameObject.Destroy(link.GetComponent<BoxCollider>()); } else { link = GameObject.CreatePrimitive(PrimitiveType.Cylinder); GameObject.Destroy(link.GetComponent<CapsuleCollider>()); } link.name = "link_" + i.ToString(); CardinalAxisType axisType = rotationHandles.GetAxisType(i); float wireframeEdgeRadius = config.WireframeEdgeRadius; if (axisType == CardinalAxisType.Y) { link.transform.localScale = new Vector3(wireframeEdgeRadius, linkDimensions.y, wireframeEdgeRadius); link.transform.Rotate(new Vector3(0.0f, 90.0f, 0.0f)); } else if (axisType == CardinalAxisType.Z) { link.transform.localScale = new Vector3(wireframeEdgeRadius, linkDimensions.z, wireframeEdgeRadius); link.transform.Rotate(new Vector3(90.0f, 0.0f, 0.0f)); } else//X { link.transform.localScale = new Vector3(wireframeEdgeRadius, linkDimensions.x, wireframeEdgeRadius); link.transform.Rotate(new Vector3(0.0f, 0.0f, 90.0f)); } link.transform.position = rotationHandles.GetEdgeCenter(i); link.transform.parent = parent; Renderer linkRenderer = link.GetComponent<Renderer>(); if (config.WireframeMaterial != null) { linkRenderer.material = config.WireframeMaterial; } links.Add(new Link(link.transform, axisType)); } } }
private Vector3 GetRotationAxis(Transform handle) { CardinalAxisType axisType = rotationHandles.GetAxisType(handle); if (axisType == CardinalAxisType.X) { return(rigRoot.transform.right); } else if (axisType == CardinalAxisType.Y) { return(rigRoot.transform.up); } else { return(rigRoot.transform.forward); } }